Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bingo

基于golang开发的高性能,高并发分布式框架。

  • 高性能,使用原生和第三方高性能包作为底,比如fasthttp, gogoprotobuf等
  • 高并发,基于go语言的特性,尽量保留了并发、异步处理,减少同步处理,包括RPC,service等
  • 可扩展型,每个模块都有接口定义,可以轻松实现扩展
  • 可灵活配置,使用配置文件可以轻松运行多个服务;日志也可配置
  • 提供多种网络及编解码方式,目前网络支持http, tcp, websocket,编解码包括json和protobuf

高性能组件

日志配置

#-------------------------------------------------------------------
# level 日志输出的最小等级
# 0: Info [默认]
# 1: Debug
# 2: Warning
# 3: Error
#-------------------------------------------------------------------
# outputType 输出类型
# 1: 控制台(Console)
# 2: 文件(File)
# 3: 控制台+文件(Console+File) [默认]
#-------------------------------------------------------------------
# logFileOutputDir 文件输出路径,默认"."
#-------------------------------------------------------------------
# logFileRollingType 日志文件分割方式
# 1: RollingDaily 按天分割一个日志文件 [默认]
# 2: RollingSize 按固定大小分割日志文件
# 3: RollingDaily+RollingSize
#-------------------------------------------------------------------
# logFileName 日志文件名,默认"bingo"
#-------------------------------------------------------------------
# logFileMaxSize 单个日志最大字节数,当包含RollingSize时生效,默认500MB
# * 可用的单位有 KB,MB,GB,TB,没有
#-------------------------------------------------------------------
# logFileScanInterval 定时扫描文件间隔,检查是否达到分割条件,单位秒,默认1秒
#-------------------------------------------------------------------
# logFileNameDatePattern 日志文件名中日期的格式,默认20060102,
# * 格式符合go标准日期格式化
#-------------------------------------------------------------------
# logFileNameExt 日志文件后缀,默认.log
#-------------------------------------------------------------------

#当前运行模式
workMode = dev

[dev]
level = 0
outputType = 3
logFileOutputDir = .
logFileRollingType = 3
logFileName = dev
logFileNameDatePattern = 20060102
logFileNameExt = .log
logFileMaxSize = 1KB
logFileScanInterval = 3

[prod]
level = 2
outputType = 2
logFileOutputDir = .
logFileRollingType = 3
logFileName = prod
logFileNameDatePattern = 20060102
logFileNameExt = .log
logFileMaxSize = 1GB
logFileScanInterval = 3

服务节点配置

{
  "domains": [                  -- 所有物理机内网ip地址,用于RPC通信使用
    "192.168.1.128"
  ],
  "node": [                     -- 所有服务节点
    {
      "name": "master",         -- 节点名称
      "model": "master",        -- 节点模型名称,启动时将绑定golang类型
      "domain": 0,              -- domains中的索引
      "rpc-port": 9092          -- RPC监听端口,如果是RPC服务端,需要配置此项
    },
    {
      "name": "auth",
      "model": "auth",
      "domain": 0,
      "service": [              -- 对外服务,比如网关、认证服务器需要对外服务
        {
          "name":"http8080",    -- 对外服务名称
          "type": "http",       -- 网络协议类型
          "port": 8080          -- 端口
        }
      ]
    },
    {
      "name": "gate1",
      "model": "gate",
      "domain": 0,
      "service": [
        {
          "name":"tcp9090",
          "type": "tcp",
          "port": 9090,
        }
      ],
      "rpc-port": 9091,
      "rpc-to": [               -- RPC要连接的节点,RPC客户端需要配置
        "master"
      ]
    },
    {
      "name": "game1",
      "model": "game",
      "domain": 0,
      "rpc-to": [
        "master",
        "gate1"
      ]
    }
  ]
}

启动实例

* echo为发布的可执行文件

# 启动echo.json中的master节点
echo start echo.json -n master 

# 启动echo.json中的所有节点,单机运行
echo start echo.json

# 命令帮助
echo -h 或者 echo

TODO

  • 停止运行节点
  • 节点管控节点

示例

bingo-example

开源协议

Bingo项目采用Apache License v2.发布

About

基于golang开发的高性能,高并发分布式框架。

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages