网站首页 > 开源技术 正文
skynet热更新-clearcache的使用体会
skynet 热更新主要有2种方法
- 第一种:使用clearcache
- 第二种:使用console inject lua脚本
动态创建的服务的热更新
- 如果一个skynet服务是在业务流程中动态创建的,那么在修改代码后,使用clearcache就可以保证下次再创建的新的服务是使用的新的代码。
创建后长期不销毁重建的服务,如何热更新?
- 如果是在进程启动时创建,或创建后就一直存在的服务需要热更新怎么办呢? 方法1: 对于这种情况目前inject是首选。但是有时候需要修改的代码量比较大,inject 脚本的方式就非常复杂且容易出错。方法2: 当然,还有一种方式就是采用轮服的机制解决。从进程级别解决问题。但是这个代价又太大了,比clearcache的成本还高。
- 这里我们还有一个思路就是可以在业务服前加一个管理调度服务。例如A1 skynet服务需要发消息给B1 skynet服务来实现某个功能。消息流为:
A1 ---> B1
- 我们可以在B1前加一个B_manager服务,A服务通过B_manager服来传递消息给B1服务, 消息流为:
A1 ---> B_Manager ---> B1
- 这个时候如果B1的业务有大量需要修改的。只需要clearcache一下,让后创建一个新的B1服务,这里称为B2,B_Manager再将A1的请求转发到B2即可,这个时候的消息流为:
A1 ---> B_Manager ---> B2
- 这个时候B1就不会接收到新的消息了。介意B1的存在可以销毁它,如果资源占用不大,也可以不销毁。
- 当然这里有几个必须要注意的问题: 如果B1服务是有状态的,那么这个方法是有很大限制的,需要把B1服务的数据通过消息或共享内存,缓存等方式转移到B2服务上。如果B1服务上有定时器等可能会影响业务的逻辑时时,必须要关闭定时器或销毁B2服务。如果B1是无状态的那就简单多了,创建新的服务B2后,B_mananger将所有需要转发给B1的请求全都转发给B2即可。消息中间多了一层B_Manager会不会损失性能,这个需要视业务要求来具体分析,大部分情况,这点新能损失都可以忽略不计的;当然如果你很介意的话,还是建议业务刚上线时使用B_Manager,业务稳定后,可以在某次更新时将这层转发层去掉。
- 上面的方法也是一种折中的方法,个人感觉还是比较好用的,但也是不完美的。
- 关于skynet的热更新,如果你有什么更好的方案,希望能够指点一二!
- 个人的一点想法,分享给大家!如果你也在使用skynet,关注我,一起学习,交流一下!
猜你喜欢
- 2024-10-02 疑似遭3家黑客组织联合攻击 Meta公司服务器全球宕机
- 2024-10-02 linux下编译安装skynet(linux安装code)
- 2024-10-02 skynet服务的本质与缺陷(skynet agent)
- 2024-06-14 黑客入侵ChatGPT,OpenAI微软全被搞崩!苏丹匿名者:是我干的
- 2024-06-14 入手iQOO Neo9是一种什么体验?一文告诉你答案
- 2024-06-14 Skynet中的并发模型
- 2024-06-14 mac广告拦截软件---Skynet
- 2024-06-14 游戏服务器框架skynet并发模型的一点改进思路
- 2024-06-14 linux下安装游戏服务器框架skynet问题总结
- 2024-06-14 Skynet服务器框架--Socket服务源码剖析和应用
你 发表评论:
欢迎- 03-19基于layui+springcloud的企业级微服务框架
- 03-19开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方组件
- 03-19SpringMVC +Spring +Mybatis + Layui通用后台管理系统OneManageV2.1
- 03-19SpringBoot+LayUI后台管理系统开发脚手架
- 03-19layui下拉菜单form.render局部刷新方法亲测有效
- 03-19Layui 遇到的坑(记录贴)(layui chm)
- 03-19基于ASP.NET MVC + Layui的通用后台开发框架
- 03-19LayUi自定义模块的定义与使用(layui自定义表格)
- 最近发表
-
- 基于layui+springcloud的企业级微服务框架
- 开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方组件
- SpringMVC +Spring +Mybatis + Layui通用后台管理系统OneManageV2.1
- SpringBoot+LayUI后台管理系统开发脚手架
- layui下拉菜单form.render局部刷新方法亲测有效
- Layui 遇到的坑(记录贴)(layui chm)
- 基于ASP.NET MVC + Layui的通用后台开发框架
- LayUi自定义模块的定义与使用(layui自定义表格)
- Layui 2.9.11正式发布(layui2.6)
- Layui 2.9.13正式发布(layui2.6)
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)