Kafka实时数据上报
为应对服务端海量数据导入,本文引入了 Kafka 消息队列,将数据从服务端实时上报至 Kafka,Kafka 供下游各类计算模块使用。
本文将介绍写入 Kafka 数据的方法。
一、配置要求
上报数据需要满足以下要求:
生产者程序所在机器需与部署诸葛io的机器在同一个内网;
产品类型为私有化部署版;
二、生产参数
以下为标准情况,实际参数请根据实际情况配置。
私有部署单机版:
参数名称 | 参数值 |
---|---|
topic | sdklua_online |
partition | 2 |
zookeeper | hostname:2181 |
broker | hostname:9092 |
私有部署集群版:
参数名称 | 参数值 |
---|---|
topic | sdklua_online |
partition | 8 |
zookeeper | hostname1:2181,hostname2:2181,hostname3:2181 |
broker | hostname1:9092,hostname2:9092,hostname3:9092 |
三、数据格式
1. 数据示例
移动端数据示例
-- 格式化前
{"Ip":"14.149.0.0","Now":1730080242990,"Header":"{\"host\":\"domain.com\",\"accept-language\":\"zh-CN,zh-Hans;q=0.9\",\"content-type\":\"application\\\/x-www-form-urlencoded\",\"connection\":\"keep-alive\",\"accept\":\"*\\\/*\",\"accept-encoding\":\"gzip\",\"content-length\":\"640\",\"user-agent\":\"ZhugeioAnanlytics_Example\\\/1.1 CFNetwork\\\/1335.0.3 Darwin\\\/21.6.0\"}","Method":"POST","Args":"{\"compress\":\"1\",\"method\":\"event_statis_srv.upload\",\"encrypt\":\"0\",\"event\":\"eJzVVEFOwzAQ\\\/Epl9RhXtmMnTm5pAXFAgFRuiIOTuCU0TaIkLaioj+DMI7jyJJ7BrosQLRJC3Mgl68lkd2a99iNZdS2JH0le5CQmLPGF1ieSBpOJoHI8VnQcjCOa+BGXCffDE5WQrUf6DYmByPDxSH1fWUhCNnPikdymqzmJATYLwEKbWcWk0mlqpcy0kXaWap4KHvKZr1P4oysrIBZ9BXFTYlh3EK56CAUTknJGhR6wKFYsFhJrmN6Q+BpUI6dDduNcDJeVRejs6hiwYYaqZMA4x1WXOVlDyA41LqaIrbE0H7nvBuO3l9e3p+eipkd2WSNar5GhRoFLiJSkaQbTvm4tIrt6Lj12kIc+Y9AXH18A7jdqmPUHlO3W+3ABzj9dtKiQh5F40EJj7jtTlDvxOcopLm\\\/rynLhOd2lqebY\\\/Vt6aqqOTs7JgclN9yFxvx\\\/LRbtzUzonB1Kbtlib3oLe77qF+v+6O\\\/u7qfk6IV\\\/F4TTx301N3q6AK32l5Q8zJP8wRDwMVCT+32YIIVkIm3EDpz9foBp\\\/FLoew9LdJBQvge074FAxMA==\"}"}
-- 格式化后
{
"Ip": "14.149.0.0",
"Now": 1730080242990,
"Header": "{\"host\":\"domain.com\",\"accept-language\":\"zh-CN,zh-Hans;q=0.9\",\"content-type\":\"application\\\/x-www-form-urlencoded\",\"connection\":\"keep-alive\",\"accept\":\"*\\\/*\",\"accept-encoding\":\"gzip\",\"content-length\":\"640\",\"user-agent\":\"ZhugeioAnanlytics_Example\\\/1.1 CFNetwork\\\/1335.0.3 Darwin\\\/21.6.0\"}",
"Method": "POST",
"Args": "{\"compress\":\"1\",\"method\":\"event_statis_srv.upload\",\"encrypt\":\"0\",\"event\":\"eJzVVEFOwzAQ\\\/Epl9RhXtmMnTm5pAXFAgFRuiIOTuCU0TaIkLaioj+DMI7jyJJ7BrosQLRJC3Mgl68lkd2a99iNZdS2JH0le5CQmLPGF1ieSBpOJoHI8VnQcjCOa+BGXCffDE5WQrUf6DYmByPDxSH1fWUhCNnPikdymqzmJATYLwEKbWcWk0mlqpcy0kXaWap4KHvKZr1P4oysrIBZ9BXFTYlh3EK56CAUTknJGhR6wKFYsFhJrmN6Q+BpUI6dDduNcDJeVRejs6hiwYYaqZMA4x1WXOVlDyA41LqaIrbE0H7nvBuO3l9e3p+eipkd2WSNar5GhRoFLiJSkaQbTvm4tIrt6Lj12kIc+Y9AXH18A7jdqmPUHlO3W+3ABzj9dtKiQh5F40EJj7jtTlDvxOcopLm\\\/rynLhOd2lqebY\\\/Vt6aqqOTs7JgclN9yFxvx\\\/LRbtzUzonB1Kbtlib3oLe77qF+v+6O\\\/u7qfk6IV\\\/F4TTx301N3q6AK32l5Q8zJP8wRDwMVCT+32YIIVkIm3EDpz9foBp\\\/FLoew9LdJBQvge074FAxMA==\"}"
}
web端数据示例
数据1
-- 格式化前
{"Now":1730081208686,"Ip":"14.149.0.0","Header":"{\"host\":\"domain.com\"}","Method":"GET","Args":"{\"method\":\"event_statis_srv.upload\",\"event\":\"{\\\"sln\\\":\\\"itn\\\",\\\"pl\\\":\\\"js\\\",\\\"sdk\\\":\\\"zg_server\\\",\\\"sdkv\\\":\\\"2.0\\\",\\\"owner\\\":\\\"zg\\\",\\\"ut\\\":\\\"\\\",\\\"tz\\\":\\\"28800000\\\",\\\"debug\\\":0,\\\"ak\\\":\\\"b12b223005804c20a7c6c31138bb0878\\\",\\\"usr\\\":{\\\"did\\\":\\\"ANT41539467439148316\\\"},\\\"data\\\":[{\\\"dt\\\":\\\"usr\\\",\\\"pr\\\":{\\\"$cuid\\\":\\\"-9.1918224900476006E18\\\",\\\"$tz\\\":28800000,\\\"$env_attr3\\\":\\\"cdp: 20241028100648375\\\"}}]}\"}"}
-- 格式化后
{
"Now": 1730081208686,
"Ip": "14.149.0.0",
"Header": "{\"host\":\"domain.com\"}",
"Method": "GET",
"Args": "{\"method\":\"event_statis_srv.upload\",\"event\":\"{\\\"sln\\\":\\\"itn\\\",\\\"pl\\\":\\\"js\\\",\\\"sdk\\\":\\\"zg_server\\\",\\\"sdkv\\\":\\\"2.0\\\",\\\"owner\\\":\\\"zg\\\",\\\"ut\\\":\\\"\\\",\\\"tz\\\":\\\"28800000\\\",\\\"debug\\\":0,\\\"ak\\\":\\\"b12b223005804c20a7c6c31138bb0878\\\",\\\"usr\\\":{\\\"did\\\":\\\"ANT41539467439148316\\\"},\\\"data\\\":[{\\\"dt\\\":\\\"usr\\\",\\\"pr\\\":{\\\"$cuid\\\":\\\"-9.1918224900476006E18\\\",\\\"$tz\\\":28800000,\\\"$env_attr3\\\":\\\"cdp: 20241028100648375\\\"}}]}\"}"
}
数据2
-- 格式化前
{"Ip":"14.149.0.0","Now":1730081598901,"Header":"{\"sec-ch-ua-platform\":\"\\\"Windows\\\"\",\"host\":\"domain.com\",\"sec-fetch-dest\":\"empty\",\"sec-fetch-site\":\"cross-site\",\"accept-language\":\"zh-CN,zh;q=0.9\",\"content-type\":\"application\\\/x-www-form-urlencoded\",\"connection\":\"keep-alive\",\"content-length\":\"1009\",\"accept-encoding\":\"gzip, deflate, br, zstd\",\"cache-control\":\"no-cache\",\"pragma\":\"no-cache\",\"referer\":\"http:\\\/\\\/domain.com\\\/\",\"sec-fetch-mode\":\"cors\",\"origin\":\"http:\\\/\\\/domain.com\",\"sec-ch-ua-mobile\":\"?0\",\"accept\":\"*\\\/*\",\"sec-ch-ua\":\"\\\"Chromium\\\";v=\\\"128\\\", \\\"Not;A=Brand\\\";v=\\\"24\\\", \\\"Google Chrome\\\";v=\\\"128\\\"\",\"user-agent\":\"Mozilla\\\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\\\/537.36 (KHTML, like Gecko) Chrome\\\/128.0.0.0 Safari\\\/537.36\"}","Method":"POST","Args":"{\"_\":\"1730081575939\",\"method\":\"web_event_srv.upload\",\"event\":\"{\\\"sln\\\": \\\"itn\\\",\\\"pl\\\": \\\"js\\\",\\\"sdk\\\": \\\"zg-js\\\",\\\"sdkv\\\": \\\"2.0\\\",\\\"owner\\\": \\\"zg\\\",\\\"ut\\\": \\\"2024-10-28 10:12:55\\\",\\\"tz\\\": 28800000,\\\"debug\\\": 0,\\\"ak\\\": \\\"7ece50458bbe44c8a4efb81b2171f38b\\\",\\\"usr\\\": {\\\"did\\\": \\\"1873078b400c06-01677ca7ce7148-26031951-1fa400-1873078b401d16\\\"},\\\"data\\\": [{\\\"dt\\\": \\\"evt\\\",\\\"pr\\\": {\\\"$ct\\\": 1730081575939,\\\"$tz\\\": 28800000,\\\"$cuid\\\": \\\"\\\",\\\"$sid\\\": 1730080982273,\\\"$url\\\": \\\"http:\\\/\\\/domain.com\\\/data-upload%E9%87%8D%E8%AF%95%E4%B8%8A%E6%8A%A5.html\\\",\\\"$ref\\\": \\\"\\\",\\\"$referrer_domain\\\": \\\"\\\",\\\"$eid\\\": \\\"\\\",\\\"$cn\\\": \\\"js\\\",\\\"_应用名称\\\": \\\"数据分析\\\"}}]}\"}"}
-- 格式化后
{
"Ip": "14.149.0.0",
"Now": 1730081598901,
"Header": "{\"sec-ch-ua-platform\":\"\\\"Windows\\\"\",\"host\":\"domain.com\",\"sec-fetch-dest\":\"empty\",\"sec-fetch-site\":\"cross-site\",\"accept-language\":\"zh-CN,zh;q=0.9\",\"content-type\":\"application\\\/x-www-form-urlencoded\",\"connection\":\"keep-alive\",\"content-length\":\"1009\",\"accept-encoding\":\"gzip, deflate, br, zstd\",\"cache-control\":\"no-cache\",\"pragma\":\"no-cache\",\"referer\":\"http:\\\/\\\/domain.com\\\/\",\"sec-fetch-mode\":\"cors\",\"origin\":\"http:\\\/\\\/domain.com\",\"sec-ch-ua-mobile\":\"?0\",\"accept\":\"*\\\/*\",\"sec-ch-ua\":\"\\\"Chromium\\\";v=\\\"128\\\", \\\"Not;A=Brand\\\";v=\\\"24\\\", \\\"Google Chrome\\\";v=\\\"128\\\"\",\"user-agent\":\"Mozilla\\\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\\\/537.36 (KHTML, like Gecko) Chrome\\\/128.0.0.0 Safari\\\/537.36\"}",
"Method": "POST",
"Args": "{\"_\":\"1730081575939\",\"method\":\"web_event_srv.upload\",\"event\":\"{\\\"sln\\\": \\\"itn\\\",\\\"pl\\\": \\\"js\\\",\\\"sdk\\\": \\\"zg-js\\\",\\\"sdkv\\\": \\\"2.0\\\",\\\"owner\\\": \\\"zg\\\",\\\"ut\\\": \\\"2024-10-28 10:12:55\\\",\\\"tz\\\": 28800000,\\\"debug\\\": 0,\\\"ak\\\": \\\"7ece50458bbe44c8a4efb81b2171f38b\\\",\\\"usr\\\": {\\\"did\\\": \\\"1873078b400c06-01677ca7ce7148-26031951-1fa400-1873078b401d16\\\"},\\\"data\\\": [{\\\"dt\\\": \\\"evt\\\",\\\"pr\\\": {\\\"$ct\\\": 1730081575939,\\\"$tz\\\": 28800000,\\\"$cuid\\\": \\\"\\\",\\\"$sid\\\": 1730080982273,\\\"$url\\\": \\\"http:\\\/\\\/domain.com\\\/data-upload%E9%87%8D%E8%AF%95%E4%B8%8A%E6%8A%A5.html\\\",\\\"$ref\\\": \\\"\\\",\\\"$referrer_domain\\\": \\\"\\\",\\\"$eid\\\": \\\"\\\",\\\"$cn\\\": \\\"js\\\",\\\"_应用名称\\\": \\\"数据分析\\\"}}]}\"}"
}
2. 数据字段含义
数据结构概述
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
Ip | String | 请求IP,客户端公网出口IP | 是 |
Now | Long | 请求时间戳,当前毫秒时间戳 | 是 |
Header | String | 请求头,参数说明见下文,JSON字符串 | 是 |
Method | String | 请求方法,GET/POST | 是 |
Args | String | 请求参数,参数说明见下文,JSON字符串 | 是 |
Header字段含义
示例1:
{
"host": "domain.com",
"accept-language": "zh-CN,zh-Hans;q=0.9",
"content-type": "application\/x-www-form-urlencoded",
"connection": "keep-alive",
"accept": "*\/*",
"accept-encoding": "gzip",
"content-length": "640",
"user-agent": "ZhugeioAnanlytics_Example\/1.1 CFNetwork\/1335.0.3 Darwin\/21.6.0"
}
示例2:
{
"host": "domain.com"
}
示例3:
{
"sec-ch-ua-platform": "\"Windows\"",
"host": "domain.com",
"sec-fetch-dest": "empty",
"sec-fetch-site": "cross-site",
"accept-language": "zh-CN,zh;q=0.9",
"content-type": "application\/x-www-form-urlencoded",
"connection": "keep-alive",
"content-length": "1009",
"accept-encoding": "gzip, deflate, br, zstd",
"cache-control": "no-cache",
"pragma": "no-cache",
"referer": "http:\/\/domain.com\/",
"sec-fetch-mode": "cors",
"origin": "http:\/\/domain.com",
"sec-ch-ua-mobile": "?0",
"accept": "*\/*",
"sec-ch-ua": "\"Chromium\";v=\"128\", \"Not;A=Brand\";v=\"24\", \"GoogleChrome\";v=\"128\"",
"user-agent": "Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/128.0.0.0 Safari\/537.36"
}
字段为标准HTTP请求头,参考HTTP请求头。
可直接获取客户端请求Header信息后转为JSON字符串赋值给Header字段,也可固定为示例2
(注意域名改为真实域名信息)。
Args字段含义
压缩数据示例:
{
"compress": "1",
"method": "event_statis_srv.upload",
"encrypt": "0",
"event": "eJzVVEFOwzAQ\/Epl9RhXtmMnTm5pAXFAgFRuiIOTuCU0TaIkLaioj+DMI7jyJJ7BrosQLRJC3Mgl68lkd2a99iNZdS2JH0le5CQmLPGF1ieSBpOJoHI8VnQcjCOa+BGXCffDE5WQrUf6DYmByPDxSH1fWUhCNnPikdymqzmJATYLwEKbWcWk0mlqpcy0kXaWap4KHvKZr1P4oysrIBZ9BXFTYlh3EK56CAUTknJGhR6wKFYsFhJrmN6Q+BpUI6dDduNcDJeVRejs6hiwYYaqZMA4x1WXOVlDyA41LqaIrbE0H7nvBuO3l9e3p+eipkd2WSNar5GhRoFLiJSkaQbTvm4tIrt6Lj12kIc+Y9AXH18A7jdqmPUHlO3W+3ABzj9dtKiQh5F40EJj7jtTlDvxOcopLm\/rynLhOd2lqebY\/Vt6aqqOTs7JgclN9yFxvx\/LRbtzUzonB1Kbtlib3oLe77qF+v+6O\/u7qfk6IV\/F4TTx301N3q6AK32l5Q8zJP8wRDwMVCT+32YIIVkIm3EDpz9foBp\/FLoew9LdJBQvge074FAxMA=="
}
未压缩数据示例:
{
"method": "event_statis_srv.upload",
"event": "{\"sln\":\"itn\",\"pl\":\"js\",\"sdk\":\"zg_server\",\"sdkv\":\"2.0\",\"owner\":\"zg\",\"ut\":\"\",\"tz\":\"28800000\",\"debug\":0,\"ak\":\"b12b223005804c20a7c6c31138bb0878\",\"usr\":{\"did\":\"ANT41539467439148316\"},\"data\":[{\"dt\":\"usr\",\"pr\":{\"$cuid\":\"-9.1918224900476006E18\",\"$tz\":28800000,\"$env_attr3\":\"cdp: 20241028100648375\"}}]}"
}
Args公共字段说明
参数名称 | 是否必选 | 类型 | 描述 |
---|---|---|---|
compress | 可选 | String | 是否压缩,0为未压缩(默认为0),1为压缩,压缩后event字段为压缩后的数据,需要解压后使用,使用gzip压缩 |
method | 必选 | String | 请求方法,固定为 event_statis_srv.upload |
encrypt | 可选 | String | 是否加密,0为未加密(默认为0),1为加密,加密后event字段为加密后的数据,需要解密后使用,此处填写0或不传此参数 |
event | 必选 | String | 事件数据,JSON字符串 或 JSON字符串压缩后数据 |
event字段数据结构
数据示例:
{
"pl": "and",// 平台信息: js、android为and、iOS为ios(必填,字符串)
"sdk": "zg_android",//诸葛sdk类型 zg_android\zg-ios\zg_server\zg-js(必填,字符串)
"usr": {
"did": "4c915379-b594-40fd-8419-7ec6a4d490ab"//设备ID(必填,字符串),用户和事件关联追踪通过此参数控制,建议可使用唯一用户标识的md5值
},
"ut": "2024-10-28 09:57:24",//上传时间(必填,字符串)
"ak": "7ece50458bbe44c8a4efb81b2171f38b",//应用/主体 appkey(必填,字符串)
"debug": 0,//是否开启了实时调试,0为关闭,1为开启(必填,int)
"sln": "itn",// 固定值(必填,字符串)
"owner": "zg",//固定值(必填,字符串)
"sdkv": "3.7.2",// 诸葛sdk版本
"tz": 28800000,//时区,固定为此值(必填,int)
"data": [{...},{...}]// 数据部分,具体内容见下文(必填,数组类型),每次上传数据量不超过50条,数组中每个元素为JSON对象,同一个用户才放在一组内,不同用户需要分成多条kafka消息,dt=pl为可选,dt=usr和dt=evt可分成多条消息传入;最基础的数据为dt=usr和dt=evt,其他均为可选。
}
web data参数数据结构
web属性类型(dt)无pl
"data": [
{
"dt": "usr",// 数据类型:usr:用户信息,identify(必填)
"pr": {
"$cuid": "111",// 业务唯一id(如用户id,必填,字符串)
"$tz": 28800000,// 固定值
"$ct": 1491812561821,// 事件时间(unixtime)(必填,单位是毫秒,数字)
"_用户属性名1": "aaa"// 自定义属性,命名规则见 "事件名、属性名规则" 章节
}
},
{
"dt": "evt",// 数据类型(必填,固定值) :evt为事件行为数据
"pr": {
"$ct": 1730081575939,// 事件时间(unixtime)(必填,单位是毫秒,数字)
"$tz": 28800000,// 固定值
"$cuid": "",// 业务唯一id(如用户id,实名用户必填,字符串)
"$sid": 1730080982273,// 会话ID(非必填,数字)
"$url": "http://127.0.0.1:5501/data-upload%E9%87%8D%E8%AF%95%E4%B8%8A%E6%8A%A5.html",// 当前url(非必填,字符串)
"$ref": "",// 来源网址(非必填,字符串)
"$referrer_domain": "",//来源域名(非必填,字符串)
"$eid": "",// 事件名称(必填,字符串),其中 收入事件(revenue) 为保留名称,请勿使用该名称,命名规则见 "事件名、属性名规则" 章节
"$cn": "js",// 渠道(非必填,字符串)
"_应用名称": "数据分析"// 自定义属性,命名规则见 "事件名、属性名规则" 章节
}
}
]
移动端data参数数据结构
"data": [
{
"dt": "pl",// 数据类型:pl:设备信息(必填,固定值)
"pr": {
"$rs": "1792x828",// 设备分辨率,间隔符支持: x,* (非必填,字符串)
"$dv": "iPhone12,1",// 设备型号(非必填,字符串)
"$lang": "zh-Hans-CN",// 系统语言(非必填,字符串)
"$os": "iOS",// 系统(非必填,字符串)
"$zs": "",// 弃用
"$cr": "46011",// 运营商(非必填,数字,见页尾参考值)
"$mkr": "Apple",// 设备制造商
"$tz": 28800000,//时区,固定参数(必填,int)
"$ct": 1730080033025// 事件时间(unixtime)(必填,单位是毫秒,数字)
}
},
{
"dt": "pl",// 数据类型:pl:设备信息(必填,固定值)
"pr": {
"$cr": "(null)(null)",// 运营商(非必填,数字,见页尾参考值)
"$ct": 1730080639431,// 事件时间(unixtime)(必填,单位是毫秒,数字)
"$os": "Android",// 系统(非必填,字符串)
"$tz": 28800000,//时区,固定参数(必填,int)
"$dv": "SM-G9250",// 设备型号(非必填,字符串)
"$lang": "zh",// 系统语言(非必填,字符串)
"$mkr": "samsung",// 设备制造商
"$zs": "",// 弃用
"$rs": "2560x1440",// 设备分辨率,间隔符支持: x,* (非必填,字符串)
"$ov": "7.0",//系统版本
"$br": "samsung",// 仅安卓
}
},
{
"dt": "usr",// 数据类型:usr:用户信息,identify(必填)
"pr": {
"$an": "zhugeiodemo",// appName
"$cn": "zhugeio-demo",// 渠道(非必填,字符串)
"$cr": "(null)(null)",// 运营商(非必填,数字,见页尾参考值)
"$ct": 1730080768132,// 事件时间(unixtime)(必填,单位是毫秒,数字)
"$os": "Android",// 系统(非必填,字符串)
"$ov": "7.0",//系统版本
"$tz": 28800000,//时区,固定参数(必填,int)
"$vn": "1.1",// 应用版本(非必填,字符串)
"$cuid": "hy",// 业务唯一id(如用户id,必填,字符串)
"_测试属性": "dd"// 自定义属性,命名规则见 "事件名、属性名规则" 章节
}
},
{
"dt": "evt",// 数据类型(必填,固定值) :evt为事件行为数据
"pr": {
"$an": "zhugeiodemo",// appName
"$cn": "zhugeio-demo",// 渠道(非必填,字符串)
"$cr": "(null)(null)",// 运营商(非必填,数字,见页尾参考值)
"$ct": 1730080751954,// 事件时间(unixtime)(必填,单位是毫秒,数字)
"$os": "Android",// 系统(非必填,字符串)
"$ov": "7.0",//系统版本
"$tz": 28800000,//时区,固定参数(必填,int)
"$vn": "1.1",// 应用版本(非必填,字符串)
"$sid": 1730080740409,// 会话ID(非必填,数字)
"$eid": "test",// 事件名称(必填,字符串),其中 收入事件(revenue) 为保留名称,请勿使用该名称,命名规则见 "事件名、属性名规则" 章节
"$net": "4",// 网络类型(非必填,数字,见页尾参考值)
"$sc": 2,// session排序(非必填,数字)
"_测试属性": "frr"// 自定义属性,命名规则见 "事件名、属性名规则" 章节
}
}
],
四、参考值列表
1. 运营商
参考值 | 运营商名称 |
---|---|
46000 | 中国移动 |
46001 | 中国联通 |
46002 | 中国移动 |
46003 | 中国电信 |
46005 | 中国电信 |
46006 | 中国联通 |
46007 | 中国移动 |
46011 | 中国电信 |
46020 | 中国铁通 |
2. 网络类型
参考值 | 网络类型名称 |
---|---|
0 | 移动网络 |
4 | WIFI |
3. 事件名、属性名规则
事件名、事件属性名、用户属性名规则:数字、大小写字母、下划线(英文)、中划线(英文)、汉字、$ (英文),命名长度 1~128 个字符
$ 开头为系统保留字段,不能作为事件名、属性名使用
正则参考:
python:^[a-zA-Z0-9_\u4e00-\u9fa5\-\$]{1,128}$
mysql: ^[a-zA-Z0-9_\u4e00-\u9fa5\-\$]{1,128}$
java: ^[a-zA-Z0-9_\\-\\u4e00-\\u9fa5\\$]{1,128}$
注意:写入kafka数据自定义属性均需以 _ 开头。