2.9 KiB
2.9 KiB
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 个笔记服务中的其中一个,那么只有那一个实例,会将自己的本地缓存删除,另外两个服务的本地缓存依然存在。
为了验证这一点,我们再次请求笔记详情接口,如下图所示,如果请求被转发到了另外两个本地缓存还没删除的实例上,返回的笔记详情数据就还是老的数据,导致了数据不一致问题: