会介绍几个主要目录,第一个是Wind的整体目录,第二个是engine目录,存放引擎代码的目录,第三个是pkg目录,存放Wind的网络库代码。

Wind目录

image.png

  • 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的核心目录,服务器引擎大部分功能代码都在里面。

image.png

  • 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写的,确保网络的高并发与高性能。
    image.png