会介绍几个主要目录,第一个是Wind的整体目录,第二个是engine目录,存放引擎代码的目录,第三个是pkg目录,存放Wind的网络库代码。
Wind目录
- engine: engine是wind的核心目录,引擎所有功能的实现都放在下面。
- service:service目录是各个业务服务的代码,业务服务继承于engine目录下的Engine类。
- pkg:存放一些第三方库源码或者其他语言库的源码,目前wind的golang网络库wnet放在这里。
- script:主要存放一些批处理脚本,包含Python库的安装脚本,Wind的启动脚本。
- sdks:这里存放客户端网络协议的接口,现在有个unity的协议接口代码,之后会接入其他平台。
- builds:这里是存储动态库DLL和so文件的,一些服务器运行时要用到的数据也可以放到这里。
- deploy:这里会存放一些部署和配置文件,主要是Docker和K8s部署文件。
- example:案例存放文件夹,目前支持一个Python的世界频道。
engine目录
engine是wind的核心目录,服务器引擎大部分功能代码都在里面。
- SrvEngine.py:这个文件包含wind的核心类Engine,engine目录下的所有组件都是附加到Engine类里面的,如果你要研究Wind的源码,建议从Engine类开始。
- broker:broker是分布式消息队列组件,服务器间的消息转发由它来处理,目前支持Nats。
- client:客户端管理组件,一般与客户端直连的外部服务器才需要这个组件,Python端发送客户端消息就用这个发。
- codec:协议编码组件,目前支持Protobuf,协议定义和生成都在里面。
- config:引擎的配置问题,目前ETCD和NATS的地址就是写在里面的。
- handlers:引擎的RPC函数,所有服务共有的RPC函数,比如关服命令。
- logger:wind的日志模块,一些日志输出形式可以在这里配置。
- network:python端的网络组件,这里主要是与Golang端的网络库通信。
- registry:服务发现组件,目前接入了Etcd。
- selector:负载均衡组件,这里会接入随机算法、最大阈值算法和最小阈值算法。
- utils:主要存放一些处理函数。
pkg/wnet目录
wind的网络库代码。Wind的网络是由Golang写的,确保网络的高并发与高性能。