天天看点

springcloud服务注册与发现eureka【高可用】

接下来,我们一块进入springcloud系列的学习中,关于springcloud微服务的理论知识这里不在描述。

eureka-server服务搭建

服务提供者搭建,服务注册

注册中心高可用

在idea中创建新的工程 工程名 例: eureka-server

关于springcloud与springboot版本请参考另一篇博客

在resources资源文件下创建 application.yml,并在该application.yml文件中加入如下配置

在启动类加入如下代码

启动类启动服务 看到包含如下日志输出代表成功

我们根据配置的服务端口号在浏览器里访问一下服务,我这里配置的端口号是8761

至此,我们已经把eureka服务起来了,从图中下方红框我们可以发现,目前还没有可用的服务,接下来,我们再创建一个服务注册到eureka

在idea中创建新的工程 工程名 例: provide-server1

启动类启动服务 看到包含如下日志输出代表配置成功

去查看注册中心看服务有没有注册成功

springcloud服务注册与发现eureka【高可用】

从图中可以看到 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工程,把配置文件复制三份,而且只要这三个配置文件,分别为

然后 复制三份启动类启动入口

springcloud服务注册与发现eureka【高可用】

然后在每一份中选择使用的配置文件

springcloud服务注册与发现eureka【高可用】

将三份配置文件内容做出更改如下

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

完成了相互注册

启动三个服务

springcloud服务注册与发现eureka【高可用】

因为启动顺序的不一样会导致已经起来的服务注册到未启动的服务,会抛出异常,这是正常现象,稍等半分钟左右打开浏览器访问 http://127.0.0.1:8761/

springcloud服务注册与发现eureka【高可用】

此时可以试着访问另外的两个服务,可以发现也是类似的,这时就已经搭建成功了

那么,我们的向注册中心注册的服务也要修改

这里还使用第2步创建的provide-server工程,修改注册中心地址为如下

启动provide-server

查看任意一个注册中心

springcloud服务注册与发现eureka【高可用】

此时,查看另外两个注册中心,发现也注册成功了,那就说明我们已经完成了eureka的高可用搭建

继续阅读