Zinx 是一个基于Golang的轻量级并发TCP服务器框架,具体使用领域包括:后端模块的消息中转、长链接游戏服务器、Web框架中的消息处理插件等
- 技术栈
Go TCP Channel Goroutine protobuf
- 技术功能
- 对TCP连接进行封装,实现连接创建的自定义控制,
- 借助channel实现消息队列和任务池,有效减少高并发下协程的数量和cpu的消耗
- 对消息封装,采用定长数据包格式,有效解决TCP粘包问题
- 基于zinx服务器的长连接功能,实现游戏中玩家上线,下线,移动以及世界聊天功能。
- 项目介绍:
旅游民宿项目是一个使用go-zero开发的微服务项目,用户可以使用微信小程序登录,浏览民宿和推荐民宿,使用微信支付进行下单,入住民宿。
- 技术栈 go-zero nginx mysql redis asynq go-queue kafka docker
- 技术功能
- 使用nginx作为微服务项目网关,进行反向代理,实现业务分发
- 用户模块支持账号密码登录以及微信小程序登录
- 借助go-zero内置sqlc自动管理缓存,通过singleflight控制线程访问数量,减轻数据库压力
- 订单模块使用延时队列实现订单超时自动关闭,支付模块使用微信支付借助kafka修改订单状态并推送至微信小程序
**GeeWeb**
- 项目介绍:
仿照极客兔兔博客实现仿Gin框架,实现过程中深入理解了Web框架运行的基本原理,主要实现了HTTP基础,上下文,前缀树路由,路由分组,中间件以及错误恢复等功能
- 技术功能:
- 基于go语言的context包实现上下文管理,封装http包下的request以及服务端和客户端连接信息
- Trie树:基于分隔符对每个请求路径中的字段进行分割构建前缀路由树来代替路由map的使用
- 路由匹配:设计并实现了自定义的路由匹配规则,支持基于路径和请求方法的路由匹配
- 调用net包下的http方法监听端口, 实现ServeHTTP接口,并使用Pool复用Context,提高框架整体性能