grapeNet

module
v0.0.0-...-5771147 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 21, 2021 License: Apache-2.0

README

   ______                                ____  _____        _      ______           
 .' ___  |                              |_   \|_   _|      / |_  .' ___  |          
/ .'   \_| _ .--.  ,--.  _ .--.   .---.   |   \ | |  .---.`| |-'/ .'   \_|   .--.   
| |   ____[ `/'`\]`'_\ :[ '/'`\ \/ /__\\  | |\ \| | / /__\\| |  | |   ____ / .'`\ \ 
\ `.___]  || |    // | |,| \__/ || \__., _| |_\   |_| \__.,| |, \ `.___]  || \__. | 
 `._____.'[___]   \'-;__/| ;.__/  '.__.'|_____|\____|'.__.'\__/  `._____.'  '.__.'  
                        [__|                                                        

Go Report Card made-with-Go Open Source Love svg2

简介(Introduction)

Go语言编写轻量级网络库 (grapeNet is a lightweight and Easy Use Network Framework)

可用于游戏服务端、强网络服务器端或其他类似应用场景,每个模块单独提取并且拥有独立的使用方法,内部耦合性较轻。

其实GO语言曾经有过很多强架构的框架,比如GoWorld之类的,已经足够了,但是我会将库用于各种轻量级应用不需要过于复杂的内容,所以我设计了GrapeNet,目的是模块独立化。 你可以拆开只使用其中很小的模块,也可以组合成一个服务端,并且在架构中设计也较为轻松,至于热更新的问题,目前脚本数据支持热更新,并且是自动的,只要跑一下UPDATE即可,程序本身稍后测试后发布(仅支持LINUX)。

本库更像是一个日常服务端开发的轻量级工具库集合,用的开心噢。

本库内的大部分子模块均用于实际线上游戏产品、防御类产品以及支付类产品中,经过一定的检验,可以放心使用。

网络库已经经过多个版本调整,可以基本使用。

慢慢更新中,很多坑要填,根据近期测试,除LUA库外,其他库均可直接用于商业产品。

注意:由于ETCD V3 CLIENT不支持1.9以下版本的GO环境,所以ETCD库不在对1.8以下版本支持,TravisCI的BUILD状态也不支持1.9以下版本。 仅仅支持 Go 1.10以及以上版本。

安装

go get -u github.com/koangel/grapeNet/...

模块表(Function)

  • Lua脚本绑定管理(可绑定任何类型的函数、线程安全且自动推倒类型)
  • 日志库(底层采用Seelog)
  • 函数管理系统(可以根据任何类型参数将其与函数绑定并互相调用)
  • 流处理
  • Tcp网络
  • Kcp网络(基于KCPGO的网络基础库)
  • Websocket网络 (基础版,兼容版)
  • Websocketv2网络实验版 (使用zero-copy upgrader,更低的损耗和更好效率,不兼容v1版,开启压缩)
  • Codec(任意类型注册对象并在其他位置动态创建该对象)
  • CSV序列化模块(通过Tag可以直接序列化到对象或对象序列化为CSV)
  • Sign生成库(自动将结构或map[string]interface{}排序后生成一个sign,可以自行设置KEY)
  • Etcd简易封装,针对Watcher做任意参数的监听callback(多Key监听)
  • Continers容器库,游戏用背包容器、带有锁的并行LIST等
  • Utils多种简易辅助库的集合(三元运算符、数值转换、轻并行执行库、启动Daemon、平均数容器、有限列表)

依赖第三方

  • Seelog (github.com/cihub/seelog)
  • Gopher-lua(github.com/yuin/gopher-lua)
  • Gopher-luar(layeh.com/gopher-luar)
  • Websocket旧版使用 (github.com/gorilla/websocket)
  • Websocketv2使用 (github.com/gobwas/ws)
  • Etcd ClientV3(github.com/coreos/etcd)
  • Bson (gopkg.in/mgo.v2/bson)
  • Daemon (github.com/takama/daemon)
  • Kcp-Go (github.com/xtaci/kcp-go)

不依赖任何CGO内容,lua本身也是纯GO实现。

文档(Documentation)

基本用法文档

其他文档我会陆陆续续逐步完善并补充。

其他模块

暂无文档 有待补全

其他同作者开源项目

鸣谢(Thanks)

Use Jetbrains Ide for project

saythanks Generic badge Generic badge

Directories

Path Synopsis
自动反射和解析CSV文件,对于有列的文件则通过列名解析 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/8/16
自动反射和解析CSV文件,对于有列的文件则通过列名解析 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/8/16
自动根据注册类型根据协议结构反射对应类型 线程安全类型 通过类型名称快速New一个对象指针 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/7/26
自动根据注册类型根据协议结构反射对应类型 线程安全类型 通过类型名称快速New一个对象指针 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/7/26
唯一ID生成器 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/7/12
唯一ID生成器 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/7/12
常用于管理游戏背包、技能列表的容器 适用于手游、页游等多种类型 适用于格子类BOX容器 线程安全、适用于大并发场景 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/12/10 一款带锁的列表 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/12/10 定时执行函数的的数据容器 version 1.0 beta by koangel email: jackliu100@gmail.com 2021/01/09 计算一个周期内数据是多少,超过这个周期会直接清理数据 主要用于统计、限制以及周期性的内存计算 version 1.0 beta by koangel email: jackliu100@gmail.com 2021/01/09
常用于管理游戏背包、技能列表的容器 适用于手游、页游等多种类型 适用于格子类BOX容器 线程安全、适用于大并发场景 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/12/10 一款带锁的列表 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/12/10 定时执行函数的的数据容器 version 1.0 beta by koangel email: jackliu100@gmail.com 2021/01/09 计算一个周期内数据是多少,超过这个周期会直接清理数据 主要用于统计、限制以及周期性的内存计算 version 1.0 beta by koangel email: jackliu100@gmail.com 2021/01/09
基于github.com/yuin/gopher-lua的lua管理器 实现基本的热更新理论 lua层 可做配置 可做逻辑脚本 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/7/9 基于github.com/yuin/gopher-lua的lua管理器 实现基本的热更新理论 lua层 可做配置 可做逻辑脚本 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/7/9 基于github.com/yuin/gopher-lua的lua管理器 实现基本的热更新理论 lua层 可做配置 可做逻辑脚本 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/7/9 基于github.com/yuin/gopher-lua的lua管理器 实现基本的热更新理论 lua层 可做配置 可做逻辑脚本 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/7/9
基于github.com/yuin/gopher-lua的lua管理器 实现基本的热更新理论 lua层 可做配置 可做逻辑脚本 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/7/9 基于github.com/yuin/gopher-lua的lua管理器 实现基本的热更新理论 lua层 可做配置 可做逻辑脚本 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/7/9 基于github.com/yuin/gopher-lua的lua管理器 实现基本的热更新理论 lua层 可做配置 可做逻辑脚本 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/7/9 基于github.com/yuin/gopher-lua的lua管理器 实现基本的热更新理论 lua层 可做配置 可做逻辑脚本 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/7/9
直接根据类型生成指定的MD5或SHA1的SIGN 用于API或任何参数校验,时间参数t建议自己加在结构中 基本算法为 value组合+_+key 或 key=value组合+_+key 建议传入的是一个结构体,不要是map之类的,因为map是无序的,如果传入MAP自动按照名称排序一次 实现自动化以后可以少写好多代码并且可以验证一个包或一个API的参数是否合法 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/09/08
直接根据类型生成指定的MD5或SHA1的SIGN 用于API或任何参数校验,时间参数t建议自己加在结构中 基本算法为 value组合+_+key 或 key=value组合+_+key 建议传入的是一个结构体,不要是map之类的,因为map是无序的,如果传入MAP自动按照名称排序一次 实现自动化以后可以少写好多代码并且可以验证一个包或一个API的参数是否合法 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/09/08
用于快速转换Bytes到类型或类型到bytes 非自写算法,常规C语言写法位移 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/7/8
用于快速转换Bytes到类型或类型到bytes 非自写算法,常规C语言写法位移 version 1.0 beta by koangel email: jackliu100@gmail.com 2017/7/8
轻量级单对象并行运行池 会产生一定的数据COPY version 1.0 beta by koangel email: jackliu100@gmail.com 2017/12/18 部分位置用于取代CHAN的无限无阻塞队列 version 1.0 beta 需要特别的LOCKFREE队列 ,尝试 github.com/yireyun/go-queue by koangel email: jackliu100@gmail.com 2018/04/13
轻量级单对象并行运行池 会产生一定的数据COPY version 1.0 beta by koangel email: jackliu100@gmail.com 2017/12/18 部分位置用于取代CHAN的无限无阻塞队列 version 1.0 beta 需要特别的LOCKFREE队列 ,尝试 github.com/yireyun/go-queue by koangel email: jackliu100@gmail.com 2018/04/13
Websocket Network version 1.0 beta by koangel email: jackliu100@gmail.com 2017/8/3
Websocket Network version 1.0 beta by koangel email: jackliu100@gmail.com 2017/8/3
Websocket v2 Network version 2.0 beta by koangel email: jackliu100@gmail.com 2020/04/02
Websocket v2 Network version 2.0 beta by koangel email: jackliu100@gmail.com 2020/04/02
samples

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL