Spring Cloud Eureka 服务治理--服务注册中心
这篇文章主要介绍如何使用Spring Cloud Eureka来实现服务治理 --服务注册与发现,是一个总结 记录 方便自己记忆。
文章知识 均来自以下系列文章,请参考原文
Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston版】
服务治理&服务治理框架
服务治理:在微服务架构中,由于一个项目被分成多个微服务,那各个微服务之间可能需要 互相调用。服务治理框架就是解决这个问题。具体包括 服务注册,服务发现,服务调用。
目前有多种服务治理框架,比如:Netflix Eureka、Consul、Zookeeper。
1.Netflix
Netflix是一家美国公司,在美国、加拿大提供互联网随选流媒体播放,定制DVD、蓝光光碟在线出租业务
2. Netflix Eureka
Eureka是Netflix 公司开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery。Eureka由两个组建组成:Eureka Server 和 Eureka Client。Eureka Server作为服务注册功能的服务器,它是服务注册中心,系统维护人员可以通过Eureka Server来监控系统总各个微服务是否正常运行。 Eureka Client就是各个微服务。
3.Spring Cloud 服务治理
Spring Cloud为服务治理做了一层抽象接口,所以在Spring Cloud应用中可以支持多种不同的服务治理框架。并且在Spring Cloud服务治理抽象层的作用下,我们可以无缝切换服务治理实现框架,并不会影响框架的服务注册,服务发现,服务调用等逻辑
4.Spring Cloud Netfilx
Spring Cloud Netfilx是Spring Cloud的子项目之一,主要内容是对Netflix公司的一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。它主要提供的模块包括:服务治理(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。
5.Spring Cloud Netflix Eureka
Spring Cloud Netflix Eureka是Spring Cloud Netflix项目下的服务治理模块。是Spring Cloud 封装了Netflix公司开发的Eureka模块 来实现服务注册和发现。
几台服务提供相同服务来做均衡负载;监控服务器调用成功率来做熔断,移除服务列表中的故障点;监控服务调用时间来对不同的服务器设置不同的权重等等
使用Spring Cloud Eureka来实现服务治理
1.服务注册:创建服务注册中心
具体代码等没有添加,请参考原文 Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston版】
step1:创建Spring Boot项目eureka-server,添加 spring-cloud-starter-netflix-eureka-server 起步依赖
step2:在Spring Boot项目入口添加@EnableEurekaServer
注解 启动一个服务注册中心提供给其他应用进行对话
step3:修改配置文件 application.properties文件
在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,在application.properties
配置文件中增加如下信息:
#设置服务注册中心 微服务的名称和端口
spring.application.name=eureka-server
server.port=1001
eureka.instance.hostname=localhost
#禁用客户端注册行为,防止 该服务注册中心 将自己作为客户端 尝试注册自己
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.register-with-eureka
:表示是否将自己注册到Eureka Server,默认为true。eureka.client.fetch-registry
:表示是否从Eureka Server获取注册信息,默认为true。
step4:启动工程后,访问:http://localhost:1001/,可以看到Eureka服务注册中心页面,其中还没有发现任何服务。
集群
在一个分布式系统中,服务注册中心是最重要的基础部分,理应随时处于可以提供服务的状态。如果是单点话,遇到故障就是毁灭性的。为了维持其可用性,使用集群是很好的解决方案。Eureka通过互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署。
多节点配置
由于我们在一台机器一个工程上模拟多个节点,我们需要给springboot应用配置profiles属性用来标识,并且打包成jar包之后,我们启动指定profiles的应用
修改hosts文件(单机单应用上模拟多节点所需要)C:\Windows\System32\drivers\etc
127.0.0.1 server1 127.0.0.1 server2 127.0.0.1 server3
创建双节点注册中心
1.修改Eureka-server