Coolpy7技术手册
  • COOLPY7千万级MQTT消息服务器
  • 开始使用
    • Coolpy7消息服务器简介
    • 一分钟运行 Coolpy7
    • 单机千万级连接测试
    • 消息并发压力测试
    • 部署架构
    • 程序安装
    • 分布式集群
    • Docker部署CP7(Win&Linux)
    • 消息通信功能测试
    • DbPoxy代理服务
    • 内核功能扩展
    • 规则引擎
    • 启动参数及内核特殊功能
    • 功能性API接口说明
    • 使用JWT身份验证
    • 消息组播
    • HTTP、CoAP推送消息
    • MQTT-SN代理服务
    • 客户端SDK示例库
    • 常见问题总汇
  • CGP通用IOT物联网控制协议
    • CGP协议
    • CGP协议安全模式
  • OAuth2用户中心应用
    • 用户中心
  • COOLPY7领域应用
    • CP7领域应用指南简略图
    • 使用paho-mqtt.js库实时聊天室
    • 微信小程序实时通信聊天室应用
    • 使用MQTT.js库连接CP7
    • Paho.mqtt.golang客户端连接示例
  • MQTT协议基础知识
    • MQTT协议
    • MQTT-SN 协议
    • MQTT应用指南
Powered by GitBook
On this page
  • CP7运行终端概要
  • 完整部署整套CP7消息系统(IOT)
  • 硬件环境机器准备
  • 运行CP7核心服务
  • CP7核心服务 TLS代理
  • CP7核心服务 WS代理(此功能已整合到CP7内核)
  • CP7 WS服务 TLS代理
  • CP7 DbPoxy数据库代理

Was this helpful?

  1. 开始使用

程序安装

CP7 消息服务器可跨平台运行在 Linux、FreeBSD、Mac OS X 或 Windows(Docker) 服务器上。

Previous部署架构Next分布式集群

Last updated 3 years ago

Was this helpful?

备注:

Coolpy7所有发行版没有特别说明的情况下只支持64bit系统,因为32bit操作系统最大只支持4G内存,作为高性能的消息服务系统,CP7需要大于4G的内存运行。

Coolpy7会出现可运行于简易设备的版本,例如MIPS框架基本上使用于OpenWrt操作系统。还有基于ARM的相关微型设备等等。

CP7运行终端概要

7.3.5.5版本开始ws-proxy服务已整合到cp7内核

基础功能服务器端

  1. CP7核心服务器

  2. CP7 TLS TCP 代理服务器

  3. CP7 WebSocket 代理服务器

  4. CP7 WebSocket TLS 代理服务器

  5. CP7 数据库代理服务器

Coolpy7 应用程序说明

应用程序

默认端口

协议

说明

1883

TCP

MQTT 协议端口

8883

TCP

MQTT/TLS1.2 端口

8084

TCP

MQTT/WebSocket/TLS1.2 端口

防火墙根据使用的 MQTT 接入方式,开启上述端口的访问权限。

扩展功能服务器端

扩展功能

开源地址

状态

说明

CP7 TLS代理服务器

已对接

核心功能

CP7 WS-TLS代理服务器

已对接

核心功能

CP7 DbPoxy代理服务器

已对接

核心功能

CP7 MQTT-SN代理服务器

已对接

扩展功能

CoAP

未对接

扩展功能

完整部署整套CP7消息系统(IOT)

硬件环境机器准备

服务名称

IP

协议

端口

备注

CP7核心服务

192.168.200.201

TCP

1883

CP7核心服务 TLS代理

192.168.200.202

TCP

8883

CP7 WS-TLS代理服务器

192.168.200.204

TCP

8084

CP7数据库代理

192.168.200.205

TCP

无

Mongodb数据库

192.168.200.206

TCP

27017

Gridfs->OSS

运行CP7核心服务

  1. 防止暴力连接攻击,对已连接客户端进行优先保护

  2. 防止空连接攻击,当用户连接建立后两秒钟内没有进行身份验证即主动关闭客户端连接

