actor在skynet中称为模块,每个模块由皮囊和骨骼组成。皮囊承载用户逻辑,骨骼承载内部框架逻辑。皮囊(skynet_module)皮囊在框架中用skynet_module对象表示,实现在skynet-src/skynet_module.c中,代表一个动态库.下文用sm来称呼.先来看看sm的定义,在skynet-src/skynet.h中1 typedef void * (*skynet_dl            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-31 16:57:30
                            
                                90阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            skynet设计原理一、多核并发编程方式二、skynet2.1、skynet简介2.2、环境准备2.3、编译安装2.4、Actor 模型2.5、消息队列2.6、actor公平调度三、skynet的使用3.1、第一个skynet程序3.2、skynet网络消息3.3、skynet定时消息3.4、skynet actor间消息四、vscode调试skynet总结 一、多核并发编程方式(1)多线程。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-17 05:46:34
                            
                                143阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1、节点和服务        在下图所示的服务端系统中,每个Skynet进程(操作系统进程)都称为一个节点,每个节点都可以开启数千个Lua服务,每个服务都是一个Actor。不同节点可以部署在不同的物理机上,提供分布式集群的能力。     在上图中,我们开启了3个节点和5个服务的服务端系统。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-04 20:13:00
                            
                                168阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            skynet是云风团队发布的一个开源的服务器框架。底层采用C编写,逻辑层通常用lua。非常适合作为游戏的服务器框架。学习skynet,可能涉及到操作系统,window,linux,游戏服务器等方方面面的知识,是一个不可多得的开源项目。作为菜鸟的希望把学习的过程记录下来,无论对于面试和工作都有莫大的帮助。 官方的指南 https://github.com/cloudwu/skynet/wi            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-17 18:15:40
                            
                                385阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            skynet为了简化服务的编写,推出了snax框架,源码里也有一个例子pingserver。这是snax原创文章的第一篇,所以先就分析snax框架里的interface.lua源码,它的实现应用了一个闭包中的upvalue注入技巧。凡是框架都得遵循框架的约定,snax有两个大的约定            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-04-25 13:59:26
                            
                                453阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            最近我们的新游戏《天天来战》上了腾讯平台,由于瞬间用户量过大,发现了几个 bug。这几个 bug 都是在最后一周赶进度时编写业务的同学写的太仓促,在一些处理请求的流水线上使用了时间复杂度 O(n) 以上的算法导致的问题。这些时间开销大的操作,虽然并不常见,但操作误放在了和用户登录相关的服务中,导致一旦阻塞,使得用户登录受到影响。具体 bug 没什么好谈的,把业务拆分开,以及用 O(Log N) 或            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-09 08:50:51
                            
                                214阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            本篇主要介绍在Lua服务里调用skynet网络层底层接口的流程,Lua层的api主要在lualib/skynet/socket.lua,可参考官方wiki https://github.com/cloudwu/skynet/wiki/Socket。通过一个简单的例子说明Lua服务是如何最终调用到网络层底层接口的            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-04-25 13:41:47
                            
                                754阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            skynet刚开始是单进程多线程的,它是由一个一个的服务组成的。在skynet上做开发,实际上就是在写服务。服务与服务之间通过消息队列进行通信。做为核心功能,Skynet 仅解决一个问题:把一个符合规范的 C 模块,从动态库(so 文件)中启动起来,绑定一个永不重复(即使模块退出)的数字 id 做为其 handle 。模块被称为服务(Service),服务间可以自由发送消息。每个模块可以向 Sky            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-27 16:50:04
                            
                                152阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Skynet是一个开源的分布式系统工具,用于构建高性能、高可靠性、可扩展性的服务。而Protobuf是Google开发的一种用于结构化数据序列化的协议,通常用于在不同系统间进行数据交换。在Kubernetes中使用Skynet和Protobuf可以帮助我们更好地管理和通信不同部署在集群中的应用程序。
整个实现"Skynet Protobuf"的流程可以分为以下几个步骤:
| 步骤 | 操作            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-04-29 12:22:58
                            
                                153阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在skynet中使用mongodb,在 在配置文件config.mongodb中看到启动的是main_mongodb.lua main_mongodb.lua文件内容local skynet = require "skynet"
skynet.start(function()
	print("Main Server start")
	local console = skynet.newservi            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-25 14:21:30
                            
                                170阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            tcp报文图示:序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编            
                
         
            
            
            
            以下是skynet源码:structgroupnode{inthandle;structskynetcontextctx;structgroupnodenext;};structgroup{intlock;structgroupnodenode[HASHSIZE];};structgroupG=NULL;inlinestaticvoidlock(structgroupg){while(synclo            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2020-08-11 11:02:35
                            
                                754阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            千呼万唤始出来,终于有时间开始分析skynet网络部分的代码了。skynet是个网络服务器框架,网络才是他的核心所在,读懂了网络模块的代码才算是对skynet有深入的了解。花了两天时间读了网络部分的代码,底层网络模型是基于epoll的,这个在llinux高并发上是最高效的模型。底层网络的各种操作或响应(诸如accept,msg,close)也是通过发送消息告知lua层的回调函数,这点与前面讲的服务            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-12 09:12:21
                            
                                131阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            对于你不了解的框架或者引擎,介绍再多的逻辑结构都好像有点茫然的感觉。所以小编认为,最有效的方式就是搞清楚框架启动流程的步骤,让自己心中有一条线可以牵引着。以下内容转载于网友分享的文档里说明。对小编来说,如获珍宝,在这里也分享给大家。启动流程的相关源代码在skynet-src\skynet_main.c 和skynet-src\skynet_start.c 这两个文件中。skynet_main.c            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-22 10:41:29
                            
                                122阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            转自:请求回应模式是与外部交互最常用的模式之一。通常协议设计方式有两种:1.每个请求包对应一个回应包,有tcp保证时序,先请求的先回应,但不必收到回应才发送下一个请求,redis的协议就是这种类型;2.每个请求带一个唯一的session标识,回应包也带这个标识。这样每个请求不一定都需要回应,且不用遵循先请求先回应的时序。mongodb的协议就是这种类型。skynet提供socketchannel库            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-22 21:19:37
                            
                                266阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            要想认识一个框架,首先要做的就是让它跑起来。skynet是一款基于C跟lua的开源服务端并发框架,这个框架是单进程多线程模型,主要应用于游戏服务端领域,是lua大神云风所写的。本文不涉及框架过多的理论知识,只是简单的介绍一下如何编译以及运行skynet。skynet开源项目地址:https://github.com/cloudwu/skynet源码下载git clone https://githu            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-18 08:30:39
                            
                                354阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            skynet 是一个为网络游戏服务器设计的轻量框架,采用单进程,多线程架构。底层是c,中间层和上层都是lua。基于actor模型,使用消息队列进行内部通信。 简单说,可以把 skynet 理解为一个简单的操作系统,它可以用来调度数千个 lua 虚拟机,让它们并行工作。每个 lua 虚拟机都可以接收处理其它虚拟机发送过来的消息,以及对其它虚拟机发送消息。每个 lua 虚拟机,可以看成 sk            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-23 00:30:52
                            
                                150阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            前言skynet是我们游戏服务端的底层框架,当初在技术选型的时候仔细阅读过它的源码,发现它是一个C语言的工程典范。大多数游戏服务端,要么使用C++,要么使用java,使用C是非常少见的。但是skynet通过C和Lua的结合,实现了一个高效的游戏框架,C层没有多余的一堆三方库,只有紧凑的核心结构,提供最核心的消息处理框架;Lua层用来写游戏逻辑,降低了开发门槛。目前skynet在阿里游戏大量使用,据            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-25 09:26:53
                            
                                985阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            前言 skynet是我们游戏服务端的底层框架,当初在技术选型的时候仔细阅读过它的源码,发现它是一个C语言的工程典范。大多数游戏服务端,要么使用C++,要么使用java,使用C是非常少见的。但是skynet通过C和Lua的结合,实现了一个高效的游戏框架,C层没有多余的一堆三方库,只有紧凑的核心结构,提            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-01-12 11:50:00
                            
                                455阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            skynet是一个轻量级的游戏服务器框架;实现了actor的并发模型;可以基于skynet框架去实现业务。多核并发编程多线程在一个进程中开启多线程,为了充分利用多核,一般设置工作线程的个数为 cpu 的核心数;memcached 就是采用这种方式;多线程在一个进程当中            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2022-04-25 12:02:12
                            
                                702阅读
                            
                                                                             
                 
                
                                
                    