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阅读
resty-redis-cluster下载地址 https://github.com/steve0511/resty-redis-cluster
转载 2023-07-11 20:18:17
35阅读
  最近拜读了 Linux高性能编程 这本书,结合skynet使用与理解,总结下skynet为何能成为流行框架。  1 使用了IO多路复用  2 在事件处理模型采用了EPOLL模拟的Proactor模式,即对于socket的处理以及数据的读写都是在socket线程完成的,worker线程只做逻辑处理。  3 在并发模式中采用的是 半同步/半反应堆(是模拟的,因为对数据的处理还是在socket线程
skynet.dispatch 是 Skynet 框架中用于注册消息处理函数的核心 API。它的作用是为特定类型的消息绑定处理逻辑,当服务收到该类型的消息时,自动调用对应的处理函数。以下是其详细解析: 1. 函数定义与参数 skynet.dispatch(type, func) type:消息类型( ...
转载 7天前
350阅读
# 在 Skynet 框架中使用 Redis 的完整指南 Redis 是一个开源的内存数据结构存储,可以用作数据库、缓存和消息代理。在 Skynet 框架中集成 Redis 可以提高应用的性能和可扩展性。下面是将 Redis 集成到 Skynet 框架中的步骤和代码示例。 ## 整体流程 | 步骤 | 描述
原创 9月前
255阅读
skynet.dispatch 使用详解
原创 精选 4月前
242阅读
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阅读
简单的 HTTP 和 REST 客户端,受到 Ruby rest-client 的启发。2、发送POST请求。
原创 2024-05-27 14:32:20
316阅读
github:https://github.com/doujiang24/lua-resty-kafka安装该客户端是使用纯lua脚本写的,借助了openresty的cosocket api实现了非阻塞IO。
原创 2022-06-19 21:03:36
5580阅读
方法Go 语言中同时有函数和方法。方法就是一个包含了接受者(receiver)的函数,receiver可以是内置类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。如下面的这个例子,定义了一个新类型Integer,它和int一样,只是为它内置的int类型增加了个新方法Less()type Integer int func (a Integer) Less(b Int
转载 2024-02-27 09:15:20
81阅读
最近我们的新游戏《天天来战》上了腾讯平台,由于瞬间用户量过大,发现了几个 bug。这几个 bug 都是在最后一周赶进度时编写业务的同学写的太仓促,在一些处理请求的流水线上使用了时间复杂度 O(n) 以上的算法导致的问题。这些时间开销大的操作,虽然并不常见,但操作误放在了和用户登录相关的服务中,导致一旦阻塞,使得用户登录受到影响。具体 bug 没什么好谈的,把业务拆分开,以及用 O(Log N) 或
转载 2023-09-09 08:50:51
214阅读
[code="lua"] local t = {} local function produce_thread() for i=1,5 do t[i] = i ngx.say("produce:",i) ngx.sleep(0.01) end end local function consume_thread() for i=1,5 ...
3c
原创 2023-04-11 00:28:01
30阅读
[code="lua"] local m, err = ngx.re.match("hello, 1234", "[0-9]+") if m then
原创 2023-04-11 00:21:19
71阅读
 fragment 懒加载在我们的应用中使用 tablayout + ViewPager + fragment 来呈现多标签页面,那么就会出现一个问题, viewpager 有预加载的功能,一般会加载 4 个所有的fragment ,也就是说,如果在 fragment 初始化的时候请求网络,那么就会同时有 4 个页面都会请求,但是用户只想查看 1 个页面,这就会造成流量的浪费,当然啦,现
转载 9月前
35阅读
tcp报文图示:序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编
转载 9月前
26阅读
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阅读
1. 安装 luarocks install lua-resty-template 2. 使用 luarocks install lua-resty-template 2. 使用 配置模板页面位置 有多种方式: a. 直接使用root 目录 代码如下: location /{ root html;
原创 2021-07-17 23:23:42
911阅读
lua-resty-repl 是一个方便的openresty 包,我们可以用来方便的调试openresty 以下是一个基于容器运行的一个试用 环境准备 dockerfile 主要是安装模块以及一个supervisord(方便运行的,使用此接管1号进程) FROM openresty/openrest
原创 2021-07-18 18:49:21
484阅读
  • 1
  • 2
  • 3
  • 4
  • 5