接下来,我们一块进入springcloud系列的学习中,关于springcloud微服务的理论知识这里不在描述。
eureka-server服务搭建
服务提供者搭建,服务注册
注册中心高可用
在idea中创建新的工程 工程名 例: eureka-server
关于springcloud与springboot版本请参考另一篇博客
在resources资源文件下创建 application.yml,并在该application.yml文件中加入如下配置
在启动类加入如下代码
启动类启动服务 看到包含如下日志输出代表成功
我们根据配置的服务端口号在浏览器里访问一下服务,我这里配置的端口号是8761
至此,我们已经把eureka服务起来了,从图中下方红框我们可以发现,目前还没有可用的服务,接下来,我们再创建一个服务注册到eureka
在idea中创建新的工程 工程名 例: provide-server1
启动类启动服务 看到包含如下日志输出代表配置成功
去查看注册中心看服务有没有注册成功

从图中可以看到 provide-server1已经注册成功,并且是 up的状态
在图的中部可以看到有行英文警告,我们把它翻译一下
紧急!EUREKA可能错误地声明实例已经启动,而实际上它们并没有。续订低于阈值,因此不会为了安全而终止实例。
这是因为Eureka进入了自我保护机制,默认情况下,如果EurekaServer在一定时间内没有接收到某个微服务实例的心跳时,EurekaServer将会注销该实例(默认90s)。但是当网络发生故障时,微服务与EurekaServer之间无法通信,这样就会很危险了,因为微服务本身是很健康的,此时就不应该注销这个微服务,而Eureka通过自我保护机制来预防这种情况,当网络健康后,该EurekaServer节点就会自动退出自我保护模式;
如果服务没停止就不会出现这个提示
可以在 eureka-server 服务中的application.yml文件中加入如下配置来解决
至此服务的注册与发现已经搭建完毕
Eureka Server可通过运行多台实例并相互注册的方式来实现高可用,各实例是平等的,没有master和slave之分,不像zookeeper一样有选举机制。
eureka集群高可用原理其实很简单,简单来说就是让注册中心服务相互注册一下,接下来我们来试一下。我们只是在本地环境模拟一下三台注册中心
windows环境请修改hosts文件
C:\Windows\System32\drivers\etc\hosts
增加如下内容
然后保存
如果保存的时候提示权限不足,请重新以下列方式打开hosts文件
1、按 win键
2、输入 记事本 (可能没输入框,直接按键盘打字就行了)
3、右键 选择 以管理员身份打开
4、然后打开hosts文件修改即可
使用教程1搭建的eureka-server工程,把配置文件复制三份,而且只要这三个配置文件,分别为
然后 复制三份启动类启动入口
然后在每一份中选择使用的配置文件
将三份配置文件内容做出更改如下
application-server1.yml
application-server2.yml
application-server3.yml
从上面的修改中我们可以看出
有服务 eureka-8761, eureka-8762, eureka-8763
eureka-8761 注册到 eureka-8762, eureka-8763
eureka-8762 注册到 eureka-8761, eureka-8763
eureka-8763 注册到 eureka-8761, eureka-8762
完成了相互注册
启动三个服务
因为启动顺序的不一样会导致已经起来的服务注册到未启动的服务,会抛出异常,这是正常现象,稍等半分钟左右打开浏览器访问 http://127.0.0.1:8761/
此时可以试着访问另外的两个服务,可以发现也是类似的,这时就已经搭建成功了
那么,我们的向注册中心注册的服务也要修改
这里还使用第2步创建的provide-server工程,修改注册中心地址为如下
启动provide-server
查看任意一个注册中心
此时,查看另外两个注册中心,发现也注册成功了,那就说明我们已经完成了eureka的高可用搭建