吾知网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 8429|回复: 1
打印 上一主题 下一主题

skynet云风服务端框架

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-19 18:40:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
http://forthxu.com/blog/skynet.html


skynet是云风编写的服务端底层管理框架,底层由C编写,配套lua作为脚本使用,可换python等其他脚本语言。skynet主要工作是管理注册服务,并开启多线程协调服务之间的调用和通讯。

skynet一般用于开发游戏服务端程序。

本页面持续更新,主要收集学习skynet有关的任何内容,如果你有好的资料或者你在研究skynet,可以将资料或链接地址发给我。QQ:263967133 email:forthxu@gmail.com

skynet入门实践》 断断续续编写中
简单介绍:PPT快速了解skynet
入门例子:基于skynet的聊天室

腾讯大讲堂(视频、PPT)云风:基于 Actor 模式的开源框架
github:skynet

skynet线上使用的数据,解答性能问题

  • 入门
  • 概述
  • 服务
  • 系统配套功能
  • so服务
  • 通过snlua.so调用的lua服务
  • 库,主要提供给lua服务用
  • 源码阅读
  • 代码概述
  • Makefile文件
  • skynet配置
  • skynet服务管理及功能函数
  • logger.so
  • master.so和harbor.so
  • socket和gate.so
  • snlua.so
  • skynet.lua(封装skynet给lua使用)
  • lua通过.so使用c函数
  • 使用protocbuf通讯
  • 使用bjson通讯
  • 编写服务
  • so服务
  • snlua启动的服务
  • 游戏框架
  • 源码下载

skeynt QQ群:340504014
我建的问答网站(提问可前往此处)

2014-12-13聚会视频
http://pan.baidu.com/s/1gd1mPjX 密码:ogj3
http://www.youku.com/playlist_show/id_23199360.html



沙发
 楼主| 发表于 2018-10-19 18:46:17 | 只看该作者
这是一个轻量级的为在线游戏服务器打造的框架。但从社区 Community 的反馈结果看,它也不仅仅使用在游戏服务器领域。Uses 收集了很少一部分使用 skynet 的项目,但实际项目要多得多。欢迎你把你的项目也加到这个列表中。
如果你对 skynet 毫无了解,那么可以先阅读一下 GettingStarted。由于 skynet 本身并不复杂,同时建议你阅读一下源代码。参考 Blogs 会对理解设计思路和发展历史有所帮助。还有一些同学自发编写的第三方文档 ThirdPartyDocument 供参考。
Build skynet 非常简单,动手编译一个试着玩一下是个很好的开始。examples 和 test 目录下有些例子。如果你想自己动手做二次开发,你可以从理解 Bootstrap 开始,一开始不要尝试集群 Cluster
虽然 skynet 的核心是由 C 语言编写,但如果只是简单使用 skynet ,并不要求 C 语言基础。但你需要理解 Actor 模式的工作方式,把你的业务拆分成多个服务来协同工作。Lua 是必要的开发语言,你只需要懂得 Lua 就可以使用 LuaAPI 来完成服务间的通讯协作。另外,Snax 可能会是更简单的方式。关于服务间共享数据,除了用消息传递的方式外,还可以参考 ShareData 。skynet 已提供的功能可以参考 APIList
当然只有这些仅仅可以让 skynet 内部的服务相互协作。要做到给客户端提供服务,还需要使用 Socket API ,或者使用已经编写好的 GateServer 模板解决大量客户端接入的问题。或许你还需要为 C/S 通讯制订一套通讯协议,skynet 并没有规定这个协议,可以自由选择。当然你也可以看看 Sproto
通过这套 Socket API以及更方便的 SocketChannel(更容易实现 socket 池和断开重连) ,可以让 skynet 异步调度外部 socket 事件。对外部独立服务的访问,最好都通过这套 API 的封装。如果外部库直接调用系统的 socket ,很可能阻塞住 skynet 的工作线程,发挥不出性能。目前 redis 和 MongoDB 都有内置的封装好的 driver 可供使用。也有社区的同学封装了 MySQL 库。
如果你找不到你需要的外部组件的 skynet driver ,可以自己来编写,社区欢迎你的贡献。当然,你也可以写一个独立程序和外部组件沟通,再和 skynet 通讯。通讯协议可以自行定义,也可以使用 Http协议。另有第三方的库可以选择1 支持 websocket。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|吾知网 ( 粤ICP备13013563号-1 )

GMT+8, 2024-11-22 11:13 , Processed in 1.109383 second(s), 7 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表