整体概述参见:http://dreamyouxi.com:7129/blog/1203

热更新与灰度赋予了服务器不停机维护和实时更新的能力。

灰度基于负载均衡策略运作,逻辑相对简单,此处不深入展开。

热更新则依赖脚本语言的动态特性,通过偷梁换柱的方式实现逻辑替换。对于 C++ 而言,也可以采用加载动态库的方式达到类似效果。

热更的完备性问题

热更最大的坑在于逻辑完备性,需要从以下两个维度仔细考量:

  1. 无状态进程:在一个完整的逻辑处理流程中,如果部分代码片段发生了热更新,整个流程的安全性和正确性需要慎重评估。
  2. 有状态进程:问题更为严峻,不仅要处理逻辑变更,还要兼顾内存中的运行时数据。

cpp 代码热更方案参见:http://dreamyouxi.com:7129/blog/1558