这是我参与更文挑战的第15天,活动详情查看: 更文挑战
什么是集群?
集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。
集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。
为什么要用Eureka Server集群:
地位重要
服务注册中心是微服务架构中最基础的设施之一。 注册中心可以说是微服务架构中的“通讯录”,它记录了服务和服务地址的映射关系。作为调度全局的“线人”,一旦出事了,那么所有通过注册中心调度的服务将被切断,当然,如果一个错综复杂的系统,服务间的自个的调用也是存在的,这些调用不会受影响,但是我们使用注册中心的目的就是要把服务间的调用统一管理,微服务规划的越合理,那么这些复杂的内部调用也越少!
压力大
在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。
eureka集群流程
说明:
- 服务注册:Register
- 心跳续约:Renew
- 服务下线:Cancle
- 获取服务信息:Get Registry
- 远程调用:Remote Call
Eureka Server的工作原理
- Eureka Server集群之间通过Replicate来同步数据
- Eureka Server集群之间通过异步方式来同步状态
- 所有节点都是平等的,不区分主从节点
- 节点通过彼此相互注册来提高可用性(添加一个或多个有效的serviceUrl指向其他节点)
如何搭建集群?
eureka单例
使用上一篇搭建好的eureka单例
新增3个yml文件
在netflix-eureka-server项目中的resources目录下新增3个yml文件,三个文件主要区别就是hostname以及defaultZone的url不同
-
对应的端口分别是8081、8082、8083
-
hostname为:eureka1、eureka2、eureka3
spring:
application:
name: eureka-server
server:
port: 8081
eureka:
instance:
hostname: eureka1
client:
#表示不将将自己注册进EurekaServer,默认为true。
register-with-eureka: false
#表示不从EurekaServer抓取已有的注册信息,默认为true。
fetch-registry: false
service-url:
defaultZone: http://eureka2:8082/eureka/,http://eureka3:8083/eureka
编辑配置
主要改动两个地方
Name
Name处可以自由命名,此案例为了方便区分,分别命名为EurekaServer-rep1,EurekaServer-rep2,EurekaServer-rep3
Active profiles
Active profiles这里的名字需要跟yml文件名对应,比如yml文件名叫application-rep1,那么这里就叫rep1,等会运行的时候才会调用到application-rep1.yml这个配置文件
运行并访问
3个不同配置运行之后,浏览器访问url:http://localhost:8081/ 、http://localhost:8082/ 、http://localhost:8083/ 能看到浏览器上DS Replicas处由另外两个eureka server,代表集群成功运行了!
今日小结 今天学了eureka集群的作用、调用过程、以及实现方式,好了,下一章再见!