sofastack / sofa-jarslink

Jarslink is a sofa ark plugin used to manage multi-application deployment
Apache License 2.0
3.05k stars 705 forks source link

热部署服务是否可以拥有状态? #120

Closed cngddflzw closed 5 years ago

cngddflzw commented 5 years ago

Your question

热部署服务是否可以拥有状态?

Your scenes

某些服务的初始化流程可能是依赖业务数据的, 例如 new MyServiceImpl(itemId, itemCount); 这个 itemId 和 itemCount 是从 MyService 调用方获取. 更有甚至的. 可能服务会注册回调, 例如 MyService#addListener(listener)

类似于这样的使用方式, 这些服务可以做到热部署吗? 如何在热部署 activate service 以后恢复这些状态量呢?

QilongZhang commented 5 years ago

我理解你说的是服务运行时会生成一部分数据,这些数据会影响后续服务行为。如果这些数据只是局部保存在模块运行时内存,而没有持久化,是不能够热部署的。

这种情况蛮少见的吧,你可以想象他只是走本地调用的 RPC 服务就好了。

cngddflzw commented 5 years ago

@QilongZhang 也是. 这是 rpc, 本质上跟随便一个第三方 jar 包的使用还是不一样的. 谢谢解答