Spring Cloud Eureka 注册与发现操作步骤详解
在搭建SpringCloudEureka环境前先要了解整个架构的组成,常用的基础模式如下图:
服务提供者:将springboot服务编写好以后,通过配置注册中心地址方式注册,提供给消费者使用。
注册中心:服务的中间桥梁,服务提供者将服务注册。服务消费者可以通过注册信息调用需要使用的服务。
服务消费者:通过规定的调用方式,读取注册中心的注册信息,调用相应的服务。
根据后续的服务复杂度进化以后,可以看到服务提供者也可以是服务消费者,服务消费者也可以是服务提供者。根据不同的业务情况是可以互相调用的。
下面来搭建一个基础的eureka。环境还是使用的之前的spring官方下载的。
内容写的比较详细,可以跟这一步步操作。
一、注册中心
以下是几个需要修改和添加的地方,后面会有完整的pom.xml
org.springframework.boot spring-boot-starter-parent 2.1.3.RELEASE org.springframework.cloud spring-cloud-dependencies Finchley.SR2 pom import org.springframework.cloud spring-cloud-starter-netflix-eureka-server org.springframework.boot spring-boot-starter-actuator
SpringCloud | SpringBoot |
---|---|
Angel版本 | 兼容SpringBoot1.2.x |
Brixton版本 | 兼容SpringBoot1.3.x,也兼容SpringBoot1.4.x |
Camden版本 | 兼容SpringBoot1.4.x,也兼容SpringBoot1.5.x |
Dalston版本、Edgware版本 | 兼容SpringBoot1.5.x,不兼容SpringBoot2.0.x |
Finchley版本 | 兼容SpringBoot2.0.x,不兼容SpringBoot1.5.x |
Greenwich版本 | 兼容SpringBoot2.1.x |
这里采用Finchley.SR2版本springboot版本改成2.1.3.RELEASE
完整的pom.xml
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.3.RELEASE com.example eureka1 0.0.1-SNAPSHOT eureka1 DemoprojectforSpringBoot 1.8 org.springframework.cloud spring-cloud-dependencies Finchley.SR2 pom import org.springframework.boot spring-boot-starter org.springframework.cloud spring-cloud-starter-netflix-eureka-server org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine org.springframework.boot spring-boot-maven-plugin
packagecom.example.demo; importorg.springframework.boot.SpringApplication; importorg.springframework.boot.autoconfigure.SpringBootApplication; importorg.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @EnableEurekaServer @SpringBootApplication publicclassEureka1Application{ publicstaticvoidmain(String[]args){ SpringApplication.run(Eureka1Application.class,args); } }
然后在代码文件中添加@EnableEurekaServer注解
修改application.yml文件
server: port:3000#端口 eureka: instance: hostname:eureka-center appname:注册中心 client: registerWithEureka:false#单点的时候设置为false禁止注册自身 fetchRegistry:false serviceUrl: defaultZone:http://localhost:3000/eureka server: enableSelfPreservation:false evictionIntervalTimerInMs:4000
启动服务
浏览器输入http://127.0.0.1:3000
证明注册中心搭建成功了
二、服务提供者
前面的步骤一样
ProviderController是新建的一个服务代码
org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-netflix-eureka-client
不同的地方有加了一个spring-boot-starter-web和spring-cloud-starter-netflix-eureka-client客户端
完整的pom.xml
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.3.RELEASE com.example eurekaClient1 0.0.1-SNAPSHOT eurekaClient1 DemoprojectforSpringBoot 1.8 org.springframework.cloud spring-cloud-dependencies Finchley.SR2 pom import org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-maven-plugin
EurekaClient1Application
packagecom.example.demo; importorg.springframework.boot.SpringApplication; importorg.springframework.boot.autoconfigure.SpringBootApplication; importorg.springframework.cloud.netflix.eureka.EnableEurekaClient; @EnableEurekaClient @SpringBootApplication publicclassEurekaClient1Application{ publicstaticvoidmain(String[]args){ SpringApplication.run(EurekaClient1Application.class,args); } }
ProviderController
packagecom.example.demo; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RestController; @RestController publicclassProviderController{ @RequestMapping(value="/hello") publicStringhello(){ return"hellospringcloud!"; } @RequestMapping(value="/nice") publicStringnice(){ return"nicetomeetyou!"; } }
application.yml
server: port:3001 eureka: instance: preferIpAddress:true client: serviceUrl: defaultZone:http://localhost:3000/eureka##注册到eureka spring: application: name:single-provider##应用程序名称,后面会在消费者中用到
http://127.0.0.1:3001/hello
http://127.0.0.1:3000/
证明服务已经注册成功
三、服务消费者
前面还是同上
org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-openfeign org.springframework.cloud spring-cloud-starter-netflix-eureka-client
完整pom.xml
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.3.RELEASE com.example eurekaClient1 0.0.1-SNAPSHOT eurekaClient1 DemoprojectforSpringBoot 1.8 org.springframework.cloud spring-cloud-dependencies Finchley.SR2 pom import org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-openfeign org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-maven-plugin
EurekaClient2Application
packagecom.example.demo; importorg.springframework.boot.SpringApplication; importorg.springframework.boot.autoconfigure.SpringBootApplication; importorg.springframework.cloud.client.loadbalancer.LoadBalanced; importorg.springframework.cloud.netflix.eureka.EnableEurekaClient; importorg.springframework.cloud.openfeign.EnableFeignClients; importorg.springframework.context.annotation.Bean; importorg.springframework.web.client.RestTemplate; @EnableEurekaClient @EnableFeignClients @SpringBootApplication publicclassEurekaClient2Application{ /** *注入RestTemplate *并用@LoadBalanced注解,用负载均衡策略请求服务提供者 *这是SpringRibbon的提供的能力 *@return */ @LoadBalanced @Bean publicRestTemplaterestTemplate(){ returnnewRestTemplate();//用于调用服务对象 } publicstaticvoidmain(String[]args){ SpringApplication.run(EurekaClient2Application.class,args); } }
ConsumerController
packagecom.example.demo; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RestController; importorg.springframework.web.client.RestTemplate; @RestController publicclassConsumerController{ @Autowired privateRestTemplaterestTemplate; privatestaticfinalStringapplicationName="single-provider";//服务注册名 @RequestMapping(value="commonRequest") publicObjectcommonRequest(){ Stringurl="http://"+applicationName+"/hello"; Strings=restTemplate.getForObject(url,String.class);//Ribbon方式调用服务 returns; } }
application.yml
server: port:3002 eureka: client: serviceUrl: defaultZone:http://127.0.0.1:3000/eureka##注册到eureka instance: preferIpAddress:true spring: application: name:single-customer
启动服务
http://127.0.0.1:3002/commonRequest
返回服务提供者的hello方法参数。
整个最简单的过程就完成了,需要更好的使用springcloud后续需要了解分布式、负载均衡、熔断等概念。在后续章节将一步步的拆分。
到此这篇关于SpringCloudEureka注册与发现操作步骤详解的文章就介绍到这了,更多相关SpringCloudEureka注册内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。