现有微服务单节点架构项目需要进行多节点部署,给出个人解决方案,目前只想到这些改动点,后续实践会继续完善,欢迎同学们批评指正。
方案一:微服务单节点架构改造为微服务集群架构
软件改造 | |
定时任务改造 | 定时任务需要单独构建一个服务部署到独立的服务器去运行, 现有定时任务相关代码全部需要改造; |
jvm缓存改造 | 现有使用了JVM缓存的代码全部需要改造,使用redis缓存代替; |
session存储改造 | session存储需要全部改掉,将存储内容放入redis存储, 实现各个节点的数据共享;相关逻辑全部修改; |
数据库id改造 | 现在数据库使用自增id进行表关联,需要进行改造,保证数据库集群中id的唯一性; 方法一:使用唯一id(雪花算法)替换现在数据所有的id,基本所有的数据表都需要改动,改动太大; 方法二:数据库节点全都配置初始id和自增补偿,保障多个数据库节点在使用自增id过程中不会重复, 缺点不方便扩充节点和id不是连续的自增,改动小;比较后采用方案二; |
接口幂等性问题 | 防止重复操作带来的未知操作; |
时间问题 | 需要确保多台服务器节点的时间保持一致; |
文件服务 | 为保证各节点对文件存取的一致性,需要搭建一个独立的文件服务器, 或者搭建多个文件服务器将文件数据进行同步; |
MQ消费问题 | MQ需要搭建集群,要考虑到硬件能否正常往MQ集群丢消息; |
nacos | nacos注册中心需要搭建集群 |
运维改造 | |
构建平台入口地址 | 根据三台服务器节点的ip地址实现负载均衡,构建出统一的虚拟ip入口; |
nginx负载均衡 | 实现多台前后端服务节点之间的代理访问; |
文件服务器 | 搭建独立的文件服务器,或者多台文件服务器实现数据定时共享; |
方案二:微服务单节点架构改造为双机部署(双机热备)
软件改造 | |
暂无 | |
运维改造 | |
构建平台入口地址 | 构建出的虚拟ip入口指向可用服务ip地址,或者两台机器的平台地址全给到用户; |
双机热备 | 两台机器通过网络连接,在主机器停止工作后备用机器能立马启动程序工作; |
文件服务器 | 搭建独立的文件服务器,或者多台文件服务器实现数据定时共享; |