emberengine

module
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Jan 21, 2025 License: Apache-2.0

README

分布式服务框架

这是一个基于 Actor 模型的分布式服务框架,服务之间通过消息进行数据传递。

框架特点:

  • 服务默认单线程运行,支持多线程扩展。
  • 结构灵活、模块化,便于开发和维护。

框架结构

本框架由以下三部分组成:

  1. Node(节点)
    每个节点对应一个独立进程,可以运行多个服务。

  2. Service(服务)
    每个服务是一个 Actor,以协程形式运行,支持多线程执行。服务由若干模块组成。

  3. Module(模块)
    模块是最小的业务单元,依附于服务运行,负责实现具体功能。


集群功能

  1. 集群管理
    每个节点内置集群模块,用于发现和管理注册到集群中的服务。

  2. 服务注册与发现

    • 所有实现 RPC 开头接口的服务,都会自动注册到集群中。
    • 服务注册与发现通过 etcd 实现(还未做成接口,后续再说)。
  3. 远程调用

    • 基于 rpcx 实现跨节点远程调用。
版本说明:

目前为第一版,后续慢慢补充

已经完成的内容:
1. 节点、服务、模块封装
2. 集群管理
3. 配置管理
4. 定时器(新增了时间轮支持)
5. 日志(支持自定义日志时间粒度和自动切分粒度的配置,过期自动删除日志的配置)
6. pprof
使用说明
详细使用,请查看example文件夹的使用示例

可使用的环境变量
TODO

后续规划:
1. 集群认证机制
2. 服务健康监控
3. 服务的限流策略
4. 更加模块化的设计,将大部分的底层内容做成插件,可以自由扩展和配置使用
5. 增加服务热更新的功能
6. 日志的异步模式,包括输出扩展(自定义输出器,目前实际是有的,只是没有暴露出来,也没有办法动态更新)

感谢 github.com/duanhf2012/origin 大佬提供的开源项目。本框架参考了其设计理念,做了一些适合自己项目的优化。

感谢 https://github.com/RussellLuo/timingwheel 多层时间轮。


Directories

Path Synopsis
engine
actor
Package actor @Title 请填写文件名称(需要改) @Description 请填写文件描述(需要改) @Author yr 2024/9/4 下午5:53 @Update yr 2024/9/4 下午5:53
Package actor @Title 请填写文件名称(需要改) @Description 请填写文件描述(需要改) @Author yr 2024/9/4 下午5:53 @Update yr 2024/9/4 下午5:53
cluster
Package cluster @Title 集群模块 @Description desc @Author pc 2024/11/5 @Update pc 2024/11/5
Package cluster @Title 集群模块 @Description desc @Author pc 2024/11/5 @Update pc 2024/11/5
cluster/discovery
Package discovery @Title 服务发现 @Description 服务发现 @Author yr 2024/8/29 下午3:42 @Update yr 2024/8/29 下午3:42
Package discovery @Title 服务发现 @Description 服务发现 @Author yr 2024/8/29 下午3:42 @Update yr 2024/8/29 下午3:42
cluster/endpoints
Package endpoints @Title 请填写文件名称(需要改) @Description 请填写文件描述(需要改) @Author yr 2024/8/29 下午6:24 @Update yr 2024/8/29 下午6:24
Package endpoints @Title 请填写文件名称(需要改) @Description 请填写文件描述(需要改) @Author yr 2024/8/29 下午6:24 @Update yr 2024/8/29 下午6:24
cluster/endpoints/client
Package client @Title title @Description desc @Author yr 2024/11/7 @Update yr 2024/11/7
Package client @Title title @Description desc @Author yr 2024/11/7 @Update yr 2024/11/7
cluster/endpoints/remote
Package remote @Title title @Description desc @Author yr 2024/12/18 @Update yr 2024/12/18
Package remote @Title title @Description desc @Author yr 2024/12/18 @Update yr 2024/12/18
cluster/endpoints/remote/gr
Package gr @Title grpc服务端监听器 @Description desc @Author yr 2024/12/18 @Update yr 2024/12/18
Package gr @Title grpc服务端监听器 @Description desc @Author yr 2024/12/18 @Update yr 2024/12/18
cluster/endpoints/remote/handler
Package handler @Title title @Description desc @Author yr 2024/12/18 @Update yr 2024/12/18
Package handler @Title title @Description desc @Author yr 2024/12/18 @Update yr 2024/12/18
cluster/endpoints/remote/pool
Package pool @Title title @Description desc @Author yr 2024/12/18 @Update yr 2024/12/18
Package pool @Title title @Description desc @Author yr 2024/12/18 @Update yr 2024/12/18
cluster/endpoints/remote/rx
Package rx @Title rpcx的服务端监听器 @Description desc @Author yr 2024/11/8 @Update yr 2024/11/8
Package rx @Title rpcx的服务端监听器 @Description desc @Author yr 2024/11/8 @Update yr 2024/11/8
cluster/endpoints/repository
Package repository @Title title @Description desc @Author yr 2024/11/11 @Update yr 2024/11/11
Package repository @Title title @Description desc @Author yr 2024/11/11 @Update yr 2024/11/11
config
Package config @Title title @Description desc @Author yr 2024/11/28 @Update yr 2024/11/28
Package config @Title title @Description desc @Author yr 2024/11/28 @Update yr 2024/11/28
config/remote
Package remote @Title viper的远程配置 @Description 用于读取远程配置 @Author yr 2024/12/2 @Update yr 2024/12/2
Package remote @Title viper的远程配置 @Description 用于读取远程配置 @Author yr 2024/12/2 @Update yr 2024/12/2
core
Package core @Title title @Description desc @Author pc 2024/11/5 @Update pc 2024/11/5
Package core @Title title @Description desc @Author pc 2024/11/5 @Update pc 2024/11/5
core/node
Package node 模块名: 节点 功能描述: 用于提供程序入口 作者: yr 2024/1/10 0010 23:43 最后更新: yr 2024/1/10 0010 23:43
Package node 模块名: 节点 功能描述: 用于提供程序入口 作者: yr 2024/1/10 0010 23:43 最后更新: yr 2024/1/10 0010 23:43
def
Package def @Title title @Description desc @Author pc 2024/11/5 @Update pc 2024/11/5
Package def @Title title @Description desc @Author pc 2024/11/5 @Update pc 2024/11/5
dto
Package dto @Title title @Description desc @Author yr 2024/11/14 @Update yr 2024/11/14
Package dto @Title title @Description desc @Author yr 2024/11/14 @Update yr 2024/11/14
event
Package event @Title 事件类型 @Description 事件类型 @Author yr 2024/7/19 下午3:40 @Update yr 2024/7/19 下午3:40
Package event @Title 事件类型 @Description 事件类型 @Author yr 2024/7/19 下午3:40 @Update yr 2024/7/19 下午3:40
inf
Package inf @Title title @Description desc @Author yr 2024/11/12 @Update yr 2024/11/12
Package inf @Title title @Description desc @Author yr 2024/11/12 @Update yr 2024/11/12
messagebus
Package messagebus @Title 消息总线 @Description 所有的消息都通过该模块进行发送和接收 @Author yr 2024/11/12 @Update yr 2024/11/12
Package messagebus @Title 消息总线 @Description 所有的消息都通过该模块进行发送和接收 @Author yr 2024/11/12 @Update yr 2024/11/12
monitor
Package monitor @Title title @Description desc @Author yr 2024/11/7 @Update yr 2024/11/7
Package monitor @Title title @Description desc @Author yr 2024/11/7 @Update yr 2024/11/7
msgenvelope
Package msgenvelope @Title 数据信封 @Description 用于不同service之间的数据传递 @Author yr 2024/9/2 下午3:40 @Update yr 2024/9/2 下午3:40
Package msgenvelope @Title 数据信封 @Description 用于不同service之间的数据传递 @Author yr 2024/9/2 下午3:40 @Update yr 2024/9/2 下午3:40
plugins
Package plugins @Title title @Description desc @Author yr 2024/11/19 @Update yr 2024/11/19
Package plugins @Title title @Description desc @Author yr 2024/11/19 @Update yr 2024/11/19
rpc
Package rpc @Title title @Description desc @Author yr 2024/11/5 @Update yr 2024/11/5
Package rpc @Title title @Description desc @Author yr 2024/11/5 @Update yr 2024/11/5
services
Package services @Title 守护线程 @Description 主要用于停止、重启服务 @Author yr 2024/12/3 @Update yr 2024/12/3
Package services @Title 守护线程 @Description 主要用于停止、重启服务 @Author yr 2024/12/3 @Update yr 2024/12/3
sysModule/httpmodule
Package httpmodule 模块名: http服务 功能描述: 这是一个公用的http服务器 作者: yr 2024/1/4 0004 23:41 最后更新: yr 2024/1/4 0004 23:41
Package httpmodule 模块名: http服务 功能描述: 这是一个公用的http服务器 作者: yr 2024/1/4 0004 23:41 最后更新: yr 2024/1/4 0004 23:41
sysModule/httpmodule/auth
Package auth 模块名: 模块名 功能描述: 描述 作者: yr 2024/1/16 0016 10:30 最后更新: yr 2024/1/16 0016 10:30
Package auth 模块名: 模块名 功能描述: 描述 作者: yr 2024/1/16 0016 10:30 最后更新: yr 2024/1/16 0016 10:30
sysModule/httpmodule/router_center
Package router_center 模块名: 路由中心 功能描述: 描述 作者: yr 2024/1/4 0004 1:57 最后更新: yr 2024/1/4 0004 1:57
Package router_center 模块名: 路由中心 功能描述: 描述 作者: yr 2024/1/4 0004 1:57 最后更新: yr 2024/1/4 0004 1:57
sysModule/mysqlmodule
Package mysqlmodule @Title mysql模块 @Description mysql模块 @Author yr 2024/7/25 下午3:12 @Update yr 2024/7/25 下午3:12
Package mysqlmodule @Title mysql模块 @Description mysql模块 @Author yr 2024/7/25 下午3:12 @Update yr 2024/7/25 下午3:12
sysModule/redismodule
Package redismodule @Title redis模块 @Description redis模块 @Author yr 2024/7/25 下午3:13 @Update yr 2024/7/25 下午3:13
Package redismodule @Title redis模块 @Description redis模块 @Author yr 2024/7/25 下午3:13 @Update yr 2024/7/25 下午3:13
sysService/dbservice
Package dbservice @Title 数据库服务 @Description 数据库服务 @Author yr 2024/7/25 下午3:10 @Update yr 2024/7/25 下午3:10
Package dbservice @Title 数据库服务 @Description 数据库服务 @Author yr 2024/7/25 下午3:10 @Update yr 2024/7/25 下午3:10
sysService/pprofservice
Package pprofservice @Title 性能性分析服务 @Description 性能性分析服务 @Author yr 2024/8/21 下午5:00 @Update yr 2024/8/21 下午5:00
Package pprofservice @Title 性能性分析服务 @Description 性能性分析服务 @Author yr 2024/8/21 下午5:00 @Update yr 2024/8/21 下午5:00
sysService/pprofservice/config
Package config @Title 请填写文件名称(需要改) @Description 请填写文件描述(需要改) @Author yr 2024/8/21 下午5:03 @Update yr 2024/8/21 下午5:03
Package config @Title 请填写文件名称(需要改) @Description 请填写文件描述(需要改) @Author yr 2024/8/21 下午5:03 @Update yr 2024/8/21 下午5:03
utils/asynclib
Package asynclib Mode ServiceName: 异步执行 Mode Desc: 使用协程池中的协程执行任务,防止出现瞬间创建大量协程,出现性能问题
Package asynclib Mode ServiceName: 异步执行 Mode Desc: 使用协程池中的协程执行任务,防止出现瞬间创建大量协程,出现性能问题
utils/errorlib
Package errorlib 模块名: 调用者 功能描述: 用来描述调用者信息 作者: yr 2023/7/3 0003 16:44 最后更新: yr 2023/7/3 0003 16:44
Package errorlib 模块名: 调用者 功能描述: 用来描述调用者信息 作者: yr 2023/7/3 0003 16:44 最后更新: yr 2023/7/3 0003 16:44
utils/httplib
Package httplib @Title title @Description desc @Author yr 2024/11/20 @Update yr 2024/11/20
Package httplib @Title title @Description desc @Author yr 2024/11/20 @Update yr 2024/11/20
utils/log
Package log 模块名: 模块名 功能描述: 描述 作者: yr 2023/5/22 0022 21:49 最后更新: yr 2023/5/22 0022 21:49
Package log 模块名: 模块名 功能描述: 描述 作者: yr 2023/5/22 0022 21:49 最后更新: yr 2023/5/22 0022 21:49
utils/pid
Package pid 模块名: 节点进程id 功能描述: 进程id 作者: yr 2023/4/22 0022 2:03 最后更新: yr 2023/4/22 0022 2:03
Package pid 模块名: 节点进程id 功能描述: 进程id 作者: yr 2023/4/22 0022 2:03 最后更新: yr 2023/4/22 0022 2:03
utils/queue
Package queue provides a fast, ring-buffer queue based on the version suggested by Dariusz Górecki.
Package queue provides a fast, ring-buffer queue based on the version suggested by Dariusz Górecki.
utils/ring
Package ring provides a simple ring buffer implementation.
Package ring provides a simple ring buffer implementation.
utils/timer
Package inf @Title title @Description desc @Author yr 2024/11/14 @Update yr 2024/11/14
Package inf @Title title @Description desc @Author yr 2024/11/14 @Update yr 2024/11/14
utils/timingwheel
Package timingwheel @Title title @Description desc @Author yr 2025/1/16 @Update yr 2025/1/16
Package timingwheel @Title title @Description desc @Author yr 2025/1/16 @Update yr 2025/1/16
utils/version
Package version Mode Module: 模块名 Mode Desc: 模块功能描述
Package version Mode Module: 模块名 Mode Desc: 模块功能描述
example
msg
node1
Package main @Title title @Description desc @Author yr 2024/12/4 @Update yr 2024/12/4
Package main @Title title @Description desc @Author yr 2024/12/4 @Update yr 2024/12/4
node2
Package main @Title title @Description desc @Author yr 2024/12/4 @Update yr 2024/12/4
Package main @Title title @Description desc @Author yr 2024/12/4 @Update yr 2024/12/4
node3
Package main @Title title @Description desc @Author yr 2024/12/4 @Update yr 2024/12/4
Package main @Title title @Description desc @Author yr 2024/12/4 @Update yr 2024/12/4

Jump to

Keyboard shortcuts

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