热更新简述

  1. 只要实现了进程级别的无状态(或在重启时恢复状态),除了跨过"重启期间"的连接会受到影响这个问题之外,我们还可以通过重启进程的方式实现热更新

  2. 优雅的进程切换
    在热更新期间,新旧经常会同时运行,旧进程处理旧的请求,等处理完全部请求之后,再退出,而新进程则负责处理新的请求

  3. 利用fork,exec切换
    利用fork、exec函数实现进程切换,原理:fork和exec函数有一个重要的特性,即可以让复刻后的进程和新开启的进程继承原进程的文件描述符,因此新进程也可以直接访问原进程监听的端口的socket。
    在这里插入图片描述
    如上图说明了fork和exec函数实现优雅进程切换的流程,进程1是一个服务端程序,监听8001端口,客户端A正在与服务端进行交互。当需要热更新时,让进程1调用fork函数,系统会复刻一个与进程1一摸一样的进程2,两个进程共同监听8001端口。让进程2调用exec函数运行新版本的程序,新版本程序进程3继承了原有的监听端口。此时,可以让进程1停止接收新连接。客户端A可以继续与进程1进行交互,而新的连接会与进程3交互。待到进程1处理完客户端A的请求后,再让它退出,系统仅剩下进程3。如此便实现了优雅的进程切换。由于进程3和进程1都监听8001端口,因此客户端无须做任何改变。

  4. 利用网关实现热更新
    除了使用fork和exec函数,利用网关也能够实现优雅的进程切换。如图9-20所示的是一种带有网关的服务端架构,客户端与网关相连,网关再将消息转发给逻辑进程(图中的game1)。<

相关推荐

  1. [Unity--更新之增量更新介绍]

    2024-06-05 21:08:08       43 阅读
  2. 关于 android 更新技术

    2024-06-05 21:08:08       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-05 21:08:08       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-05 21:08:08       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-05 21:08:08       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-05 21:08:08       20 阅读

热门阅读

  1. 【vivado】如何用vivado查看高扇出路径

    2024-06-05 21:08:08       9 阅读
  2. IT技术培训班:实用还是虚幻?

    2024-06-05 21:08:08       8 阅读
  3. Flutter 中的 SliverAnimatedList 小部件:全面指南

    2024-06-05 21:08:08       7 阅读
  4. Lua 元表(Metatable)深入解析

    2024-06-05 21:08:08       9 阅读
  5. webpack包含哪些核心模块,分别是做什么的?

    2024-06-05 21:08:08       9 阅读
  6. Python爬虫要掌握哪些东西

    2024-06-05 21:08:08       6 阅读
  7. Qt程序发布工具windeployqt.exe所带来的坑

    2024-06-05 21:08:08       10 阅读
  8. C++中的List

    2024-06-05 21:08:08       8 阅读
  9. x264 参考帧管理原理:i_frame_num 变量

    2024-06-05 21:08:08       10 阅读
  10. Web前端框架:深入探索与实践

    2024-06-05 21:08:08       7 阅读
  11. AndroidStudio设置允许APP获取定位权限

    2024-06-05 21:08:08       9 阅读
  12. 算法题day37日(补5.23日卡:贪心算法day4)

    2024-06-05 21:08:08       9 阅读
  13. rman reset database incarnation 重建controlfile

    2024-06-05 21:08:08       10 阅读