Skip to content

Commit

Permalink
doc: 文档更新
Browse files Browse the repository at this point in the history
  • Loading branch information
cuteLittleDevil committed Oct 15, 2024
1 parent 036838f commit 73aff1f
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 13 deletions.
15 changes: 12 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,18 @@
# go-jt808

- 本项目已更好支持二次开发为目标 核心是协议的解析交互 <br/>
通过各种自定义事件去完成相应功能 如记录消息、主动发送消息(支持等待设备回复)等
---
- 本项目已更好支持二次开发为目标 可通过各种自定义事件去完成相应功能 常见案例如下
1. 存储经纬度 [详情点击](./example/simulator/server/main.go)
``` txt
jt808服务端 模拟器 消息队列 数据库都运行在2核4G腾讯云服务器
测试每秒保存5000条的情况 约5.5小时保存了近1亿的经纬度
```
2. 协议解析 [详情点击](./example/simulator/protocol/main.go)
``` txt
使用自定义模拟器 可以轻松生成测试用的报文
生成的报文 可解析成详情描述
```

---
- 看飞哥的单机TCP百万并发 好奇有数据情况的表现 因此国庆准备试一试有数据的情况
- 性能测试 每日保存亿+经纬度[2核4G机器] [详情](./README.md#save)
- 安全可靠 核心协议交互不基于任何框架完成 测试覆盖率100%
Expand Down
15 changes: 8 additions & 7 deletions example/simulator/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ sysctl -a

---
<h2 id="online"> 1. 连接数测试 </h2>

- 模拟器请求为1次注册 1次鉴权 循环发送心跳(10秒间隔)
- 目前mac笔记本无线情况只能模拟2个IP 只能测试到10w+

Expand All @@ -48,8 +49,7 @@ cd ../quick_start && go build
./start
```

模拟器 设置本机两个ip mac无线情况 <\br>
网络->添加服务->接口选择Wi-Fi (给这个wi-Fi配置成固定ip即可)
模拟器
``` shell
cd ./client && go build
./client -ip=192.168.1.10 -addr=127.0.0.1:8080 -max=55000
Expand All @@ -61,7 +61,8 @@ cd ./client && go build
| :---: | :-------: | :--: | :------: | :-------------- | :----------------------------: |
| v0.3.0 | 连接数测试 | 10w+ | 10核32G | 20%cpu 1.4G内存 | 客户端和服务端都运行在本地mac笔记本 |

<h2 id="save">2. 模拟经纬度存储测试</h2>
<h2 id="save"> 2. 模拟经纬度存储测试 </h2>

- 模拟器请求为1次注册 1次鉴权 循环发送心跳、位置上报
- 默认间隔时间分别为20秒 5秒
- 消息队列使用nats 数据库使用tdengine测试
Expand All @@ -74,20 +75,20 @@ cd ./client && go build

### 2.2 操作

模拟存储经纬度
模拟存储经纬度 从nats获取保存到tdengine
``` shell
cd ./save && GOOS=linux GOARCH=amd64 go build
# 接收数据 每一个终端一张表 表名称为(T+手机号)
./save -nats=127.0.0.1:4222 -dsn='root:taosdata@ws(127.0.0.1:6041)/information_schema' >./save.log
```

服务端
服务端 把经纬度相关报文发送到nats
``` shell
cd ./server && GOOS=linux GOARCH=amd64 go build
./server -nats=127.0.0.1:4222 >./server.log
```

模拟设备连接
模拟器 模拟设备发生经纬度
``` shell
cd ./client && GOOS=linux GOARCH=amd64 go build
# 至多打开1w个客户端 每一个客户端发送1w个0x0200经纬度消息 1亿经纬度 (为了方便统计 不发送0x0704)
Expand Down Expand Up @@ -136,5 +137,5 @@ select tbname, count(*) from power.meters group by tbname order by count(*) >> /
| client | 23% | 196MB | 模拟客户端 |
| save | 18% | 68.8MB | 存储数据服务 |
| nats-server | 20% | 14.8MB | 消息队列 |
| taosadapter | 37% | 124.3MB | tdengine数据库适配HTTP |
| taosadapter | 37% | 124.3MB | tdengine数据库适配 |
| taosd | 15% | 124.7MB | tdengine数据库 |
3 changes: 0 additions & 3 deletions example/simulator/server/t0x0200.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package main

import (
"fmt"
"github.com/cuteLittleDevil/go-jt808/protocol/model"
"github.com/cuteLittleDevil/go-jt808/service"
"simulator/internal/mq"
Expand All @@ -15,12 +14,10 @@ type T0x0200 struct {
func (t *T0x0200) OnReadExecutionEvent(message *service.Message) {
var t0x0200 model.T0x0200
if err := t0x0200.Parse(message.JTMessage); err != nil {
fmt.Println(err)
return
}
location := shared.NewLocation(message.Header.TerminalPhoneNo, t0x0200.Latitude, t0x0200.Longitude)
if err := mq.Default().Pub(shared.SubLocation, location.Encode()); err != nil {
fmt.Println(err)
return
}
}
Expand Down

0 comments on commit 73aff1f

Please sign in to comment.