JavenLaw

热爱可抵岁月漫长,坚持可解道阻且长

Skynet指引文档(0)

文档介绍 文档目的 本文旨在了解Skynet框架结构及分析源码的具体实现。 ​ 使用Skynet已经有几年,期间学习过不少Skynet的资料,但都是零零碎碎的知识,没有形成完善的知识体系,也并没有系统地掌握Skynet。因此还是经常会有一些疑问困扰着自己,导致在使用Skynet框架的时候,对自己设计的服务器架构没有十足的信心。遇到Bug时也不能看透本质,找不到问题的关键,没有办法以最稳最快最正确的方式解决问题。同样也没办法做进一步的优化,不能做出最适合业务的设计。因此我想结合Skynet框架结构来阅读源码,详细了解源码如何实现Skynet框架结构的功能。在了解整体架构的前提下,继续去阅读源码,相信能加深对Skynet的认知,希望大家能喜欢。 ​ 通过这几年对Skynet的学习和使用,对Skynet的框架结构已经有了较熟悉的认知,这里主要感谢云风BLOG的记录以及GitHub仓库中WIKI的介绍,这对于新手学习Skynet框架非常有帮助。网上也还有还多分析Skynet的文章和资料,大家可以找到对比着看。 ​ 除此之外,设立了Skynet专题包括:信号、线程、网络、锁,原子操作、算法专题等。这些专题是从Skynet项目中提取出来的,是属于计算机编程的重要知识和技能点。特点是:知识通用且重要。这些专题涉及的知识点不止是在Skynet框架或者游戏行业中会用到,在编程中几乎都会涉及,因为这些本来就是计算机编程中基础且重要的部分,程序员都避开不了的,在很多地方都会用到的。 ​ 内容目录 【Skynet框架分解】 目的是完全了解并掌握Skynet框架,知道它的优缺点、清楚它能做什么、明白它擅长什么、了解它的特性、最后根据这些知识,继续阅读Skynet源码,探究代码是如何实现Skynet的功能和特性的。 ​ 【Skynet源码准备】 在开始阅读Skynet源码之前,需要准备一些必要的Linux环境和工具。当然,最重要的是了解Skynet的目录、编译、运行,因为在阅读源码的过程需要运行Skynet查看效果或者修改一些代码来验证自己的想法。 ​ 【Skynet源码赏析】 根据Skynet的项目源码,我会分模块、逐个分析其代码实现,这是最重要也是最复杂的部分。在整个学习生涯中,有种很大的感触是:有图的教程往往能更容易理解和掌握知识。这可以说是符合人类的记忆,学习特点的。在阅读Skynet代码的过程中我也有强烈的意愿:想用图形的方式来表达展示Skynet结构,能更容易理解框架结构和脉络。在这里我使用开源的draw.io来画图,并给出相应的图片。 ​ 【Skynet专题学习】 目的是跳出Skynet框架,提取出通用的、重要的计算机编程知识,因为这些才是最重要的计算机知识点。在计算机编程的世界中,这些知识点和技能是普遍的,即使换个开源项目,换个服务器框架,脱离游戏行业,这些专题的知识和技能, 设计的思路和优秀的代码风格,都是很有帮助的,面试过程中也是经常考核这些知识点。 ​ 【Skynet接口使用】 全面介绍,分析Skynet的API接口,了解其实现原理。 ​ 【Skynet最佳实践】 想必刚接触Skynet的新手,都是知道云风的BLOG网站的,云风在里面分享了自己很多Skynet相关的想法和思路,包括Skynet的设计思路、优化方案、代码设计等。这些文章不仅可以让你了解Skynet的来源,也能让你思考如何设计自己的框架,如何写出更加高效的代码。作为新手刚开始看文章或许不明白不理解,只有在工作有了经验后,反过头来看文章,才会明白为什么云风这么设计,代码为什么这样写,有什么好处。同时阅读Skynet Github中有质量的Issue,吸收同行实践的经验,做到最佳实践,避免踩坑。最后,因为Skynet也是在不断更新进步中,这中间也会参考最新的特性,最新优化的点进行分析。 ​ 【Skynet辅助工具】 在实际项目中只有Skynet框架是不足以完成工作的,一定会设计非常多的辅助工具,来帮我们搭建服务器框架。并且Skynet的设计理念就是简洁,所以我们一定是需要很多好用的辅助工具来帮助完成我们的需求。 ​ 【Skynet资料分享】 在学习Skynet的过程中,我查阅了很多资料,浏览过很多相关的网站。我认为网上的很多资料对我们学习和掌握Skynet都是非常有帮助的,里面有很多同行和前辈的经验分享,踩坑经历,项目实战等,对于我们学习Skynet和设计自己的架构都非常有帮助。一句话就是人多力量大,经过大家验证的东西一般比较可靠。这部分是分享一些高质量的网站、资料、视频等来帮助大家多方面,全方位,各角度地学习Skynet,让你更容易理解和掌握。 ​ 前期准备 知识准备 在正式开始之前,希望读者有以下的知识准备 ​ 1,基础的计算机知识 ​ 2,简单的C语言知识 ​ 3,了解Lua语言 ​ 对于第一点,相信很多人都能做到,这部分不要求你有很深的掌握或者应用,只需要了解知道,能理解即可。无论你是计算机相关专业出身,还是已经有编程经验,应该都具备最基础的计算机知识,否则你也不会看这篇教程。 ​ 对于第二点,Skynet框架底层是通过C语言实现的,会简单的C语言是必要的条件,否则无法对源码进行阅读。但同样的,也不要求你对C语言有多熟悉,因为在对源码进行阅读时,我会同时进行C语言相关语法的解释。 ​ 对于第三点,如果已经使用或者了解过Skynet的人来说,完全不是问题。对于没有接触过Lua语言的人来说,也不用担心,Lua语言是个很轻量的脚本语言,可以花几天时间学习一下也够用,后面可以遇到问题再查阅。 ​ 参考资料 云风的BLOG:云风的 BLOG (codingnow.com) 这个是Skynet作者云风的网站,里面有很多编程知识的分享,有关Skynet和Lua部分可以优先看看。 ​ Skynet的GitHub地址: Skynet官方项目 (GitHub.com) Skynet的官方项目地址,里面有WIKI,教程以及各类Issue,对使用Skynet有很大的帮助。 ​ 我的知乎主页:不是罗罗 - 知乎 (zhihu.com) 我的个人网站:JavenLaw - 个人网站 (luozhiwen.
2023-04-01 阅 读 全 文

随手记

各种经验建议,生活智慧,人生哲理听的实在是太多 我理解不了,也践行不来 记住这简单的几个就行了 日子就这么过吧 1,要保持身体健康 2,按自己的方式去度过一生 3,允许一切发生 4,活在当下,莫向外求 5,尽人事,听天命
2023-01-23 阅 读 全 文