上一页 1 2 3 4 5 6 ··· 46 下一页

2022年2月28日

skynet源码分析之skynet_monitor(转)

摘要: 使用skynet框架中,偶尔会遇到A message from [ :0000000b ] to [ :0000000c ] maybe in an endless loop (version = 13187)类似的error,意思是0000000c服务处理0000000b服务发过来的某条消息时可能 阅读全文

posted @ 2022-02-28 14:08 &大飞 阅读(87) 评论(0) 推荐(0) 编辑

skynet源码分析之sharedata共享数据(转)

摘要: 在游戏开发中,需要用到大量且更新不频繁的配置数据,而把业务拆分到多个服务后,各个服务可能只用到其中的少部分数据,此时每个服务加载所有数据会浪费大量内存。sharedata模块就是为了解决这种需求设计的,其原理是:将共享lua数据存放到一个c结构里,所有服务都共享这个c结构的内存块,各个服务可以获取这 阅读全文

posted @ 2022-02-28 14:07 &大飞 阅读(308) 评论(0) 推荐(0) 编辑

skynet源码分析之sproto使用方法(转)

摘要: 上一篇文章介绍sproto的构建流程(https://www.cnblogs.com/cnxkey/articles/15945371.html),这一篇文章介绍sproto如何使用,参考https://github.com/cloudwu/sproto。 A端主动给B端发送请求:调用request 阅读全文

posted @ 2022-02-28 14:06 &大飞 阅读(241) 评论(0) 推荐(0) 编辑

skynet源码分析之sproto解析和构建(转)

摘要: skynet提供一套与客户端通讯的协议sproto,设计简单,有利于lua使用,参考官方wiki https://github.com/cloudwu/skynet/wiki/Sproto。本篇介绍组装".sproto"文件以及sproto构建流程。之后,会另写一篇介绍sproto的使用方法。 1. 阅读全文

posted @ 2022-02-28 14:05 &大飞 阅读(418) 评论(0) 推荐(0) 编辑

skynet源码分析之snax(转)

摘要: snax是一个方便实现skynet服务的简单框架,对服务的接口(比如skynet.call, skynet.send等)做了进一步的封装,编写snax服务比较容易,详情参考官方wiki https://github.com/cloudwu/skynet/wiki/Snax 下面是一个简单的snax服 阅读全文

posted @ 2022-02-28 14:04 &大飞 阅读(183) 评论(0) 推荐(0) 编辑

skynet源码分析之热更新(转)

摘要: skynet有两种方法支持热更新lua代码:clearcache和inject,在介绍skynet热更新机制之前,先介绍skynet控制台,参考官方wiki https://github.com/cloudwu/skynet/wiki/DebugConsole 1. skynet控制台 想要使用sk 阅读全文

posted @ 2022-02-28 14:03 &大飞 阅读(257) 评论(0) 推荐(0) 编辑

skynet源码分析之cluster集群模式(转)

摘要: 比起slave/harbor集群模式,skynet提供了用的更为广泛的cluster集群模式,参考官方wiki https://github.com/cloudwu/skynet/wiki/Cluster。cluster模式利用socketchannel库(http://www.cnblogs.co 阅读全文

posted @ 2022-02-28 14:00 &大飞 阅读(163) 评论(0) 推荐(0) 编辑

skynet源码分析之master/salve集群模式(转)

摘要: skynet提供两种集群模式,之一是master/slave模式,每个skynet进程是一个slave节点,每个slave节点中启动一个"cslave"服务,选择一个节点配置"standalone"选项,会启动一个“cmaster”服务,用于协调slave组网。slave之间通过TCP两两连接。参考 阅读全文

posted @ 2022-02-28 13:59 &大飞 阅读(227) 评论(0) 推荐(0) 编辑

skynet源码分析之socketchannel(转)

摘要: 请求回应模式是与外部交互最常用的模式之一。通常协议设计方式有两种:1.每个请求包对应一个回应包,有tcp保证时序,先请求的先回应,但不必收到回应才发送下一个请求,redis的协议就是这种类型;2.每个请求带一个唯一的session标识,回应包也带这个标识。这样每个请求不一定都需要回应,且不用遵循先请 阅读全文

posted @ 2022-02-28 13:59 &大飞 阅读(191) 评论(0) 推荐(0) 编辑

skynet源码分析之网络层——Lua层介绍(转)

摘要: 本篇主要介绍在Lua服务里调用skynet网络层底层接口的流程,Lua层的api主要在lualib/skynet/socket.lua,可参考官方wiki https://github.com/cloudwu/skynet/wiki/Socket。 通过一个简单的例子说明Lua服务是如何最终调用到网 阅读全文

posted @ 2022-02-28 13:58 &大飞 阅读(267) 评论(0) 推荐(0) 编辑

skynet源码分析之网络层——网关服务器(转)

摘要: 在上一篇文章里介绍Lua层通过lualib/skynet/socket.lua这个库与网络底层交互(http://www.cnblogs.com/RainRill/p/8707328.html)。除此之外,skynet还提供一个通用模板lualib/snax/gateserver来启动一个网关服务器 阅读全文

posted @ 2022-02-28 13:58 &大飞 阅读(354) 评论(0) 推荐(0) 编辑

skynet源码分析之网络层——底层介绍(转)

摘要: 本篇主要介绍skynet网络层底层,主要代码在socket_server.c,skynet_socket.c,socket_epoll.h。通过该篇的介绍,了解skynet网络层的运作原理,比如工作线程与socket线程如何通信,如何处理网络收发数据等。之后会介绍skynet的服务怎么跟网络层交互以 阅读全文

posted @ 2022-02-28 13:57 &大飞 阅读(466) 评论(0) 推荐(0) 编辑

skynet源码分析之定时器skynet_timer.c(转)

摘要: skynet自带定时器功能skynet-src/skynet_timer.c,在skynet启动时会创建一个线程专门跑定时器。每帧(0.0025秒/帧)调用skynet_updatetime() 1 // skynet-src/skynet_start.c 2 3 create_thread(&pi 阅读全文

posted @ 2022-02-28 13:56 &大飞 阅读(271) 评论(0) 推荐(0) 编辑

skynet源码分析之lua层消息处理(转)

摘要: Lua层消息处理机制在lualib/skynet.lua,提供大部分Lua层的api(最终会调用到c层的api),包括启动一个snlua服务时Lua层的处理,创建新服务,注册服务协议,如何发送消息,如何处理对方发过来的消息等。本篇主要介绍消息处理机制,从而理解skynet如何实现高并发。 为了简化, 阅读全文

posted @ 2022-02-28 13:55 &大飞 阅读(169) 评论(0) 推荐(0) 编辑

skynet源码分析之snlua服务的启动流程(一)(转)

摘要: skynet绝大部分服务类型是snlua,它是运行Lua脚本的服务,在用skynet框架上开发游戏服务器时,大部分逻辑都是snlua服务,90%以上只需写Lua代码即可,所以很有必要了解snlua服务相关内容。由于篇幅较多,打算分三篇文章介绍,都写完后再一起发布出去。本篇主要介绍snlua服务的启动 阅读全文

posted @ 2022-02-28 13:54 &大飞 阅读(264) 评论(0) 推荐(0) 编辑

skynet源码分析之snlua服务的启动流程(二)(转)

摘要: 通过前一篇文章(http://www.cnblogs.com/RainRill/p/8485024.html)了解了skynet启动snlua服务的整体流程,这篇文章补充上一篇未介绍的内容。 1. 消息类型 skynet定义了多个不同的消息类型,每种类型的处理方式不一样,在服务启动流程中需注册用到的 阅读全文

posted @ 2022-02-28 13:54 &大飞 阅读(146) 评论(0) 推荐(0) 编辑

skynet源码分析之service_logger,skynet_error(转)

摘要: service_srv目录是依附skynet核心模块的c服务模板,如用于日志输出的logger服务,用于运行lua脚本的snlua服务等,编译成so库供skynet框架使用。logger服务(service_logger.c)功能简单,通过了解其工作方式来熟悉skynet的工作流程。在skynet启 阅读全文

posted @ 2022-02-28 13:53 &大飞 阅读(229) 评论(0) 推荐(0) 编辑

skynet源码分析之skynet_server(转)

摘要: skynet是以服务为主体进行运作的,服务称作为skynet_context(简称ctx),是一个c结构,是skynet里最重要的结构,整个skynet的运作都是围绕ctx进行的。skynet_server提供的api主要分两大类: 1.对ctx的一系列操作,比如创建,删除ctx等 2.如何发送消息 阅读全文

posted @ 2022-02-28 13:52 &大飞 阅读(322) 评论(0) 推荐(0) 编辑

skynet源码分析之skynet_handle(转)

摘要: skynet_handle是所有服务(ctx)的仓库(handle_storage),存储所有ctx。 struct handle_name { //ctx的handle与name对应关系 char * name; uint32_t handle; }; struct handle_storage 阅读全文

posted @ 2022-02-28 13:51 &大飞 阅读(106) 评论(0) 推荐(0) 编辑

skynet源码分析之skynet_module(转)

摘要: skynet_module提供一个模板来实现各种不同类型的c服务,比如,snlua(最常见),logger,gate等。 先说明两个linux系统函数: // dlopen函数用来获取so库的访问句柄。本质是将so库加载到内存中,并返回一个可以访问该内存块的句柄 void *dlopen(const 阅读全文

posted @ 2022-02-28 13:51 &大飞 阅读(110) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 ··· 46 下一页

导航