关于skynet_fly的一键构建服务配置 为什么要做这个? skynet启动用的skynet_config新增一个目录都要去增加一个path并重启,我就想有没有办法不用手写path,用脚本写。 热更服务的path如果有新增模块引入,之前没有埋伏路径,增加了新路径,岂不是会找不到,很难受,这样。 新增一个服务模块每次都有手写一个config好麻烦。 热更服务需要通过curl连接 debug_console服务去执行热更。 所以这个事情必须 2023-06-30 skynet_fly实现思路历程 #skynet_fly实现思路历程
关于skynet做服务热更新 为什么要做热更新那当然是因为产品需要更新功能,但是服务功能模块又可以有用户在使用,又不想停止服务又想更新功能,就有了需要热更新的需求。无状态的服务非常好更新,例如查询服务,直接重启服务也可以,只是出现短暂的服务不可用。更新难的是有状态的服务,不能直接重启,重启就可能出现数据丢失了。 热更方式 在原本的lua虚拟机中更新这种方式通过重新加载读取_G.package.loaded中的文件,去覆盖旧_e 2023-05-22 一些想法 #一些想法
平衡二叉树的lua实现 特征 有序性 所有结点都是左子树比自己小,右子树比自己大。 平衡性 所有结点左右子树高度差绝对值小于等于一。 唯一性 结点key唯一,不能重复。 优势 适合有序性数据存储 二叉树的天然有序性 适合范围查找 基于有序的范围查找时间复杂度为o(log n) + m 缺点 内存地址分散 每个结点都是独立数据块,存储地址分散,操作速度非常依赖存储设备的寻址速度,基于机械硬盘运行将会非常慢。 操作时 2023-05-21 数据结构 #数据结构
网络七层模型 7层 物理层,数据链路层,网络层,传输层,会话层,表示层,应用层 5层 物理层,数据链路层,网络层,传输层,应用层 4层 网络接口层,网络层,传输层,应用层 物理层 传输介质,网线,光纤数据链路层 保持数据的可靠传输网络层 数据路由,ip地址传输层 tcp,udp协议,数据打包会话层 建立与管理应用程序之间的通信表示层 解决不同系统的兼容问题应用层 h 2023-05-14 socket #socket
select,poll,epoll 对比 最大链接数 select 有上限FD_SETSIZE设置 poll 链表实现,没有上限 epoll 没有上限 fd剧增带来的io效率问题 select 轮询机制, o(n)复杂度 poll 轮询机制,o(n)复杂度 epoll 事件通知机制,o(1)复杂度 消息传递方式 select 完整拷贝 poll 完整拷贝 epoll 通过内核与用户空间共享内存来实现 工作方式 select LT p 2023-05-14 socket #socket
tcp知识整理 三次握手过程 第一次握手 客户端发送建立链接请求报文SYN携带(SYN = 1,seq = x)后,进入SYN_SENT状态。 第二次握手 服务端接收到SYN报文后回复SYN+ACK报文携带(ACK=x+1,SYN=1,seq=y),进入SYN_RECV状态。 第三次握手 客户端收到SYN+ACK报文后回复ACK报文携带(ACK=y+1, 2023-05-14 socket #socket
redis 知识杂谈 redis有哪些好处? 数据类型丰富,提供了string,list,hash,set,zset五种基础类型,还提供了stream,geo,bitmap扩展类型string数据结构:简单动态字符串list数据结构:双向链表,压缩列表hash压缩列表,哈希表zset压缩列表,跳表set哈希表,整数数组 数据可以设置过期时间 支持事务 支持脚本化运行 哈希冲突解决 少量的冲突redis使用链式哈 2023-05-13 redis #redis
skynet c层的整体架构 架构图上图是skynet框架的核心的架构图,看完整体我们再去细看内部实现细节,架构图就像一张完整的地图,我们需要由面到点深入到图中,才能真正的了解吃透skynet,使用中才知道要注意哪些细节。现实中了解地图中的一个地方自然是实地去走一走。了解代码框架的话当然是结合源码和文档(skynet github 上的wiki文档就写的非常不错)。源码不止看了一遍,所以基本上都是n探,探多了就清楚自己哪些地方 2023-05-13 skynet #skynet_frame
actor模型在sknyet中的应用 简介Actor模型由状态(State)、行为(Behavior)和邮箱(MailBox,可以认为是一个消息队列)三部分组成: 状态Actor模型中的状态指Actor对象的变量信息,状态由Actor模型自己管理,避免了并发环境下的锁和内存原子性等问题。 行为Actor模型中的计算逻辑,通过Actor模型接收到的消息来改变Actor模型的状态。 邮箱邮箱是Actor和Actor之间的通信桥梁,邮箱内部 2023-05-07 skynet #skynet_frame