# 下载服务器端
wget https://github.com/Coolpy7/Coolpy7/raw/master/go_build_Coolpy7_go_linux.zip
# 解压文件
unzip go_build_Coolpy7_go_linux.zip
# 提权
chmod -R 777 go_build_Coolpy7_go_linux
# 启动Coolpy7 启动参数
# l 当前服务Host地址 (默认为:1883即本地1883端口,此参数一般默认即可,无需配置)
# a 连接接入调度器最大线程,此值可防止暴力连接攻击,对已连接客户端进行优先保护 (默认值128)
./go_build_Coolpy7_go_linux

# 启动成功后会打印如下信息,即说明服务端已正常启动,host于1883端口,请确保相关防火墙配置可用
2018/10/29 12:59:55 Coolpy7 tcp is listening on [::]:1883

一般需为程序提权才可以运行Linux服务,指令:chmod -R 777 go_build_Coolpy7_go_linux

CP7核心服务 TLS代理

TLS服务需要对应域名的数字证书

以阿里云为例可以进入对应域名的管理后台下载证书,把key和pem文件复制到data文件夹下,并命名为server.key和server.pem

# 下载CP7 TLS代理 服务器端
git clone https://github.com/Coolpy7/Coolpy7-TLS-Poxy.git && cd Coolpy7-TLS-Poxy/bin
# 提权
chmod -R 777 go_build_Coolpy7_tls_go_linux_linux
# 启动Coolpy7 tls poxy
# r启动参数 CP7核心服务器所在ip或域名 (例:core.coolpy.net:1883 or 192.168.200.201:1883)
# l启动参数 当前服务Host地址 (默认为:8883即本地8883端口,此参数一般默认即可,无需配置)
./go_build_Coolpy7_tls_go_linux_linux -r=192.168.200.201:1883

# 启动成功后会打印如下信息,即说明服务端已正常启动,host于8883端口,请确保相关防火墙配置可用
2018/10/29 12:59:55 upstream 192.168.200.201:1883 ok
2018/10/29 12:59:55 Coolpy7 TLS proxy is listening on [::]:8883

CP7核心服务 WS代理(此功能已整合到CP7内核)

此功能即为CP7核心服务提供WebSocket接入功能。默认端口为8083

  1. 千万级WebSocket代理服务器

  2. 支持防爆力攻击

CP7 WS服务 TLS代理

# 下载CP7 WS TLS代理 服务器端
git clone https://github.com/Coolpy7/Coolpy7-WS-TLS-Poxy.git && cd Coolpy7-WS-TLS-Poxy/bin
# 提权
chmod -R 777 go_build_Coolpy7_ws_tls_go_linux_linux
# 启动Coolpy7 ws tls poxy
# r启动参数 CP7 WebSocket 代理服务器所在ip或域名 (例:core.coolpy.net:8083 or 192.168.200.201:8083)
# l启动参数 当前服务Host地址 (默认为:8084即本地8084端口,此参数一般默认即可,无需配置)
./go_build_Coolpy7_tls_go_linux_linux -r=192.168.200.203:8083

# 启动成功后会打印如下信息,即说明服务端已正常启动,host于8084端口,请确保相关防火墙配置可用
2018/10/29 12:59:55 upstream 192.168.200.203:8083 ok
2018/10/29 12:59:55 Coolpy7 TLS proxy is listening on [::]:8084

CP7 DbPoxy数据库代理

CP7 DbPoxy数据库代理服务器支持 MongoDB、Mysql、Mssql、Pgsql等主流数据库。当使用mongodb作为数据库即可使用Gridfs特性支持文件存储功能,即可实现对象存储(Object Storage Service,简称OSS)功能。

单个DbPoyx数据库代理运行实例只允许连接一种数据库。支持多实例连接多种数据库提供服务器。

# 下载服务器端
git clone https://github.com/Coolpy7/DbPoxy.git && cd DbPoxy/bin
# 提权
chmod -R 777 go_build_Coolpy7_db_poxy_go_linux_linux
# 启动Coolpy7 DbPoxy
# c启动参数 当前服务配置文件路径 (默认为/data/dbpoxy.yml 此参数一般默认即可,无需配置)
./go_build_Coolpy7_db_poxy_go_linux_linux

# 启动成功后会打印如下信息,即说明服务端已正常启动,host于8083端口,请确保相关防火墙配置可用
2018/11/03 16:55:14 dbpoxy/mongodb/get OK, token: password
2018/11/03 16:55:14 mongodb ping ok

