1 Star 0 Fork 0

dhpphd124 / 微服务主从切换自定义starter

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

微服务主从切换自定义starter

介绍

领导之前来了个需求,就是在微服务集群中,如果一个微服务(主机)死掉了,那么它的从机就要顶替它干活,保证业务的高可用性。 简而言之,就是实现微服务的主从切换。 我基于nacos和redis(之所以使用他们是因为现在大部分项目都会用到,所以几乎不会额外引入环境依赖),自定义了一个spring-boot-starter,实现了轻量级的主从切换。

外部依赖

redis6.0(仅仅用来实现简易版的从机的选举)、nacos2.0.3(用来实现微服务的状态监控)。

实现思路

  1. nacos会定时对服务进行监控,如果15秒未发心跳,则视为服务不健康;如果30秒未发心跳,则视为服务下线。我们可以基于nacos扩展,对微服务下线进行监控(并且nacos官方也提供了服务监控的sdk,不了解的可以先熟悉下)。
  2. 从机的顶替有一个选举过程,我这里基于redis的setnx命令,让他们去抢,谁抢到了,那么谁就顶替主机进行工作 (注意:用redis的话,一定要避免死锁的情况发生,所以设置的key一定要有时限性,而setnx和expire是不具有原子性的,所以我这里使用了lua脚本来保证原子性)

输入图片说明

项目结构

Test为主项目(引入了scada-spring-boot-starter模块)

空文件

简介

微服务主从切换的自定义starter 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/dhpphd124/master-slave-switch.git
git@gitee.com:dhpphd124/master-slave-switch.git
dhpphd124
master-slave-switch
微服务主从切换自定义starter
master

搜索帮助