摘要:
集群配置(cluster config) 所有节点共同维护同一份集群配置,共享集群内节点的相关配置信息: { node_1 = {addr = "127.0.0.1:10014", expire = "2024-01-01 00:00:00" }, node_2 = {addr = "127.0.0 阅读全文
摘要:
skynet很经典的用法是节点内会有批量的服务跑相同的模块逻辑。服务的生命周期管理显然是跟业务强关联的,需要根据实际业务对应做适配的生命周期管理方案。显然最直接的方案就是服务常驻,跟进程的生命周期同步,当服务的数量级不大时,认为消耗可控,方案是适用的,也避免过度设计。 这里想谈的是单节点数千服务的场 阅读全文
摘要:
有限状态机,表示有限个状态以及在这些状态之间的转移和动作等行为的处理模型。在任意时刻有限状态机都处于某一特定的状态,并且可以根据当前状态和输入条件(触发事件),从当前状态转移到另一个状态。 核心概念: 实体(Entity):状态机的主体和作用对象,它的状态可以改变 状态(State):实体在某一特定 阅读全文
摘要:
实现一个日程表服务(crontab),支持 服务启动自动对齐系统时间,以秒为单位检查触发定时任务(task); 以服务(同节点)为单位注册定时任务方式: 1)以自然时间字符串方式:2024-01-01 00:00:00 2)以定时间隔方式:每秒/每分/每时/每天/每周/每月/每年 取消指定定时任务; 阅读全文
摘要:
写一写游戏项目的基础模块的实现思路,之任务系统: 起引导、活跃、成就等作用的任务系统,是游戏常见的业务需求; 实现上可以分为几个部分: 任务类设计; 任务对象管理; 事件管理; hook机制; 一. 事件管理模块 一个以事件类型(event type)为单位,进行注册和回调触发的管理模块。 模块需要 阅读全文
摘要:
不仅是游戏项目,从软件设计层面看,当服务位于网络远端时,为与客户端之间的传输层连接提供一定的网络质量优化支持是常见的设计要求。 实现一个前后端的网络代理层,目标是优化直连链路的网络质量,支持缓冲重连。这里记录下思路; 代理层实现: 定制分配规则对服务器端机器做负载均衡; 客户端和服务器端业务连接的断 阅读全文
摘要:
我们知道,lua通过package模块来管理模块的搜索和加载,当使用require首次成功加载一个模块后,模块(Table)会被存储在package.loaded中,之后的require行为会直接获取到已加载的模块缓存。 如何在程序执行时,将对模块文件的修改热更新到程序中,同时确保运行时状态的正常。 阅读全文
摘要:
跨机集群的核心实现: 开启跨机消息管理服务,节点内所有需要跨进程投递的消息都通过此服务转发,通过网络送达集群内目标节点。实现: 每个进程开启服务,服务内缓存集群节点的配置信息,与每个节点建立通信连接,负责当前节点和集群内节点之间的消息通信; 根据当前节点配置监听集群消息入口(ip+port),开放与 阅读全文
摘要:
Design OOP use C 使用c语言实现面向对象特性 以底层思维来理解面向对象。我所理解的oop:为不同的数据元提供稳定的处理逻辑框架,同时提供复写的可能,支持不同数据元个性化定制有限的逻辑; 多态特性: 基类实现一组通用处理逻辑接口,子类通过改变特定接口的执行逻辑实现将子类与个性化操作绑定 阅读全文
摘要:
看好项目的源码总是会有重复造轮子的冲动。最近对比测了下我们业务使用的数据序列化协议的性能,review了社区上几个常用库的源码,尝试做了点优化,有些想法。浅浅写了个demo,这里记录下实现的思路,供后面查阅和反思。 协议的实现分为几个部分: schema text:协议描述文件 compiler : 阅读全文