本例使用mongodb演示并假设网络环境中在192.168.200.206中已运行一个未开户身份验证的mongod服务,并Host端口于27017

配置文件说明

#使用mongodb作为普通数据服务
DatabaseType: mongodb
#mongodb数据库连接字符串,即当前环境已经在运行的何意一个mongodb数据库实例
DatabaseConnectionString: mongodb://192.168.200.206:27017 

#使用postgres作为普通数据服务
#更多sql数据库的连接字符串请参阅:https://github.com/go-xorm/xorm
#DatabaseType: postgres #mssql mysql postgres  mongodb oss-gridfs
#DatabaseConnectionString: host=192.168.100.187 port=13246 user=postgres dbname=ldh sslmode=disable password=123456

#使用mongodb作为OSS服务
#DatabaseType: oss-gridfs
#mongodb数据库连接字符串,即当前环境已经在运行的何意一个mongodb数据库实例
#DatabaseConnectionString: mongodb://192.168.200.206:27017 

#Coolpy7 Core服务地址信息
BrokerHost: 192.168.200.201
BrokerPort: 1883

#MQTT连接信息
BrokerClientId: dbpoxy
BrokerUser: dypoxy
BrokerPassword: dypoxy
BrokerClearSession: true

#日志文件
LogFilePath: dbpoxy.log

#端访问相关配置信息
#操作token,通过此定义可进行安全校验,在指令发出端需把此token填写一致指令才会被接受
#如果填写空即不进入任何安全校验
AccessToken: password
#本实例的操作topic,指令发出端对应的发布地址,及qos消息质量控制
OpTopics:
 Topic: dbpoxy/mongodb/get
 Qos: 0

配置文件默认所有路径:/data/dbpoxy.yml

通过以上操作,我们已经得出一套完整的千万级MQTT消息系统。下一章介绍如何用客户端工具验证系统功能。

用户账户指南

当需要对接任何用户账号数据库时,请参阅 《Coolpy7(IOT)通用控制协议》一书,里边祥尽介绍如果通过协议实现对数据库的CURD操作。

测试客户端开源地址

CP7核心服务是一个最原始最单纯功能完备的MQTT消息服务器端,包括功能有:QoS:0,QoS1,QoS2消息质量支持。Will消息支持等等。深入了解

通过ssh进入服务器192.168.200.201,并确保你已经按照 配置服务器操作系统的网络优化配置。

CP7核心服务运行后会自行构当前目录下的data文件夹,此文件夹存放MQTT运行期所需求持久化的数据信息,使用的是开源项目 ,支持10亿级秒op的高性能数据库,数据库内核使用的是Leveldb技术。

此功能即为CP7核心服务提供TLS接入功能。通过ssh进入服务器192.168.200.202,并确保你已经按照 配置服务器操作系统的网络优化配置。

此服务开源地址:

此功能即为CP7 WebSocket代理服务提供TLS接入功能。通过ssh进入服务器192.168.200.204,并确保你已经按照 配置服务器操作系统的网络优化配置。

开源地址:

开源地址:

安装方式请参阅Mongodb官方文档:

https://github.com/Coolpy7/coolpy7_benchmark
https://mcxiaoke.gitbooks.io/mqtt-cn/content/
https://coolpy7.gitbook.io/coolpy7book/kai-shi-shi-yong/start
https://github.com/jacoblai/yiyidb
https://coolpy7.gitbook.io/coolpy7book/kai-shi-shi-yong/start
https://github.com/Coolpy7/Coolpy7-TLS-Poxy
https://coolpy7.gitbook.io/coolpy7book/kai-shi-shi-yong/start
https://github.com/Coolpy7/Coolpy7-WS-TLS-Poxy
https://github.com/Coolpy7/DbPoxy
https://docs.mongodb.com/manual/installation/
go_build_Coolpy7_go_linux
go_build_Coolpy7_tls_go_linux_linux
go_build_Coolpy7_ws_tls_go_linux_linux
https://github.com/Coolpy7/Coolpy7-TLS-Poxy
https://github.com/Coolpy7/Coolpy7-WS-TLS-Poxy
https://github.com/Coolpy7/DbPoxy
https://github.com/Coolpy7/mqttsn-gateway
https://github.com/jacoblai/go-coap