Skip to content
/ pointsub Public

PointSub 是一个智能消息传输系统(Smart Message Transport System,简称 SMTS),专为处理大小差异极大的消息传输而设计的框架。它结合了多种优秀的网络通信机制,并添加了新的设计元素,以满足现代分布式应用的需求。

Notifications You must be signed in to change notification settings

dep2p/pointsub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PointSub 智能消息传输系统

  _____       _       _   _____       _     
 |  __ \     (_)     | | / ____|     | |    
 | |__) |___  _ _ __ | || (___  _   _| |__  
 |  ___// _ \| | '_ \| |\___ \| | | | '_ \ 
 | |   | (_) | | | | | |____) | |_| | |_) |
 |_|    \___/|_|_| |_|_|_____/ \__,_|_.__/ 
                                           

智能、高效、可靠的消息传输框架

📖 项目介绍

PointSub是一个专为处理不同大小消息传输而设计的高效、智能的传输框架,它解决了现代分布式系统中小型控制消息和大型数据传输共存的难题。

🔍 背景问题

  • 现有传输协议要么优化小消息延迟,要么优化大数据吞吐量,难以兼顾
  • 开发者需要根据消息大小选择不同的传输方式,增加复杂性
  • 资源分配、错误处理和重试逻辑需要反复实现

💡 PointSub解决方案

  • 智能检测消息大小,自动选择最优传输策略
  • 统一简洁的API,屏蔽内部复杂性
  • 内置自适应资源管理和错误恢复机制

🏗️ 架构设计

+---------------------+
|    应用层 (API)      |  <- 提供统一简洁的API接口
+---------------------+
          |
          v
+---------------------+
|    策略层 (选择器)    |  <- 消息大小检测与策略选择
+---------------------+
          |
          v
+---------------------+
|    传输层 (执行器)    |  <- 实现各种传输策略
+---------------------+
          |
          v
+---------------------+
|    优化层 (管理器)    |  <- 资源控制和错误恢复
+---------------------+

PointSub采用分层架构设计:

  • 应用层:提供统一简洁的API接口
  • 策略层:根据消息大小选择最佳传输策略
  • 传输层:实现各种优化的传输方式
  • 优化层:管理系统资源和处理错误恢复

✨ 特点

  • 智能传输策略:自动为不同大小的消息选择最佳传输方式
  • 简单统一的API:无论消息大小,都使用相同的简洁接口
  • 高性能:针对不同场景优化的传输性能
  • 高可靠性:内置错误恢复和超时处理机制
  • 资源高效利用:智能内存管理和缓冲区优化

📊 与现有解决方案比较

特性 PointSub 传统TCP库 消息队列 gRPC
自适应传输策略 部分支持
统一API
小消息性能 优秀 一般 优秀 优秀
大消息性能 优秀 一般 一般 一般
内存效率 一般 一般 一般
自动错误恢复 部分支持 部分支持
学习难度 中-高

🚀 适用场景

PointSub特别适合以下场景:

  • 微服务通信:同时处理小型RPC请求和大型数据传输
  • 物联网平台:管理大量设备的控制命令和数据上传
  • 数据处理管道:结合控制流和数据流的高效传输
  • 内容分发系统:同时处理元数据和实际内容的分发
  • 实时分析系统:结合低延迟指令和大批量数据处理

🔧 安装

go get github.com/DeP2P/PointSub

🏁 快速开始

服务端示例

// 创建监听器
listener, err := pointsub.NewListener(pointsub.ListenerConfig{
    Address: ":8080",
})
if err != nil {
    log.Fatalf("创建监听器失败: %v", err)
}

// 接受连接
conn, err := listener.Accept()
if err != nil {
    log.Fatalf("接受连接失败: %v", err)
}

// 接收消息
message, err := conn.ReceiveMessage(context.Background())
if err != nil {
    log.Fatalf("接收消息失败: %v", err)
}

fmt.Printf("接收到消息: %s\n", message)

客户端示例

// 创建连接
conn, err := pointsub.NewConnection(pointsub.ConnectionConfig{
    Address: "server:8080",
})
if err != nil {
    log.Fatalf("创建连接失败: %v", err)
}

// 发送消息
err = conn.SendMessage(context.Background(), []byte("Hello, PointSub!"))
if err != nil {
    log.Fatalf("发送消息失败: %v", err)
}

📈 性能表现

  性能比较 (消息/秒)                    数据传输率 (MB/秒)
  ┌────────────────────────────┐      ┌────────────────────────────┐
  │                            │      │                            │
  │    826,446                 │      │                 3,631.84   │
  │    ┌───┐                   │      │                   ┌───┐    │
  │    │   │                   │      │                   │   │    │
  │    │   │                   │      │                   │   │    │
  │    │   │  74,380           │      │                   │   │    │
  │    │   │  ┌───┐            │      │    1,007.95       │   │    │
  │    │   │  │   │  3,101     │      │    ┌───┐          │   │    │
  │    │   │  │   │  ┌───┐     │      │    │   │          │   │    │
  │    │   │  │   │  │   │     │      │    │   │          │   │    │
  └────┴───┴──┴───┴──┴───┴─────┘      └────┴───┴──────────┴───┴────┘
     512字节   50KB    1MB               5MB      50KB

PointSub在各种消息大小下均表现出色:

  • 小消息(512字节):高并发下达到~826,446消息/秒
  • 中等消息(50KB):数据传输率高达3,631.84 MB/秒
  • 大文件传输:稳定传输10GB数据,保持~18MB/秒吞吐量

详细测试结果请参阅 性能测试报告

📚 更多示例

更多使用示例可在 example 目录中找到:

📝 设计文档

详细的架构设计、实现原理和技术细节请参阅 设计文档

🗺️ 路线图

  • v0.1.0 - 核心功能实现
  • v0.2.0 - 增强监控和可观测性
  • v0.3.0 - 添加更多传输策略和优化
  • v0.4.0 - 分布式协调和集群支持
  • v1.0.0 - 稳定API和全面文档

👥 贡献

欢迎提交问题报告、功能建议和代码贡献。请先阅读 贡献指南

📄 许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

About

PointSub 是一个智能消息传输系统(Smart Message Transport System,简称 SMTS),专为处理大小差异极大的消息传输而设计的框架。它结合了多种优秀的网络通信机制,并添加了新的设计元素,以满足现代分布式应用的需求。

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages