Skip to content

chaneychan/ums

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UMS RPC Framework

一个轻量级的 Go RPC 框架,参考 Apache Dubbo 设计,提供服务注册发现、负载均衡、熔断降级、管理后台等核心能力。

架构

┌─────────────┐       ┌──────────────┐       ┌─────────────┐
│   Consumer   │──TCP──│   Registry   │──TCP──│   Provider   │
│  (Client)    │       │  (服务注册中心)│       │  (Server)    │
└──────┬───────┘       └──────────────┘       └──────┬───────┘
       │                      │                       │
       │    ┌─────────────────┤                       │
       │    │  Admin Console  │                       │
       │    │  (管理后台)      │                       │
       │    └─────────────────┘                       │
       │                                              │
       └──────────── TCP RPC Call ────────────────────┘

核心模块

模块 路径 说明
Protocol protocol/ 二进制传输协议(类 Dubbo 协议)
Codec codec/ JSON 序列化/反序列化
Registry registry/ 服务注册与发现(支持内存/etcd)
Server server/ RPC 服务端,注册服务并处理调用
Client client/ RPC 客户端,服务发现 + 远程调用
LoadBalance loadbalance/ 负载均衡(Random/RoundRobin/Weighted)
CircuitBreaker circuitbreaker/ 熔断器 + 服务降级
Admin admin/ Web 管理后台(类 Dubbo Admin)

快速开始

启动 Admin + Provider(一体化模式)

go run cmd/admin/main.go

启动后访问:

启动独立 Provider

go run cmd/provider/main.go -addr :9001

运行 Consumer 测试

go run cmd/consumer/main.go -provider :9001

协议设计

+-------+--------+--------+-----------+----------+--------+------+
| Magic | Version| MsgType| Serialize | RequestID| BodyLen| Body |
| 2B    | 1B     | 1B     | 1B        | 8B       | 4B     | N B  |
+-------+--------+--------+-----------+----------+--------+------+
  • Magic: 0xDABB(协议标识)
  • MsgType: Request(0x01) / Response(0x02) / Heartbeat(0x03)
  • Serialize: JSON(0x01)

服务定义示例

// 定义服务
type GreeterService struct{}

func (s *GreeterService) SayHello(name string) (string, error) {
    return "Hello, " + name, nil
}

// Provider 注册服务
server := server.NewServer(":9001", registry)
server.Register("GreeterService", &GreeterService{}, "1.0.0")
server.Start()

// Consumer 调用服务
client := client.NewClient(registry)
resp, err := client.Call(ctx, "GreeterService", "SayHello", "World")

功能特性

  • TCP 二进制协议通信
  • 基于反射的服务注册和方法调用
  • 服务注册与发现(内存注册中心)
  • 连接池管理
  • 负载均衡(Random / RoundRobin / WeightedRandom)
  • 熔断器(Closed / Open / HalfOpen 状态机)
  • 服务降级(Fallback 回调)
  • Admin 管理后台(服务列表、Provider/Consumer 管理、熔断器监控)
  • 服务启用/禁用管理
  • etcd 注册中心
  • 链路追踪
  • 指标监控 (Prometheus)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages