200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > SpringCloud Eureka 服务注册 微服务之间的项目调用

SpringCloud Eureka 服务注册 微服务之间的项目调用

时间:2023-12-23 11:45:24

相关推荐

SpringCloud Eureka 服务注册 微服务之间的项目调用

文章目录

前言一、Eureka是什么?二、项目实现步骤1.项目外壳的搭建2.Eureka注册中心服务搭建3.Provider(提供者)服务搭建4.Consumer(消费者)服务搭建总结

前言

本篇blog将进行SpringCloud的Eureka注册中心的搭建与简单使用的介绍,主要分为以下几个方面展开介绍:

1.项目整体架构;

2.每个服务的搭建过程与详细解释;

3.Eureka服务之间的简单调用;


一、Eureka是什么?

Eureka为SpringCloud的注册与配置中心,与Zookeeper和nacos的作用大致相同,在Eureka里面,可以进行项目中服务的注册与监听,实时把控项目各个服务的运转情况;另外Eureka是AP原则的(著名的CAP原则),A为服务可用性,P为服务对网络分区故障的容错性。

二、项目实现步骤

1.项目外壳的搭建

项目外壳采用的是maven项目搭建的,创建好maven项目之后,删除maven项目的src等无用的部分,只保留空壳作为各个服务的整体外壳。

其效果图下图所示:

2.Eureka注册中心服务搭建

Eureka注册中心搭建,仍然是建立在maven项目之上的,但是后来经过手动的修改,让其成为了SpringBoot项目;

其项目结构如下图所示:

其中启动类EurekaApplication的代码为:

@SpringBootApplication //SpringBoot启动类核心注解@EnableEurekaServer //Eureka服务端@EnableDiscoveryClient //服务发现public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class,args);}}

其对应的properties配置文件如下:

# 出现错误时,直接抛出异常spring.mvc.throw-exception-if-no-handler-found=true# 不要为我们工程中的资源文件建立映射spring.resources.add-mappings=true#获取端口号#server.port=${server.port}spring.application.name=eureka-serverserver.port=8761#由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己eureka.client.register-with-eureka=false# 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为falseeureka.client.fetch-registry=false#关闭自我保护模式eureka.server.enable-self-preservation=false#扫描失效服务的间隔时间#eureka.server.eviction-interval-timer-in-ms=1000eureka.instance.hostname=localhost

经过上面的配置,正常情况下已经可以正常启动,正常启动页面如下所示:

可以正常显示端口号(8761端口为Eureka专用端口,不可更改,否则报错)即表明加载成功,此时在本地浏览器访问:http://localhost:8761/,可以看到Eureka的页面,至此,恭喜你完成了注册中心的配置。如下图所示:

3.Provider(提供者)服务搭建

有了注册中心之后,我们开始创建提供者,并在Eureka注册中心中进行注册,在本地先进行测试接口是否可用:

提供者仍然选用maven项目进行搭建,后面仍然是经过修改使其成为SpriingBoot项目,其项目结构下图所示:

其中controller为测试接口,其接口的功能返回一个字符串Hello World,其主要目的是测试项目是否可以正常运转。Hello的内容为:

@RestController //@Response和@Controller注解的合体注解public class Hello {@RequestMapping("/user/hello")public String SayHello(){return "Hello World!";}}

在服务的启动类注解中,要特别注意@EnableEurekaClient ,这个表示的服务的客户端,和Eureka中的不一样。启动类代码如下:

@SpringBootApplication@EnableEurekaClient //服务客户端public class ProvideeApplication {public static void main(String[] args) {SpringApplication.run(ProvideeApplication.class,args);}}

其配置文件如下:

#服务名spring.application.name=eureka-client-user-service#端口号server.port=8081#注册中心URLeureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/# 采用IP注册eureka.instance.preferIpAddress=true# 定义实例ID格式eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}

启动Prodiver之后,可以在Eureka注册中心页面上看到该服务的注册信息,根据你配置的端口号找到具体的服务。如下图所示:

测试Provider的测试接口是否可用,根据你设置的接口名称,在浏览器中进行访问即可,我的地址是:http://localhost:8081/user/hello,正常访问页面如下所示:

至此,恭喜你完成Provider(提供者)服务的配置。

4.Consumer(消费者)服务搭建

有了Provider之后,接下来我们创建消费者Consumer,去调用Provider里面的接口,实现简单的服务之间的相互调用。

Consumer的结构如下图所示:

从上到下文件依次为:

1.BeanConfiguration类为RestTemplate的实例化类;

2.ArticleController类为正常的接口调用类;

3.ServiceApplication类为该服务的启动类;

4.properties类为该服务的配置类。

BeanConfiguration类代码如下:

@Configurationpublic class BeanConfiguration {@Bean@LoadBalanced //会自动构造LoadBalancerClient接口的实现类并注册到Spring容器中public RestTemplate getRestTemplate(){return new RestTemplate();}}

ArticleController类代码如下:

@RestControllerpublic class ArticleController {@Autowiredprivate RestTemplate restTemplate;@GetMapping("/sayHello")public String SayHello(){//这里的地址填写Provider的服务名与接口地址(即被调用服务的服务名和要访问的接口地址)return restTemplate.getForObject("http://eureka-client-user-service/user/hello",String.class);}}

ServiceApplication启动类代码如下:

@SpringBootApplication //启动类@EnableEurekaClient //服务客户端public class ServiceApplication {public static void main(String[] args) {SpringApplication.run(ServiceApplication.class,args);}}

properties配置类代码如下:

#服务名spring.application.name=eureka-client-article-service#服务端口server.port=8082#注册中心URLeureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/# 采用IP注册eureka.instance.preferIpAddress=true# 定义实例ID格式eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}

启动Consumer消费者的启动类之后,可以在Eureka注册中心看到该服务已经被注册了。如下:

接下来我们通过访问本服务的地址来调用Provider提供者中的接口,即实现服务之间的调用,我的地址为:http://localhost:8082/sayHello,可以看到可以正常访问Provider服务的接口。

至此,恭喜你已经实现了服务之间的简单调用。


总结

以上,对SpringCloud的Eureka进行了简单的介绍,以及项目的搭建与简单使用,后面的话会持续更新,因本人也在学习中,如有不足错误之处,恳请大佬指正。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。