首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏python教程

    skynet源码解析(一)——编译运行skynet

    skynet是一款基于C跟lua的开源服务端并发框架,这个框架是单进程多线程模型,主要应用于游戏服务端领域,是lua大神云风所写的。 本文不涉及框架过多的理论知识,只是简单的介绍一下如何编译以及运行skynetskynet开源项目地址: https://github.com/cloudwu/skynet 源码下载 git clone https://github.com/cloudwu/skynet.git 正常的话编译是需要一定的时间的,如果编译成功之后就会产生以下3个新的文件,其中skynet就是我们需要的可执行文件,这也是最核心的一个文件。 那么我们如何验证编译的这个文件是真的没问题呢? 那么我们就需要运行一下skynet这个可执行文件。 运行可执行文件 ./skynet example/config 一定要记得需要加个运行参数,这个是运行所需要的配置文件。

    1.2K10编辑于 2024-01-10
  • 来自专栏python3

    skynet---3---看看

    #include "skynet.h" #include "skynet_harbor.h" #include "skynet_server.h" #include <string.h> #include " struct skynet_context; uint32_t skynet_handle_register(struct skynet_context *); void skynet_handle_retire #ifndef SKYNET_MODULE_H #define SKYNET_MODULE_H struct skynet_context; typedef void * (*skynet_dl_create ; skynet_dl_create create; skynet_dl_init init; skynet_dl_release release; }; void skynet_module_insert (struct skynet_module *mod); struct skynet_module * skynet_module_query(const char * name); void * skynet_module_instance_create

    84020发布于 2020-01-06
  • 来自专栏全栈程序员必看

    SpringBoot框架_skynet框架详解

    1.SpringBoot优点 • Create stand-alone Spring applications • 创建独立Spring应用 • Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files) • 内嵌web服务器 • Provide opinionated ‘starter’ dependencies to simplify your build configuration • 自动starter依赖,简化构建配置 • Automatically configure Spring and 3rd party libraries whenever possible • 自动配置Spring以及第三方功能 • Provide production-ready features such as metrics, health checks, and externalized configuration • 提供生产级别的监控、健康检查及外部化配置 • Absolutely no code generation and no requirement for XML configuration • 无代码生成、无需编写XML SpringBoot是整合Spring技术栈的一站式框架 SpringBoot是简化Spring技术栈的快速开发脚手架

    2.2K10编辑于 2022-09-25
  • 来自专栏python教程

    skynet源码解析(二)——启动流程

    启动流程的相关源代码在skynet-src\skynet_main.c 和skynet-src\skynet_start.c 这两个文件中。 skynet_main.c 主要是设置环境和加载配置文件,最后调用skynet_start.c 文件中的 skynet_start() 函数启动 Skynet 服务程序。 12、 skynet_start()传人配置参数并启动 Skynet 的各个组件和线程。这个函数定义在 skynet_start.c 文件中。 4、skynet_handle_init()初始化句柄模块,用于给每个 Skynet 服务创建一个全局唯一的句柄值。这个函数定义在 skynet_handle.c 中。 5、skynet_mq_init()初始化消息队列模块,这是 Skynet 的主要数据结构。这个函数定义在 skynet_mq.c 中。

    93910编辑于 2024-01-10
  • 来自专栏后端开发技术

    TCP半关闭状态分析和skynet对半关闭状态的支持

    四、skynet 网络封装支持半关闭状态skynet 网络层支持半关闭状态。skynet 采用 reactor 网络编程模型;reactor 网络模型是一种异步事件模型。 五、测试skynet对半关闭的支持main.lua的代码实现:local skynet = require "skynet" local socket = require "skynet.socket" /skynet/luaclib/?.so" package.path = "./skynet/lualib/?.lua;./?. /skynet all: cd $(SKYNET_PATH) && $(MAKE) PLAT='linux' clean: cd $(SKYNET_PATH) && $(MAKE) clean项目结构 /skynet/skynet config启动client.lua的方式:./skynet/3rd/lua/lua .

    32800编辑于 2025-07-16
  • 来自专栏后端开发技术

    源码分析Skynet的Actor对等调度:理解不一样的任务调度机制

    该函数定义在 /skynet-src/skynet_start.c 中。 它定义在 /skynet-src/skynet_server.c 中。 该函数定义在 /skynet-src/skynet_server.c 中。 该函数定义在 /skynet-src/skynet_server.c 中。 -- /lualib/skynet.lua function skynet.start(start_func) c.callback(skynet.dispatch_message) -

    35000编辑于 2025-07-09
  • 来自专栏全栈程序员必看

    java启动命令参数_centos配置java环境变量

    问题解决 通过jps命令找对对应的进程号 [root@swk-207 ~]# jps -lm |grep xk 17743 /xxx/server/skynet/lib/skynet-cloud-xloader -2.1.0.1007.jar –skynet.action.jagent.file=/xxx/server/skynet/lib/jagent –skynet.action.boot.file=xk-process Sl 112:12 java -Dloader.path=/xxx/server/skynet/plugin/xk-proc/plugins -Djava.tmp.dir=/xxx/server/skynet /plugin/xk-proc/tmp -Djava.io.tmpdir=/xxx/server/skynet/plugin/xk-proc/tmp -Dfile.encoding=UTF-8 -Dxxx.dir.log =/xxx/server/skynet/plugin/xk-proc/logs -Dskynet.jagent.config.location.uri=http://10.5.3.207:6230/skynet

    72910编辑于 2022-09-22
  • 来自专栏后端开发技术

    一个轻量级游戏服务器框架Skynet:深入了解其设计原理和使用

    二、skynet2.1、skynet简介它是一个轻量级游戏服务器框架,但也不仅仅用于游戏。 local skynet = require("skynet") skynet.start(function() -- body print("hello skynet") end) 3.2、skynet网络消息skynet 当中采用一个 socket 线程来处理网络信息;skynet 基于 reactor 网络模型。网络消息驱动actor运行。需要skynet.socket模块。 示例:main.lualocal skynet = require "skynet" local socket=require "skynet.socket" skynet.start(function main.lualocal skynet = require("skynet") skynet.start(function() -- body print("hello skynet

    2.8K01编辑于 2025-05-12
  • 来自专栏Golang语言社区

    go实现一个简单的游戏服务器框架(lotou)起源

    最近一直想学习一些关于游戏服务器的知识,显示看了一下云风的skynet框架,从而对于一个游戏服务器框架有了一个基本概要了解。先来说说我对于skynet的一些理解吧。 skynet理解 skynet只完成了服务器最核心的一部分功能,必须消息分发,必须服务的创建、销毁以及服务间的通信。 skynet中最核心的两个部分,网络和消息分发。 在看完skynet之后,当然也只是一知半解,不过基本还是达到了可以使用的程度了。 ,也已经有很多人用skynet写了游戏服务器,但是中最要的一点还是我不太习惯动态语言,使用lua来写代码,让我很没有底气。 通过几天的go语言学习,我决定用它来实现自己的第一个游戏服务器框架,因为以前没有怎么接触过游戏服务器编程,所以就只好模拟一下skynet的行为了。

    1.9K120发布于 2018-03-27
  • 来自专栏Golang语言社区

    再谈游戏服务器架构

    三、服务器底层框架skynet skynet的设计思想见《Skynet 设计综述》: 我希望我们的游戏服务器(但 skynet 不仅限于用于游戏服务器)能够充分利用多核优势,将不同的业务放在独立的执行环境中处理 如果需要自主逻辑,则可以利用 Skynet 系统提供的 timeout 消息,定期触发。 Skynet 提供了名字服务,还可以给特定的服务起一个易读的名字,而不是用 id 来指代它。 但是这里有个疑问,服务都以so的形式挂在skynet上,那么这些服务从哪里获取玩家、怪物、NPC等object的数据? 是从skynet中获得还是直接从sharedb中获得,出于性能的考虑是不是要把skynet和sharedb部署在同一台物理主机上?这样一来就会增加设计和具体逻辑的耦合度。 看了《Skynet 集群及 RPC》,感觉skynet上的服务是要通过skynet来获得玩家的数据,这样操作会不会导致数据被复制很多次,不知道最终的效率是否受到影响?

    4.9K141发布于 2018-03-22
  • 来自专栏python3

    Python游戏服务器开发日记(一)目标

    我个人极度喜欢skynet框架,由于很多原因,skynet框架几乎不可能修改为Python脚本。 原因除了众所周知的GIL(Python全局锁)问题以外,还有Python的Interpreter是极为重量级的,如果像skynet的独立lua_state那样使用,怕是什么都不做也能把内存全部用光。 但是,在研究了skynet之后,我认为以后必然会大量参考skynet的成熟做法,甚至copy很多C语言层的代码。毕竟和高手对架构的理解,和C语言经验上,实在是差的太多。

    2.4K10发布于 2020-01-13
  • 来自专栏山行AI

    LocalAI——一款可在消费级硬件上本地运行 LLMs的AI应用

    · Issue #6 · go-skynet/LocalAI · GitHub[90])• 将我们的 golang 绑定上游到 llama.cpp (Go bindings · Issue #351 · · Issue #69 · go-skynet/LocalAI · GitHub[94])• 启用从策划画廊自动下载模型,仅使用免费许可证模型,直接从 WebUI 下载。 id=35726934 [76] good-first-issue: https://github.com/go-skynet/LocalAI/issues? · Issue #6 · go-skynet/LocalAI · GitHub: https://github.com/go-skynet/LocalAI/issues/6 [91] Go bindings · Issue #69 · go-skynet/LocalAI · GitHub: https://github.com/go-skynet/LocalAI/issues/69 [95] Ettore

    10.4K30编辑于 2023-08-10
  • 来自专栏高性能服务器开发

    如何实现一个定时器?

    定时器初始化 // skynet_start.c // skynet 启动入口 void skynet_start(struct skynet_config * config) { ... skynet_timer_init(); ... } // skynet_timer.c void skynet_timer_init(void) { // 创建全局timer结构 TI 启动时,会创建一个线程专门跑定时器,每帧(0.0025s)调用skynet_updatetime() // skynet_start.c static void * thread_timer(void // skynet_timer.c void skynet_updatetime(void) { ... id=1633338040568845450&wfr=spider&for=pc Skynet GitHub https://github.com/cloudwu/skynet skynet源码剖析 https

    1.9K71发布于 2021-04-08
  • 来自专栏小锋学长生活大爆炸

    【教程】搭建咸鱼之王私服,附源码下载

    /skynet ../loginserver/prodconfig //启动登录服务器 ./skynet .. 下载源码包:https://gitee.com/mirrors/skynet? 注意事项 从网上下载开源版本 skynet,编译好后将 skynet 可执行文件复制到 /data/proj/skynet 下进行替换,可绕过 key 验证 如果需要定制引擎功能,要保证 /data/proj /skynet/cservice/caoi.so 不被覆盖 使用扩展方式开发 C 代码扩展引擎功能 3. /skynet ../loginserver/prodconfig //启动登录服务器 ./skynet ..

    3.3K00编辑于 2024-05-25
  • 来自专栏香菜聊游戏

    开源的服务器框架你都知道吗

    本文收集一些比较常用的 github上star和fork有一定数量的较为完整的框架 ---- skynet skynet 云风大神的框架这个基本上使用很多的, c+lua的框架。 skynet只能算是网络层的轮子但是因为其众多的用户还是很不错的,主要的思想是基于Actor模型,Actor之间通信的唯一机制就是消息传递。 https://github.com/cloudwu/skynet ---- pomelo ?

    3.5K20发布于 2021-05-26
  • 来自专栏新智元

    NeurIPS首届多智能体竞赛,中国团队获Learning组冠军

    最终,基于启元决策智能平台训练的Navocado战胜了来自加拿大的Skynet,拿下Learning组冠军。Skynet的团队来自加拿大近百人规模的科技公司Borealis.ai。 从Skynet在官网公开的实现方案来看,Skynet模型在决策过程中加入了很多人工干预(比如限制炸弹人不能往火焰里走),这和Navocado模型在整个训练和决策过程中不加人工干预、自主学会各项技能的方式也有较大的差距 NeurIPS多智能体竞赛终局:第600步(视频中最下栏显示),Navocado控制的一个炸弹人(黑色脸谱)在最正确的时机使用踢炸弹的方式将Skynet的一个炸弹人(白色脸谱)炸死。 来源:启元世界 视频中展示的是Navocado和Skynet争夺学习组冠军的最后一战。其中,两个黑色脸谱的炸弹人属于Navocado,而两个白色脸谱的炸弹人属于Skynet。 在第600步(视频中最下栏显示),Navocado控制的一个炸弹人在最正确的时机使用踢炸弹,将Skynet的一个炸弹人炸死。

    1.1K30发布于 2018-12-29
  • 来自专栏后端开发技术

    时间驱动:探索计时器方案和革命性的时间轮技术

    网络事件和定时事件在不同线程中处理;例如:skynet。 2.1、网络事件和定时事件在一个线程中处理 网络事件和定时事件可以进行协同处理;即网络事件和定时事件在一个线程中处理。 3.3.6、应用场景 (1)Linux内核的定时任务 (2)游戏服务器框架 skynet (3)分布式消息队列 kafka (4)java网络库netty 四、从skynet源码看时间轮 游戏服务器框架 ,skynet。 4.1、运行环境 skynet使用单reactor,应用于CPU密集型场景;skynet封装有actor的抽象进程,里面有消息对立;skynet有自己的线程池,线程池从actor中取出就绪的定时任务,多线程执行定时任务业务逻辑 skynet对整个结构加锁,但时间轮的时间复杂度为O(1),可以使用自旋锁,在效率上不会产生影响。 skynet在添加节点和取出任务时需要加锁。

    45310编辑于 2024-09-21
  • 来自专栏CNCF

    SlideShare案例研究:使用Fluentd呈现统一数据

    这是Slideshare自己对其数据架构的描述 http://engineering.slideshare.net/2014/04/skynet-project-monitor-scale-and-auto-heal-a-system-in-the-cloud 使用Fluentd作为关键组件,SlideShare实施了一个名为Skynet的新监控系统。 Skynet收集应用程序日志和系统指标,并将它们传递给Fluentd,以便可靠地收集和聚合到MongoDB中,其内部仪表板使用MongoDB。

    1.5K20发布于 2019-12-04
  • 来自专栏Golang语言社区

    服务器开发语言比较

    下比较的基础都是基于一种编程语言+一定的第三方或者自己编写的网络库和底层进行的,Skynet稍微特殊,但总体比较合适放到比较中来 C# 开发效率:Windows下可以通过VisualStudio进行开发 加载忽略不计) Web对接:非常方便, 代码精简 崩溃处理:崩溃后以命令行方式打印出栈,程序内可以捕获任何崩溃错误并继续运行 网络库编写难度:简单,比C socket更简单 第三方网络库及框架数量:偏少 Skynet 从发文时的项目对这些语言使用率来说,Java,Erlang,C++编写的服务器较多,Golang,JavaScript,C#是第二梯队,Skynet由于上手不是很容易,所以仅有两位数的团队在使用,但总体表现还是比较出色的 Golang这些对web有优势的语言进行混合语言开发 对于新团队,开发效率,上手度和部署效率是优先选择的,C#,Golang,JavaScript这些新兴语言会让你事半功倍 对于大规模无需选服的服务器, Skynet

    4K130发布于 2018-03-26
  • 来自专栏Golang语言社区

    服务器开发语言比较

    以下比较的基础都是基于一种编程语言+一定的第三方或者自己编写的网络库和底层进行的,Skynet稍微特殊,但总体比较合适放到比较中来 C# 开发效率:Windows下可以通过VisualStudio进行开发 加载忽略不计) Web对接:非常方便, 代码精简 崩溃处理:崩溃后以命令行方式打印出栈,程序内可以捕获任何崩溃错误并继续运行 网络库编写难度:简单,比C socket更简单 第三方网络库及框架数量:偏少 Skynet 从发文时的项目对这些语言使用率来说,Java,Erlang,C++编写的服务器较多,Golang,JavaScript,C#是第二梯队,Skynet由于上手不是很容易,所以仅有两位数的团队在使用,但总体表现还是比较出色的 Golang这些对web有优势的语言进行混合语言开发 对于新团队,开发效率,上手度和部署效率是优先选择的,C#,Golang,JavaScript这些新兴语言会让你事半功倍 对于大规模无需选服的服务器, Skynet

    2.3K50发布于 2018-03-21
领券