根据计划好的学习目录 第(一)篇, 在(二),(三)篇以后,本篇记录Eureka的高可用spring
服务注册中心是分布式系统基础部分,我的以为理解基础仍是很重要的服务器
服务器挂掉的事件很常见,你们都习惯了,重启就行了,再挂再重启呗app
没有重启解决不了的问题 --- 来自大网管的发言分布式
做为吃瓜群众表示不服,下面尝试一下Eureka来解决这些问题ide
目前Eureka的server有一个,client也有一个学习
添加一个server B, 让B与server互相注册发现服务,互相交换信息,大箭头是原来的模型,小箭头是高可用的现实 ,若是server挂了,就可让client去找server B,反之也同样,让服务不间断测试
不用急着去复制项目,idea 打开eureka,注册中心(server),url
点击箭头的编辑,进入启动项编辑窗口idea
点击上面图片的小图标,复制一份启动,下面开始设置不一样端口来启动两个eureka服务中心spa
+ 端口设置=8761 EurekaApplication A
而且改服务中心url 指向 8762 yml中设置,而后启动,访问localhost:8761
spring: application: name: my first eureka eureka: client: service-url: defaultZone: http://localhost:8762/eureka/ #此处再说明一次,本服务做为client,引入url为注册中心地址 register-with-eureka: false server: enable-self-preservation: false
以前的client须要启动,测试被发现.
+ 端口设置=8762 EurekaApplication B
而且改服务中心url 指向 8761 yml中设置,而后启动,访问localhost:8762
spring: application: name: my first eureka eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ register-with-eureka: false server: enable-self-preservation: false
8762同样能够发现 myclient 服务
client 修改yml文件的defaultZone, 以下: 向A,B都注册,逗号分隔开url
spring: application: name: myclient eureka: client: service-url: defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
这时候,上面就能够实现Eureka高可用,不用担忧挂掉其中的一台服务.崩掉了.
仍是要相信总会有奇迹,若是两台都挂掉了,那咱们能够多加个server,好比3个server的时候,相互之间的注册方式,好比加了一个EurekaApplication C
client 方: 只须要在yml配置中的defaultZone: A,B,C 追加一个C的url便可
server A方 : 也在yml配置中的defaultZone: B,C 追加一个C的url便可
server B方 : 也在yml配置中的defaultZone: A,C 追加一个C的url便可
server C方 : 也在yml配置中的defaultZone: A,B 加上A,B的url便可
若是你们以为3个或更多都发生了奇迹,全挂了,不要紧,还有办法并且很是简单------重启
注册中心都是须要配置高可用,集群方式,无论是否是使用Eureka仍是zookeeper,仍是其余组件,保证中心不挂服务就能够不间断
以上大可能是操做实践,熟悉套路,全部的设计构架也好,组件也好,都有着现实的例子,比方说这个注册服务发现,就比如最近办公楼下广告小视频,常常放的什么没有中间商赚差价,什么什么的,你们也应该都听过,意会下就好.
------------------------------------------------------------------