GoLang EASY 微服务游戏框架 01

1 Overview

EASY 是一个go语言编写的框架,兼容性支持go版本1.19+,go mod 方式构建管理。它是一个轻型,灵活,自定义适配强的微服务框架。

它支持多种网络协议TCP,websocket,UDP(待完成),http(直接引入gin即可),前三者的路由规则可以一致,http是有很大不同。

默认支持protobuf/json 两种编码规则,同样以组件接口的方式实现,你可以自定义自己的编码去引入替换,实现接口即可。

包含RPC,服务发现,用ETCD和GRPC,配置级别代码即可同时适用一套服务发现。docs目录下有etcd 的docker构建说明文档和样例。GRPC默认的服务发现为负载均衡方案,没发现支持指定某个服务器连接单独通信。因此在EASY中,我们单独写了一套可自由适配的负载,可以实现Robin radom 或直接选择某一个远程连接(适合游戏分服部署)。

2 传送门

GitHub - slclub/easy: A simple and fully functional network framework. Including TCP websocket grpc and service discovery and so on.

3 EASY readme

4 License MIT

5 设计思想

项目中有用leaf,受到一些限制和不足,以及一些理念不适合。并发性能,兼容性能等问题。当然它本身的组件并没有多少。想要搭建一个完备的项目工程还欠缺很多。

基于go语言的高性能,高并发,易于控制的goroutine(携程),对于单线程封装,并不用像其他语言那么繁琐封装,原生语言直接使用稳定性都很有保障了。

微服务:精简而稳定,中间件的理念更是贯穿了几乎所有web框架(游戏为了性能这一环节我们没有去加),长链接的服务要求更高的性能以及反应速度,传输速率等。

RPC:服务间通信,这是一种比较成熟的服务之间的通信协议,没有必要单独再开发服务间的通信协议以及流程。GRPC + ETCD 更是成熟的服务发现架构,它本身的服务架构对负载均衡策略比较友好,适用与游戏,我们补充下即可。

组件化:尽量精简的组件接口,Router相关的就有两个,编码/解码组件,监听服务组件,网络组件。TCP传输规则组件,日志等

相关推荐
Grassto2 天前
12 go.sum 是如何保证依赖安全的?校验机制源码解析
安全·golang·go·哈希算法·go module
Grassto4 天前
11 Go Module 缓存机制详解
开发语言·缓存·golang·go·go module
程序设计实验室5 天前
2025年的最后一天,分享我使用go语言开发的电子书转换工具网站
go
我的golang之路果然有问题5 天前
使用 Hugo + GitHub Pages + PaperMod 主题 + Obsidian 搭建开发博客
golang·go·github·博客·个人开发·个人博客·hugo
啊汉6 天前
古文观芷App搜索方案深度解析:打造极致性能的古文搜索引擎
go·软件随想
asaotomo7 天前
一款 AI 驱动的新一代安全运维代理 —— DeepSentry(深哨)
运维·人工智能·安全·ai·go
码界奇点8 天前
基于Gin与GORM的若依后台管理系统设计与实现
论文阅读·go·毕业设计·gin·源代码管理
迷迭香与樱花8 天前
Gin 框架
go·gin
Irene19918 天前
HTTP 请求方法选择与 RESTful 实践(对比 GraphQL、RPC)
rpc·restful·http请求·grpc·graphql
只是懒得想了8 天前
用Go通道实现并发安全队列:从基础到最佳实践
开发语言·数据库·golang·go·并发安全