# Zinx-Server-Frame **Repository Path**: miao-wenhao/Zinx-Server-Frame ## Basic Information - **Project Name**: Zinx-Server-Frame - **Description**: 一个基于Golang的轻量级并发TCP服务器框架 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-10-25 - **Last Updated**: 2025-09-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 版本迭代 #### 1.ZinxV0.1 - 仅仅实现基本的C/S通信 #### 2.ZinxV0.2 - 针对基础的连接进行了封装 #### 3.ZinxV0.3 - 现在需要给用户提供一个自定义的Conn业务处理接口,显然我们不能把业务处理的方法绑死在HandleFunc中,我们需要定义一些interface{}来让用户填写任意格式的连接处理业务方法 - 我们现在需要把从客户端请求的连接信息和请求数据封装在一个Request的请求类中,这样的好处是我们可以从Request里得到全部客户端的请求信息,便于请求数据的处理和框架的扩展 #### 4.ZinxV0.4 随着架构逐步的变大,参数会越来越多,为了省去频繁修改参数的麻烦,接下来Zinx需要做一个加载配置的模块 #### 5.ZinxV0.5 - 针对消息的结构、消息的传输进行消息封装 - 自定义了消息发送格式,并设置对应的拆包封包方法,解决了TCP粘包问题 #### 6.ZinxV0.6 - 不同的请求数据应该有不同的业务处理方法,一个Router显然是不够的 - 针对路由进行多路由的重构开发 #### 7.ZinxV0.7 - 实现读写分离,原先是直接调用sendMsg()去发送信息,现在是将消息存放在管道,由StartWriter读取管道,再将数据发送 #### 8.ZinxV0.8 - 开辟任务池处理任务 - 假定有10W个业务请求,那么就会开辟30W个goroutine,其中20w是读写阻塞,不会过多占用CPU,但是剩下的10W会极大的影响CPU效率,需要优化 - 给Zinx添加消息队列和多任务Worker机制了。我们可以通过worker的数量来限定处理业务的固定goroutine数量,而不是无限制的开辟Goroutine,虽然我们知道go的调度算法已经做的很极致了,但是大数量的Goroutine依然会带来一些不必要的环境切换成本,这些本应该是服务器应该节省掉的成本。我们可以用消息队列来缓冲worker工作的数据 #### 9.ZinxV0.9 - 为Zinx框架增加连接个数的限定,超过限定采用拒绝策略拒绝新连接 - 给Zinx框架提供创建连接之后/销毁连接之前所要处理的一些业务,提供给用户注册这些业务 #### 10.ZinxV1.0 - 为了提高框架的可扩展性,在连接模块为用户扩展可以自定义属性的功能