springCloud系列二(Eureka服务注册与发现)
Eureka的基本架构Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来 实现服务注册和发现。(类似于Dubbo的Zookeeper)系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。SpringCloud 的一些其他...
Eureka的基本架构
Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来 实现服务注册和发现。(类似于Dubbo的Zookeeper)
系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。SpringCloud 的一些其他模块(比如Zuul)就可以通过 Eureka Server 来发现系统中的其他微服务,并执行相关的逻辑。
Eureka包含两个组件:Eureka Server和Eureka Client
Eureka Server提供服务注册服务
各个节点启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到
EurekaClient是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)
Eureka的三大角色
Eureka Server提供服务的注册与发现
Service Provider将自身注册到eureka,从而使消费方能够找到
service Consumer服务消费方从eureka获取服务列表,从而消费服务
Eureka Server的建立
新建一个普通的springBOOT工程
在pom.xml中新加
<!-- eureka -server服务端 -->
< dependency >
< groupId > org.springframework.cloud </ groupId >
< artifactId > spring-cloud-starter- eureka -server </ artifactId >
</ dependency >
在application.yml中新加
eureka:
instance:
hostname: localhost #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己。
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。
然后在主启动类中新加
@EnableEurekaServer //EurekaServer服务器端启动类,接受其它微服务注册进来
将此工程启动起来,在http://localhost:7001/ 页面中

此时,尚未有EurekaClient在EurekaServer中进行注册。
---
Service Provider的建立
此工程建立在springCloud系列一(使用restTemplate进行服务调用) 的基础上
在pom.xml中新加
<!-- 将微服务provider侧注册进 eureka -->
< dependency >
< groupId > org.springframework.cloud </ groupId >
< artifactId > spring-cloud-starter- eureka </ artifactId >
</ dependency >
< dependency >
< groupId > org.springframework.cloud </ groupId >
< artifactId > spring-cloud-starter- config </ artifactId >
</ dependency >
在application.yml中新加
eureka:
client: #客户端注册进eureka服务列表内
service-url:
defaultZone: http://localhost:7001/eureka
然后在主启动类中新加
@EnableEurekaClient //本服务启动后会自动注册进 eureka 服务中
启动此工程,在http://localhost:7001/ 页面中发现此工程已经成功注册进eureka

页面中的application对应在application.yml中配置的spring.application.name
另外,我们可以通过,在application.yml中新加
eureka:
instance:
instance-id: microservicecloud-dept8001 #自定义服务名称信息
prefer-ip-address: true #访问路径可以显示IP地址
如下的配置来修改上图中的status,并修改下图中的ip地址提示,使得在注册界面中显示的信息更全

Eureka集群配置
为了保证eureka的高可用,可将eureka-server做成集群模式。
按照上面的eureka server的搭建过程,再搭建两个工程,开放端口分别用7002和7003.
并修改本地host是文件,将如下信息加入hosts文件
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
127.0.0.1 eureka7003.com
以7001为例,修改application.yml如下所示,7002和7003参考7001
defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
在 microservicecloud-provider-dept:8001工程中,修改defaultZone,在三个注册中心均进行注册
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
启动eureka集群和 microservicecloud-provider-dept:8001工程,效果如下图所示

----
更多推荐



所有评论(0)