发表了博客
2018/06/20 14:12

skynet源码分析:模块

之前已经说过skynet的是做什么的,现在开始从模块上研究skynet的源码。 skynet各层表现 从上大概就清楚skynet的“内部” 而skynet源码目录结构如下: 3rd:第三方代码,有lua和jemalloc等。 lualib:使用lua写的库 lualib-src:使用C写并封装给lua使用的库 service:使用lua写的skynet的服务模块 service-src:使用C写的skynet的服务模块 skynet-src:skynet核心代码 skynet重要模块 gate.so:为整个skynet提供socket功能(解决...

0
0
2020/09/21 12:04

skynet学习序章

自己最近正在使用 skynet,为了方便今后的学习和使用,我决定开展一遍关于skynet的应用,前期主要是以skynet的一些api和基本的应用为主,后面主要是深入了解skynet的框架代码,也介绍一下,skynet在开发过程中,主要应用到的技术特点。这次文章主要是以学习交流为主,对于文章中出现的错误或者理解有误等问题,希望各位网友指出,我会及时更新和修改。本次文章主要是为了让新手快速掌握skynet的框架,很多内容并不会详细的介绍,...

0
0
发表于服务端专区
2019/07/19 18:37

Skynet 服务创建流程

## Skynet 服务创建流程 根据[设计综述](https://blog.codingnow.com/2012/09/the_design_of_skynet.html) Skynet 是为了让服务器充分利用多核优势,将不同的业务放在独立的执行环境中处理。 Skynet 核心功能是加载一个 C 模块(动态库),模块用数字 id 标识,作为其 handle ,模块被称为**服务 service** 。服务间可以自由发送消息。每个模块可以向 Skynet 框架注册一个 callback 函数,用来接收发给它的消息。 每个服务是被一...

0
6
发表了博客
2020/10/17 07:26

(0)skynet 序章

自己最近正在使用 skynet,为了方便今后的学习和使用,我决定开展一遍关于skynet的应用,这篇文章主要是面对新手为主,从软件的安装,语言的介绍,到skynet的一些api和基本的应用。也介绍一下,skynet在开发过程中,主要应用到的技术特点。这次文章主要是以学习交流为主,对于文章中出现的错误或者理解有误等问题,希望各位网友指出,我会及时更新和修改。本次文章主要是为了让新手快速掌握skynet的框架,很多内容并不会详细的介...

0
0
发表了博客
2013/06/01 23:15

skynet 中的 read all 函数

skynet 云风写的 ,。。。C 的代码简洁多了 个人觉得不做界面没必要用到 C++ 这个比较常用 贴一下吧 static int readall(int fd, void * buffer, size_t sz) {   for (;;) {     int err = recv(fd , buffer, sz, MSG_WAITALL);     if (err < 0) {       if (errno == EAGAIN || errno == EINTR)         continue;       break;     }     return err;   }   perror("Socket error");   exit(1); }...

0
0
发表了博客
2018/05/24 11:14

Skynet:Debug Console的扩展

起因 最近上线服务器遇到了一些问题,上个月CPU暴涨的问题,那个经查验是死循环导致endless loop了。 这周又遇到了mem占用达到96%的问题,在debug console里调用了gc之后,跌落至85%左右,稳定了一天。 但是在debug console里面调用list的时候,发现很多service数量有点异常,所以打算扩展一下debug console来统计各个service的数量。目前已经初步完成,特记录于此。 Debug Console debug_console源代码的位置是skynet/service/...

0
0
发表了博客
2019/04/11 12:11

白话skynet第一篇

当你走过一个坐在自己店门前的杂货商面前。走过一个吸着烟斗的守门人面前,走过一个马车夫面前时,请你给我描绘一下这个杂货商、守门人和马车夫,他们的姿态,他们的外貌,要用画家那样的细节描绘出他们的精神本质,使我不至于把他们同任何别的杂货商人、任何别的守门人、任何别的马车夫混同起来,还请你只用一句话就让我知道马车夫有一匹马同其他的马是不一样的。 ——福楼拜指导莫泊桑   从今天开始,我给自己设定了几个小目...

0
0
发表了博客
2018/06/20 15:30

skynet:热更新 lua 代码

skynet有两种方法热更新lua代码,clearcache和inject,文章分别对这两种方法做说明。 clearcache热更新 讲这个前,先说明下skynet代码加载的事情。因为skynet的每个服务都是一个独立的lua虚拟机,对于同一份lua代码,N个服务就要加载lua文件N次,所以,skynet做了优化,代码文件只需要加载一次到内存,其他服务复制这份内存就可以了,省了读取lua文件和解析lua语法的过程。 clearcache 使用很简单,启动skynet,连接到其控制台:...

0
0
发表了博客
2019/07/18 17:15

skynet启动流程及调用服务

3.基本原理 3.1启动流程 1.skynet-src/skynet_main.c 这个是main()函数所在,主要就是设置一下lua的环境、默认的配置、打开config配置文件,并修改默认配置。最后调用skynet_start()函数,这个函数在skynet_start.c文件中。 2.skynet-src/skynet_start.c这个文件主要是初始化Skynet的各个模块,包括harbor节点、handle服务ID、mq消息队列、module加载动态链接库、timer时钟、socket套接字以及加载一些服务logger日志服务、maste...

0
0
发表了博客
2018/04/25 19:52

skynet源码分析之热更新

skynet有两种方法支持热更新lua代码:clearcache和inject,在介绍skynet热更新机制之前,先介绍skynet控制台,参考官方wiki https://github.com/cloudwu/skynet/wiki/DebugConsole 1. skynet控制台 想要使用skynet控制台,需启动debug_console服务skynet.newservice("debug_console", ip, port),指定一个地址。skynet启动后,用nc命令就可以进入控制台,如图。 debug_console服务启动后,监听外部连接(第3行)。 第15行,当打...

0
0
发表了博客
2018/11/17 16:26

skynet的timer似乎有问题

skynet.timeout 传进去 number 范围内的数值但是会溢出, 调查发现 skynet.timeout 调用的是 c 的方法: c.intcommand("TIMEOUT",ti) 对应的C方法中会把传入的 number 转换成 int32: static int lintcommand(lua_State *L) {   struct skynet_context * context = lua_touserdata(L, lua_upvalueindex(1));   const char * cmd = luaL_checkstring(L,1);   const char * result;   const char * parm = NULL;   char tmp[64];  // for...

1
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页