libevent:2.0.22 stable(download )
./configure -prefix=/usr
make
make install
if success:
ls -al /usr/lib | grep libevent
install: sudo apt-get install mysql-server-5.5
start: sudo start mysql
stop: sudo stop mysql
change port: sudo vi /etc/mysql/my.cnf(two point:client port and mysqld port)
make
./start_all.sh
support linux only
./zyserver/test/client -a address -p port -l msglen -t thread_num
more detail read the zyserver/test/client/readme
-
本服务器还未投入项目使用,存在很多问题,仅供学习。
-
fbs及3rd/flatcc这两个目录,本是为flatcc准备,后面没用上,暂时搁着,以后也许用得上
-
数据库方面,有redis的相关测试,考虑到redis和mysql的数据互转时会比较繁琐,暂时没有 考虑,另外,mysql的操作,也只是简单提供了接口,要用需要再封装优化
-
本服务器,设计思路如下:
-
source下均为纯C代码,日志、定时器、网络及数据库等模块,均在此实现
-
libevent使用单线程,一开始用的多线程,考虑到是多进程,就将其改了
-
每个进程都有三个线程,一个用于读写网络数据,一个用于处理数据,一个用于定时器(这部分应该可以优化)
-
framework是上层架构,C++实现,对source提供的接口进行封装
-
服务器的入口文件,在framework下的ServerMain.cpp,启动时读配置文件,连接对端服务 器及开启监听端口,并加载本服务的业务逻辑代码
-
写业务逻辑时,关注source下的ServantDef.h,各服务器关注各自的Interface,如dbmgr下 的Interface.h和Interface.cpp
-
每一个业务逻辑,都可以看成是一个servant,servant值在ServantDef.h定义
-
-
未完成:
-
各进程间,需要提供一个等待某个受关注的进程初始化完成的接口,以便后续逻辑处理
-
各进程间,需要处理等待重连的超时处理
-
对数据的封包解包,协议选取(google protobuf)
-
接收数据的容错处理,目前如果发送的数据格式不对,服务器会挂,因考虑以后会在内部做统一的数据处理,所以这点暂时没有保证,仅供测试
-
测试优化
-
-
建议
使用前,先跑一下start_all.sh和client,并仔细一下test/client/readme,然后看业务逻辑的实现,业务逻辑实现的例子,可以看dbmgr或gameserver或globalmgr(注意这几个不是规定死的,用户可以根据自己的需要做调整)