## Endpoint数据结构

### 数据库表结构

```mysql

CREATE TABLE `endpoint` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '名称,路由时基于名称',
  `title` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '序列号',
  `type` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '类型',
  `config_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '配置信息，基于json格式存储',
  `status` smallint NOT NULL DEFAULT '-1',
  `creator` smallint NOT NULL DEFAULT '0' COMMENT '创建人',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

```

### config_json中的数据配置

#### http方式: type=http
    token是可选的，如果接收服务器端需要提供校验；可以添加token字段，校验算法采用的: $Sign = sha256(token + "post_body" + token), 有token的情况下
    通过http推送的数据会增加一个header, 格式为 X-Signature: $Sign
```json

{
  "url": "http(s)://www.test.com/api",
  "token": "ngyehngcohezqyabnlhollsfcnyqobmwfcfyvbzdbhuubucojcpeefpczruiccfw", 
  "pool_size":  10
}

```

#### mqtt方式, type=mqtt
```json

{
  "host": "127.0.0.1",
  "port": 3361,
  "client_id": "ClientIdOfMqtt",
  "username": "root",
  "password": "Password1234",
  "topic": "mqtt_topic",
  "qos": 0
}

```

#### kafka方式, type=kafka
    其中sasl_config可以不配置
```json

{
  "bootstrap_servers": ["127.0.0.1:9090", "192.168.1.1:9090"],
  "topic": "KafkaTopic",
  "sasl_config": {
    "username": "root",    
    "password": "password1234",
    "mechanism": "sha_256|sha_512|plain" 
  }
}
```

### 关于name的规则说明 
```text
   边缘端的微服务在数据上传的时候需要指定routing_key, 服务器端收到数据后会根据 routing_key = name 对数据进行路由

```
