工具盒子 Logo
🏘首页
📦归档
🏷标签
🧰关于
登录 →
工具盒子 Logo
🏘首页 📦归档 🏷标签 🧰关于
登录
  1. 首页
  2. 高性能即时通讯工具-WuKongIM

高性能即时通讯工具-WuKongIM

  • 发布于 2025-12-30
  • 0 次阅读
Administrator
Administrator

高性能即时通讯工具-WuKongIM

WuKongIM 介绍

如今信息化时代,即时通讯(IM)已成为我们生活中不可或缺的一部分。无论是个人社交、企业协作,还是物联网设备的通信,都需要一个高效、稳定且安全的通讯解决方案。悟空IM,一个历经10(2015-2025)年积累沉淀的高性能通用通讯服务,正是为满足这些需求而生。它不仅支持即时通讯,还涵盖了站内消息、物联网通讯、音视频信令、直播弹幕、客服系统、AI通讯和即时社区等多种场景,堪称通讯领域的“全能选手”。

系统采用分布式IM重要特性故障自动转移,去中心化设计,节点之间数据互备,支持集群快速自动扩容,代理节点机制

环境要求


go1.20.0或以上环境编译

核心特性


🎯 独特能力

  • 无限群成员:支持10万+成员的群聊
  • 永久消息存储:消息永久存储,高效检索
  • 自定义二进制协议:针对最小带宽使用进行优化

📱 低资源消耗

  • 高效协议:1字节心跳包节省带宽和电池
  • 优化存储:专为即时通讯工作负载设计的自定义存储引擎
  • 智能缓存:智能消息缓存,实现最佳性能

🔐 安全优先

  • 端到端加密:消息频道和内容完全加密
  • 攻击防护:防止中间人攻击和消息篡改
  • 数据备份:实时服务器数据备份确保无数据丢失

🚀 高性能

  • 自定义存储:基于 PebbleDB 构建,针对即时通讯进行优化
  • 分布式数据库:专用分布式数据库消除通用数据库开销
  • 快速存储 = 快速消息:优化的存储层实现高速消息传递

🔥 高可用性

  • 改进的 Raft 协议:自定义分布式共识,实现自动灾难恢复
  • 零停机时间:节点宕机时自动故障转移,对用户透明
  • 去中心化:无单点故障,所有节点独立且平等
  • 轻松扩展:无需停机或数据迁移即可添加机器

0️⃣ 易于使用

  • 零依赖:无需第三方中间件
  • 简单部署:一条命令即可启动
  • 基于频道的设计:易于理解的发布-订阅模型
  • 开发者友好:全面的文档和 SDK 支持

使用场景


  • 聊天应用:群聊、私人消息和社交平台
  • 消息推送:通知系统和实时更新
  • 物联网通信:设备到设备和设备到服务器的消息传递
  • 音视频信令:WebRTC 信令和媒体协调
  • 直播:直播的聊天和互动功能
  • 客服系统:支持聊天系统和帮助台解决方案
  • AI 通信:聊天机器人和 AI 驱动的消息传递
  • 即时社区:实时社区平台和论坛

Docker部署


1、单节点模式

1.1、说明

  • 适用场景:小型应用,对数据安全要求不高的应用,后续量大可以扩容成集群。
  • 优点:部署简单,性能较好,支持在线扩容。
  • 缺点:无法容灾,需要手动备份

1.2、环境要求:

  • Linux系统(推荐Ubuntu)(推荐配置 2核4G或4核8G)
  • 安装Docker (推荐:Docker版本24.0.4或以上)

1.3、安装

  • 创建安装目录
mkdir  ~/wukongim
  • 进入目录
cd  ~/wukongim
  • 创建docker-compose.yml
version: '3.7'
services:
  wukongim: # WuKongIM服务
    image: registry.cn-shanghai.aliyuncs.com/wukongim/wukongim:v2
    environment:
      - "WK_CLUSTER_NODEID=1001"
      # - "WK_TOKENAUTHON=true"  # 开启token认证,生产环境强烈建议开启
      - "WK_CLUSTER_SERVERADDR=xx.xx.xx.xx:11110" # 节点内部通信请求地址
      - "WK_TRACE_PROMETHEUSAPIURL=http://prometheus:9090" # prometheus监控地址
      - "WK_MODE=release" # release模式
      - "WK_EXTERNAL_IP=xxx.xxx.xxx.xxx" # 服务器外网ip
      - "WK_CLUSTER_APIURL=http://xx.xxx.xxx.xx:5001" # api的内网地址
      - "WK_INTRANET_TCPADDR=xx.xx.xxx.xx:5100" # tcp连接的内网地址,此配置主要用于压测
    healthcheck:
      test: "wget -q -Y off -O /dev/null http://localhost:5001/health > /dev/null 2>&1"
      interval: 10s
      timeout: 10s
      retries: 3
    restart: always
    volumes:
      - ./wukongim_data:/root/wukongim # 数据挂载到物理机的目录
    ports:
      - 5001:5001 # http api 端口
      - 5100:5100 # tcp端口
      - 5200:5200 # websocket端口
      - 5300:5300 # 管理端端口
      - 5172:5172 # demo端口
      - 11110:11110 # 分布式节点通讯端口
  prometheus:  # 监控服务
    image: registry.cn-shanghai.aliyuncs.com/wukongim/prometheus:v2.53.1
    volumes:
      - "./prometheus.yml:/etc/prometheus/prometheus.yml"
    ports:
      - "9090:9090"

注意:WK_EXTERNAL_IP xx.xx.xx.xx修改为自己服务器的外网ip地址

WK_CLUSTER_SERVERADDR xx.xx.xx.xx修改为自己服务器的内网ip地址

  • 配置prometheus.yml

在安装目录创建prometheus.yml文件,内容如下:

global:
  scrape_interval:     10s
  evaluation_interval: 10s
scrape_configs:
  - job_name: wukongim1-trace-metrics
    static_configs:
    - targets: ['wukongim:5300']
      labels:
        id: "1001"
  • 启动或停止

    启动

    sudo docker-compose up -d
    

    停止

    sudo docker-compose stop
    
  • 开放端口

端口 说明
5001 http api 端口 (仅内部局域网开放)
5100 tcp 端口 , app端需要能访问到
5200 websocket 端口 , web im端需要能访问到
5300 后台管理系统的端口, 访问地址:
http://xx.xx.xx.xx:5300/web
5172 demo的端口,用于演示wukongim通讯能力的demo 访问地址:
http://xx.xx.xx.xx.1:5172

https://docs.githubim.com/zh

目录
  • 工具盒子公众号
Copyright © 2025 toolhz.cn All Rights Reserved
粤ICP备2025427282号
gongan beian 粤公网安备44030002008642号