一、Skywalking介绍  skywalking是国产开源框架,一款分布式观察性分析平台和应用性能管理系统,提供分布式追踪,服务网格遥测分析,量度集合和可视化;对于一个大型的几十个,上百个微服务,skywalking能解决什么问题:  1.如何串联整个调用链路,快速定位问题?  2.如何缕清各个微服务之间的关系?  3.如何进行各个微服务之间的性能分析?  4.如何跟踪整个业务流程的调用处理顺
先插一句题外话,skynet中核心架构使用c语言,除此之外还大量使用了lua语言。这里不介绍luaskynet在c中嵌入一层lua,主要是为了利用lua的协程,同步的方式实现异步的性能。关于协程,之前有过介绍。skynet中,io操作是由c完成的,lua是做业务层面的组装工作。 之前有过介绍,skynet中,有网络消息,这里介绍网络框架和网络消息的处理。网络模型skynet 采用 reactor
skynet网络剖析 1.tcp 2.epoll 3.socket线程 4.gate服务 5.netpack 解包打包 6.service_gate.c 原理 数据流大概如下 thread_socket --> skynet_socket_poll -->forward_message skynet_start.c skynet节点启动时会启动一个线程专门处
前言skynet是基于C做任务调度和消息传递, 基于lua做业务(消息)处理的框架。只要使用的平台c编译器支持c99,就能够编译运行skynet。 所以理论上skynet可以运行在嵌入式领域的。虽然skynet非常好用,但是skynet却不太好入门。 如果不充分理解skynet的原理,那么会提高不少的维护成本。因此编写此文档旨在更了解skynet的原理。 关于skynet框架的C语言部分网上已经很
转载 2024-07-25 13:10:29
156阅读
本博客基于结项时的项目报告,写于2021年9月中下旬,内容稍有落后。代码Merge前发布的英文博客中包含了更详细易懂的例子,如有需要请参考。该项目来自于开源软件供应链点亮计划 - 暑期2021的Apache IoTDB - Apache SkyWalking适配器项目。插件的设计和开发工作都得到了IoTDB的黄向东老师(@jixuan1989)和SkyWalking的吴晟老师(@wu-sheng)
服务消息分发和回应同样在同一个目录建立3个文件(config,main.lua,service2.lua) config文件参考上一节main.lua代码:local skynet = require "skynet" -- 启动服务(启动函数) skynet.start(function() -- 启动函数里调用Skynet API开发各种服务 print("======Server st
       我们知道,云风大神的skynet是一个比较成熟的服务器解决方案。由于大多数程序员都是习惯在window下进行代码开发,有必要在windows下搭建一套skynet的开发环境。但是遗憾的是官方一直没有提供window下直接编译运行的版本,虽然也有大神改造过window下用VS编译的版本,但后续的更新还是会存在问题。    &n
在实现业务逻辑的过程中,各个逻辑一般会抽象成一个服务,例如游戏中的登录服务,访问数据库服务,创建房间服务等等.服务与服务之间肯定是要通信和交互的,例如登录的时候要请求数据库验证.skynet是怎么实现两个服务的通信和交互的呢?为了突出主干,我简化了lua服务代码,A服务调用B服务:A服务代码(bootstrap.lua):skynet.start(function() local addr =
转载 2024-07-16 20:43:01
94阅读
对于你不了解的框架或者引擎,介绍再多的逻辑结构都好像有点茫然的感觉。所以小编认为,最有效的方式就是搞清楚框架启动流程的步骤,让自己心中有一条线可以牵引着。以下内容转载于网友分享的文档里说明。对小编来说,如获珍宝,在这里也分享给大家。启动流程的相关源代码在skynet-src\skynet_main.c 和skynet-src\skynet_start.c 这两个文件中。skynet_main.c
转载 2024-04-22 10:41:29
122阅读
Skynet起源  Skynet起源于云风在简悦研发的第一个项目,研发的过程记录在博客里面,这个研发笔记第一次提到skynet 是框架的开发代号。Skynet综述  Skynet 设计综述提到Skynet核心解决什么问题,不解决什么问题以及核心功能设计细节Skynet 核心解决什么问题  需求:希望游戏服务器(但 skynet 不仅限于用于游戏服务器)能够充分利用多核优势,将不同的业务放在独立的执
Skynet入门实例一、下载和编辑二、运行解析三、理解skynet3.1 配置文件说明:3.2 目录结构:四、skynetAPI五、skynet实例程序4.1 PingPong4.2 聊天室(Echo的升级,收到的信息广播给所有在线玩家)4.3 做留言板,使用数据库4.4 监控服务状态4.5 使用节点集群建立分布式系统六、使用skynet注意事项5.1 协程的作用5.2 扣除金币的Bug 一、下
本篇主要介绍在Lua服务里调用skynet网络层底层接口的流程,Lua层的api主要在lualib/skynet/socket.lua,可参考官方wiki https://github.com/cloudwu/skynet/wiki/Socket。通过一个简单的例子说明Lua服务是如何最终调用到网络层底层接口的
原创 2022-04-25 13:41:47
754阅读
简介  在分布式系统当中,想要监控服务与服务之间调用耗时,或者是查问题的时候,不能像向单机那种形式去查询.查找了一段时间发现目前市场上用的是skywalking,由华为大佬开源的项目。摘自skywalking简介:一个开放源代码的可观察性平台,用于收集,分析,聚合和可视化来自服务和云本机基础结构的数据   SkyWalking为服务,服务实例,端点提供可观察性功能。服务,实例和端点这两个术语在今天
转载 2024-08-14 18:00:48
60阅读
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设计原理一、多核并发编程方式二、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
141阅读
最近我们的新游戏《天天来战》上了腾讯平台,由于瞬间用户量过大,发现了几个 bug。这几个 bug 都是在最后一周赶进度时编写业务的同学写的太仓促,在一些处理请求的流水线上使用了时间复杂度 O(n) 以上的算法导致的问题。这些时间开销大的操作,虽然并不常见,但操作误放在了和用户登录相关的服务中,导致一旦阻塞,使得用户登录受到影响。具体 bug 没什么好谈的,把业务拆分开,以及用 O(Log N) 或
转载 2023-09-09 08:50:51
214阅读
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
  • 2
  • 3
  • 4
  • 5