🐳 Introduction

This commit is contained in:
渔民小镇 2024-08-17 22:32:21 +08:00
parent 0223a51e23
commit fe4c5b304c
1 changed files with 27 additions and 22 deletions

View File

@ -67,7 +67,7 @@
只做真的完全式开源,拒绝虚假开源,售卖商业版,不搞短暂维护!
承诺项目的维护周期是十年起步, 2022-03-01起至少十年维护期
承诺项目的维护周期是十年起步, 2022-03-01 起,至少十年维护期!
提供高质量的使用文档!
@ -81,6 +81,14 @@ ioGame 是一个轻量级的网络编程框架,适用于**网络游戏服务
<br/>
**ioGame 架构简图**
![架构简图](https://raw.githubusercontent.com/iohao/ioGameResource/main/images/ioGame.jpg)
<br/>
使用 ioGame可以显著的帮助企业减少巨额成本。在文档中"**成本**"关键字提到了很多次,各个阶段均有关联,包括了学习、研发、测试、部署、扩展、投入 ...等各阶段。在同等资源的竞争下,使用 ioGame 可为公司节省更多的资源,从而提高了自身的生存率。更重要的是避免了为其他公司做嫁衣的可能性,具体可阅读[成本分析案例](https://www.yuque.com/iohao/game/gd5l3b0y0h027kcv#aSk5x)。
<br/>
@ -511,6 +519,10 @@ ioGame 在打包、内存占用、启动速度等方面也是优秀的。打 jar
在学习成本方面ioGame 的学习成本非常低,可以说是**零学习成本**,即使没有游戏编程经验,也能轻松上手。开发者只需掌握普通的 java 方法或 webMVC 相关知识,就能用框架开发业务。框架不要求开发者改变编码习惯,而是自身适应开发者的需求。
ioGame 在架构上解决了传统框架所产生的 **N\*N 问题**[与传统架构对比](https://www.yuque.com/iohao/game/cklv8p)。传统架构在扩展机器时需要借助很多第三方中间件Redis、MQ、ZooKeeper ...等,才能满足整体架构的运作。通常,只要引入了需要安装的中间件才能做到扩展的,那么你的架构或者说框架,基本上与轻量级无缘了。
@ -527,11 +539,22 @@ ioGame 在架构上解决了传统框架所产生的 **N\*N 问题**[与传
[生态规划](https://www.yuque.com/iohao/game/ddbovlbhb3g6bno2)方面,我们的游戏逻辑服是支持独立运行的,只需接入 Broker游戏网关就可以为玩家和其他游戏逻辑服提供功能上的扩展与增强。我们可以将一些**游戏逻辑服组件化**,并制作成相对通用的组件,**从而实现功能模块化的可能性**。这么做有几个优点:
集群方面ioGame 的 Broker (游戏网关)采用无中心节点、[自动化的集群设计](https://www.yuque.com/iohao/game/qmo56c),所有节点平等且自治,不存在单点故障。集群能够**自动管理和弹性扩缩**,节点加入或退出时,能够自动保证负载均衡和数据一致性,不影响服务可用性。
在分布式方面ioGame 的逻辑服使用了分布式设计思想,将服务器分为[游戏对外服](https://www.yuque.com/iohao/game/wotnhl)、[游戏逻辑服](https://www.yuque.com/iohao/game/ensevx)等不同层次,并且每一层都有明确的职责和接口。这样可以提高代码可读性和可维护性,并且方便进行**水平扩展**。
在分布式开发体验方面,通常在开发分布式应用时是需要启动多个进程的。这会让调试与排查问题变得非常困难,从而降低开发者的效率、增加工作量等,这也是很多框架都**解决不了的问题**,但 ioGame 做到了ioGame 支持多服单进程的启动方式,这使得开发者在开发和调试分布式系统时更加简单。
在[生态规划](https://www.yuque.com/iohao/game/ddbovlbhb3g6bno2)方面,我们的游戏逻辑服是支持独立运行的,只需接入 Broker游戏网关就可以为玩家和其他游戏逻辑服提供功能上的扩展与增强。我们可以将一些**游戏逻辑服组件化**,并制作成相对通用的组件,**从而实现功能模块化的可能性**。这么做有几个优点:
1. 避免一些重复开发的工作量。
2. 减少各功能模块的耦合。
3. 更符合单一职责的设计,将相对通用的功能扩展成一个个的【功能逻辑服】。比如:公会逻辑服、好友逻辑服、登录逻辑服、抽奖逻辑服、公告逻辑服、排行榜逻辑服 ...等。
3. 更符合单一职责的设计,将相对通用的功能扩展成一个个的**功能逻辑服**。如,公会逻辑服、好友逻辑服、登录逻辑服、抽奖逻辑服、公告逻辑服、排行榜逻辑服...等。
4. 由于模块功能是独立,那么将来可以对任意的功能逻辑服进行扩容,且不需要改动任何代码。
5. 这些组件化后的功能逻辑服就好比一件件武器,积累得足够多时就形成了自己的生态武器库,可以更好的帮助公司与同行竞争。
6. 代码泄漏机率更小。传统的游戏项目通常采用单机结构,把所有的代码放在一个目录中。这样做有很大的风险,因为如果代码泄漏了,就会泄漏整个项目的内容。当功能模块化后,可以让不同的开发人员只负责自己的游戏逻辑服模块,从而避免代码泄漏的风险和影响。
@ -542,12 +565,12 @@ ioGame 在架构上解决了传统框架所产生的 **N\*N 问题**[与传
ioGame 具备[全链路调用日志跟踪](https://www.yuque.com/iohao/game/zurusq)特性这在分布式下非常的实用。该特性为每个请求分配一个唯一标识并记录在日志中通过唯一标识可以快速的在日志中过滤出指定请求的信息。ioGame 提供的全链路调用日志跟踪特性更是强大,**支持跨机器、跨进程**。简单的说,从玩家的请求进来到结束,无论该请求经过了多少个游戏逻辑服,都能精准记录。
在通讯方式方面大部分框架只能支持推送广播这一类型的通讯方式ioGame 则提供了多种类型的通讯方式,通过对各种通讯方式的组合使用,可以简单完成以往难以完成的工作,并且这些通讯方式都支持跨进程、跨机器通信,且具备全链路调用日志跟踪。这些通讯方式分别是
1. [请求响应](https://www.yuque.com/iohao/game/krzxcmgoispw0gl8)(单次请求处理)
2. [广播](https://www.yuque.com/iohao/game/qv4qfo)(推送)
3. [单个逻辑服间的相互通讯](https://www.yuque.com/iohao/game/anguu6)(可跨机器通信、可跨进程通信)
@ -589,18 +612,6 @@ ioGame 具备[全链路调用日志跟踪](https://www.yuque.com/iohao/game/zuru
在集群方面ioGame 的 Broker (游戏网关)采用无中心节点、[自动化的集群设计](https://www.yuque.com/iohao/game/qmo56c),所有节点平等且自治,不存在单点故障。集群能够**自动管理和弹性扩缩**,节点加入或退出时,能够自动保证负载均衡和数据一致性,不影响服务可用性。
在分布式方面ioGame 的逻辑服使用了分布式设计思想,将服务器分为[游戏对外服](https://www.yuque.com/iohao/game/wotnhl)、[游戏逻辑服](https://www.yuque.com/iohao/game/ensevx)等不同层次,并且每一层都有明确的职责和接口。这样可以提高代码可读性和可维护性,并且方便进行**水平扩展**。
在学习成本方面ioGame 的学习成本非常低,可以说是**零学习成本**,即使没有游戏编程经验,也能轻松上手。开发者只需掌握普通的 java 方法或 webMVC 相关知识,就能用框架开发业务。框架不要求开发者改变编码习惯,而是自身适应开发者的需求。
在[同进程亲和性](https://www.yuque.com/iohao/game/unp26u)方面,在同一进程内,不同 Netty 实例之间的通信,是通过内存进行传输的,不需要经过网络传输,数据传输速度极快。同进程亲和性指的是,优先访问同进程内的游戏逻辑服,当同进程内没有能处理请求的游戏逻辑服时,才会去其他进程或机器中查找能处理请求的游戏逻辑服;简单点说,框架对于请求的处理很智能,会优先将请求给同进程内的逻辑服消费。
@ -613,19 +624,13 @@ ioGame 具备[全链路调用日志跟踪](https://www.yuque.com/iohao/game/zuru
在分布式开发体验方面,通常在开发分布式应用时是需要启动多个进程的。这会让调试与排查问题变得非常困难,从而降低开发者的效率、增加工作量等,这也是很多框架都**解决不了的问题**,但 ioGame 做到了ioGame 支持多服单进程的启动方式,这使得开发者在开发和调试分布式系统时更加简单。
与前端对接联调方面ioGame 提供了[游戏文档生成](https://www.yuque.com/iohao/game/irth38)的辅助功能,可以做到**代码即对接文档**。简单地说当业务代码编写完后框架会自动生成最新的文本文档。ioGame 除了能提供文本文档的生成外,还能支持生成与客户端联调的代码(即代码文档)、并且是可扩展的。通常,客户端联调代码有:
1. 支持生成 C# 客户端的联调代码,通常用在 Unity、Godot 客户端,具体可阅读 [SDK C# 代码生成](https://www.yuque.com/iohao/game/fgrizbhz4qqzd1vl)。
2. 支持生成 TypeScript 客户端的联调代码,通常用在 cocos、laya 客户端,具体可阅读 [SDK TypeScript 代码生成](https://www.yuque.com/iohao/game/mywnvkhemv8wm396)。
与前端对接联调方面ioGame 提供了[生成与客户端联调的代码](https://www.yuque.com/iohao/game/mywnvkhemv8wm396)。代码生成可为客户端开发者减少巨大的工作量,并可为客户端开发者屏蔽路由等概念。直接面向接口编程,面向接口编程的几个优点
1. 帮助客户端开发者减少巨大的工作量。
2. 为双方联调**减少心智负担**。联调代码使用简单,与本地方法调用一般丝滑。
3. 帮助客户端开发者屏蔽与服务器交互部分,将更多的精力放在真正的业务上。