weblog/doc/14、消息中间件 RocketMQ/14.3 IDEA 启动多个服务,本地模拟集群.md
2025-02-17 11:57:55 +08:00

2.9 KiB
Raw Blame History

title, url, publishedTime
title url publishedTime
IDEA 启动多个服务,本地模拟集群 - 犬小哈专栏 https://www.quanxiaoha.com/column/10353.html null

《13.13小节》 中,我们讲到了在生产环境中,服务是以集群的方式部署的,当前笔记更新的逻辑,会导致本地缓存数据不一致的问题。但是,还是有小伙伴不太理解,这小节中,我们就将通过 IDEA 启动多个笔记服务,本地模拟一下集群部署,并测试笔记更新接口,还原一下车祸现场。

复制多个服务

在本地当前开发环境中,每个服务的实例都只会跑一个,而不是多个,比如笔记服务:

那在 IDEA 中,要如何方便的同时跑多个笔记服务呢?如下图所示,点击右上角 | Edit Configurations....

选中想要跑多个实例的服务(笔记服务),点击上方的复制图标:

添加参数

这里我们复制 2 个服务出来,接着,依次选中新建的服务实例,点击右侧的 Modify options:

在弹出框中,将 Environment variables 选项勾选上:

完成后,在对应输入框内,输入当前服务想要启动的端口,注意,需要保证和其他服务的端口区别开,防止冲突(三个笔记服务跑在不同端口上):

--server.port=8087

配置完成后,点击 Run 按钮启动一个新的服务。3个实例都跑起来后大致如下

登录到 Nacos 管理后台,在服务列表中,可以看到该服务的实例数已经变成了 3表示当前有三个笔记服务同时在工作

车祸现场还原

为了还原车祸现场,我们多次调用笔记详情查询接口,以保证每个实例都初始化了本地缓存:

接着,我们执行笔记更新接口,如下:

由于请求会被网关转发到 3 个笔记服务中的其中一个,那么只有那一个实例,会将自己的本地缓存删除,另外两个服务的本地缓存依然存在。

为了验证这一点,我们再次请求笔记详情接口,如下图所示,如果请求被转发到了另外两个本地缓存还没删除的实例上,返回的笔记详情数据就还是老的数据,导致了数据不一致问题: