干货分享微服务spring-cloud(3.服务治理eureka)
2018-02-13 15:02
991 查看
Spring cloud eureka是spring cloud netflix微服务套件中的一部分,它基于Netflix eureka增加了二次封装,主要负责完成微服务架构中的服务治理功能
在启动类Server1Application上添加@EnableEurekaServer注解启动一个服务注册中心
启动Server1Application的main方法,打开浏览器访问http://localhost:1111/成功。但是启动时报错了,报错原因是服务向注册中心注册自己失败。
报错信息很明显,不能识别peer1,所以我们在host文件中模拟域名映射。笔者使用的是windows系统,所以C:\Windows\System32\drivers\etc\hosts文件添加127.0.0.1 peer1,再次启动将不会报错
使用浏览器访问http://localhost:1111/或http://peer1:1111/都会成功。Instances currently registered with Eureka下的Application注册了一个DEMO-SPRINGCLOUD-SERVER服务。
在默认配置下,eureka.client.fetch-registry=true, 作为客户端定期获取服务列表,更新客户端的服务清单,以保证服务访问的正确性。作为注册中心一般我们会置为false,因为注册中心不需要更新服务清单。eureka.client.register-with-eureka=true该服务会向注册中心注册它自己,以便其他应用可以发现它。如果我们需要禁用它的客服端行为,这种场景只适合单机注册中心,只需在application.properties中增加如下配置
再次浏览器访问http://localhost:1111/将不会注册自己为服务端,No instances available
demo-springcloud-server1配置文件application.properties向eureka.client.service-url.defaultZone=http://peer2:1112/eureka注册中心2同步服务列表
demo-springcloud-server2配置文件application.properties向eureka.client.service-url.defaultZone=http://peer1:1111/eureka注册中心1同步服务列表
配置文件application.properties,为了验证注册中心服务列表是否同步,这里我们只向注册中心1注册服务eureka.client.service-url.defaultZone=http://peer1:1111/eureka
这里可能对spring不熟悉的人会觉得为什么返回client1而不是页面,因为这里的用到了之前讲到的组合注解,根本原因在于@RestController注解组合了@Controller和@ResponseBody
用浏览分别访问http://peer1:1111/和http://peer2:1112/都可以看到Instances currently registered with Eureka注册服务提供者DEMO-SPRINGCLOUD-CLIENT,证明服务列表已经同步,但实际使用中我们不推荐这样使用,我们一般会同时向注册中心1、注册中心2同时注册服务,而不是单一只向注册中心1注册服务
3.1. 单机注册中心
创建一个spring boot基础工程命名为demo-springcloud-server1,添加关键依赖在启动类Server1Application上添加@EnableEurekaServer注解启动一个服务注册中心
application.properties配置,其中服务名为demo-springcloud-server
启动Server1Application的main方法,打开浏览器访问http://localhost:1111/成功。但是启动时报错了,报错原因是服务向注册中心注册自己失败。
报错信息很明显,不能识别peer1,所以我们在host文件中模拟域名映射。笔者使用的是windows系统,所以C:\Windows\System32\drivers\etc\hosts文件添加127.0.0.1 peer1,再次启动将不会报错
使用浏览器访问http://localhost:1111/或http://peer1:1111/都会成功。Instances currently registered with Eureka下的Application注册了一个DEMO-SPRINGCLOUD-SERVER服务。
在默认配置下,eureka.client.fetch-registry=true, 作为客户端定期获取服务列表,更新客户端的服务清单,以保证服务访问的正确性。作为注册中心一般我们会置为false,因为注册中心不需要更新服务清单。eureka.client.register-with-eureka=true该服务会向注册中心注册它自己,以便其他应用可以发现它。如果我们需要禁用它的客服端行为,这种场景只适合单机注册中心,只需在application.properties中增加如下配置
再次浏览器访问http://localhost:1111/将不会注册自己为服务端,No instances available
3.2. 注册中心HA
Eureka Server的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样可以形成一组相互注册的服务注册中心,以实现服务列表的互相同步,达到高可用的目的。复制单机注册中心并命名为demo-springcloud-server2,启动类命名为Server2Application,同理hosts文件需要配置peer2, eureka.client.register-with-eureka必须设置为true向注册中心注册自己,以便注册中心之间同步服务列表,注册中心1和2主要区别在于配置文件。demo-springcloud-server1配置文件application.properties向eureka.client.service-url.defaultZone=http://peer2:1112/eureka注册中心2同步服务列表
demo-springcloud-server2配置文件application.properties向eureka.client.service-url.defaultZone=http://peer1:1111/eureka注册中心1同步服务列表
3.3. 服务提供者
有了注册中心,下面新建spring boot项目并命名为demo-springcloud-client1,启动类命名为Client1Application,添加注解@EnableDiscoveryClient开启服务提供者Eureka对DiscoveryClient的实现自动配置项目关键依赖,spring-boot-starter-web表示是web应用
配置文件application.properties,为了验证注册中心服务列表是否同步,这里我们只向注册中心1注册服务eureka.client.service-url.defaultZone=http://peer1:1111/eureka
既然是服务提供者,我们这里演示新建一个YhqController提供rest的hello服务
启动服务中心1,服务中心2,启动服务提供者demo-springcloud-client1
用浏览器访问http://localhost:2221/hello看到hello服务访问正常
这里可能对spring不熟悉的人会觉得为什么返回client1而不是页面,因为这里的用到了之前讲到的组合注解,根本原因在于@RestController注解组合了@Controller和@ResponseBody
用浏览分别访问http://peer1:1111/和http://peer2:1112/都可以看到Instances currently registered with Eureka注册服务提供者DEMO-SPRINGCLOUD-CLIENT,证明服务列表已经同步,但实际使用中我们不推荐这样使用,我们一般会同时向注册中心1、注册中心2同时注册服务,而不是单一只向注册中心1注册服务
相关文章推荐
- 干货分享微服务spring-cloud(8.服务治理和配置中心spring-cloud-zk)
- springcloud微服务二:Eureka服务治理之服务注册中心
- 干货分享微服务spring-cloud(4.负载均衡ribbon与熔断器hystrix)
- 干货分享微服务spring-cloud(5.声明式服务调用feign)
- Spring Cloud Learning | 第一篇:服务治理(Eureka)
- Spring Cloud Eureka服务治理
- SpringCloud:(一) 服务治理 Spring Cloud Eureka
- 干货分享微服务spring-cloud(6.Api网关服务zuul)
- 干货分享微服务spring-cloud(7.配置中心spring-cloud-config)
- 干货分享微服务spring-cloud(1.初探)
- Spring Cloud Eureka 服务治理
- 服务治理 Spring Cloud Eureka
- Spring Cloud Eureka 服务治理(一)
- 干货分享微服务spring-cloud(2.概览)
- (三)服务治理:Spring Cloud Eureka --笔记
- springcloud微服务三:Eureka服务治理之注册服务提供者及服务的发现和消费
- Spring Cloud初探——服务治理Spring Cloud Eureka
- 1、SpringCloud Eureka 服务治理
- springcloud微服务二:Eureka服务治理之服务注册中心
- Spring Cloud学习笔记1——服务治理(Eureka)