全生命周期的低码方案
如果无法正常显示,请先停止浏览器的去广告插件。
1. 全生命周期的低代码方案
叶鑫林 - ryan
腾讯 数据产品开发组 负责人
2.
3. 西电
腾讯
设计、企业IT、安全、数据
技术栈
大数据、后台、前端
低代码
OTeam PMC、《腾讯低代码企业标准》
项目
腾讯问卷、光谱、天眼、安全中心研发平台
叶鑫林 - Ryan
当前
一站式数据平台
4. 前言:关于今天的课题
架构
M2
M1
协作的思想
M3
《低代码企标》
text
5. • 全生命周期的低码方案简介
• 技术架构介绍
• 落地实践
• 总结展望
6. 1.1 低代码可以做什么?
逻辑可视化
UI可视化
form
chart
table
规则引擎
UI平台
7. 1.2 全生命周期的低代码方案
数据处理
SELECT *
接口
逻辑可视化
UI可视化
form
gateway
FROM table chart
WHERE condition=... table
数据平台
微服务
规则引擎
调度与部署
UI平台
8. 1.3.1 低代码要解决的业务问题
需求:统计某业务的全国各城市登陆人数,并提供一个可检索的页面
传统流程:数据开发->后台开发->前端开发
低代码流程:
数据平台
SQL完成数据统计
逻辑可视化
配置可检索接口
如何让非开发人员,独立完成配置?
UI可视化
配置可交互页面
9. 1.3.2 低代码的痛点
数据平台
SQL完成数据统计
日志记录的是IP
目前要按城市计数
SQL无法处理复杂逻辑
逻辑可视化
配置可检索接口
配置接口
库?账号?密码?
表名?字段?类型?
Ctrl+C Ctrl+V
还是给开发提需求
比较简单
UI可视化
配置可交互页面
接口地址?
请求方式是什么?
参数是什么?
返回是什么?
Ctrl+C Ctrl+V
10. 1.4.1 step1 使用SQL统计数据
数据平台
SELECT *
FROM table
我们需要
更强大的SQL
SELECT count(*), udf_ip_2_city(ip) FROM login_table
WHERE condition=...
Metadata
result_table
• count
• city
11. 1.4.2 step2 快速生成查询接口
数据平台
Metadata
SELECT * result_table
FROM table •
count
•
city
WHERE condition=...
微服务
gateway
Mock
@url get_city_data
@input city string 城市
@output list
CURD还要开
发接口?
微服务
gateway
规则引擎
12. 1.4.3 step3 接口+页面的快速配置
配置前端靠
Ctrl c+v?
微服务
gateway
Mock
UI平台
@url get_city_data form
@input city string 城市 chart
@output list table
13. 我们要解决的3个问题
我们需要
更强大的SQL
CURD还要开
发接口?
配置前端靠
Ctrl c+v?
14. • 全生命周期的低码方案简介
• 技术架构介绍
• 落地实践
• 总结展望
15. 2.1 架构概览
UI平台
FORM
TABLE
CHART
自动
配置
数据平台
视图
Metadata
select api(xxx) from table
UDF
Mock
规则引擎
自动
组件
微服务
CUR
D
自动
注册
16. 2.2.1 联动的设计理念—协议
Metadata
mock
存储
type、host、port、user、password、db
表
字段 存储类型 字段抽象
openid string 账号
reason string 渠道
money_type int 代币类型
output bigint 数量
#各城市登陆统计表查询
POST /get_city_login_count
INPUT
{
date #统计时间
city #城市
page #翻页参数
…
}
OUTPUT
{
code: 0 #状态码
data:
}
17. 2.2.2 什么是Mock
MockServer
前端
后台
接口请求
请求拦截
Mock Data
如何收集?
Mock CGI mock
Mock Data 接口响应
模拟返回
Mock的应用场景:开发联调、单测
CGI
18. 2.3.1 一切皆微服务
微服务网关
开发者API
通用API(CURD)
Mock Server
第三方API对接
19. 2.3.2 微服务自动注册mock
Client
mock
1: input
Gateway
Doc server
2: input
4: output
Mock Server
5: input + output + doc
3: output
#IP转城市
POST /ip/ip_2_city
INPUT
{
ip: “1.1.1.1” #IP
}
OUTPUT
{
data: “深圳” #城市
code: 0 #状态码
}
tips
Gateway: 抽样上报、增
量上报、异步上报
MockServer:多版本控
制、覆盖策略
20. 2.3.3 MockSever设计
input
http
header
match
output
unmatch
mock
doc
""”
数据源分页搜索
@ param
data_source_type String 可选 数据源类型
data_source_name String 可选 数据源名称
created_by String 可选 创建者
created_start String 可选 创建开始时间
created_end String 可选 创建结束时间
page_size Int 必选 分页每页大小
page_index Int 必选 分页页码
@ return
created_at 创建时间
updated_at 更新时间
空格分割
description 描述
关键词
…
替换
"""
match
unmatch
update
#TITLE
method url
INPUT
{
input
}
OUTPUT
{
}
output
titile 数据源分页搜索
url /data/get_source_list
method
请求字段
GET
路径
biz_id
…
返回字段
同服务
单词库
路径
result
created_at
…
data[*].
created_at
类型 说明
int 业务ID
类型 说明
bool 结果
string 创建时间
http
header
21. Mock Data
如何收集?
通过统一网关的自动采集,所有接口我们都“了如指掌”
下一步,Mock还能做什么?
我们需要
更强大的SQL
CURD还要开
发接口?
配置前端靠
Ctrl c+v?
22. 2.4.1 常规的 SQL UDF 实现
UDF 全称为 User Defined Function, 即用户自定义函数
UDF代码包
myfun(a, b){
return a+b
SELECT
注册
SQL执行引擎
}
执行
myfun(a, b)
FROM
table
UDF 注册过程
微服务?
23. 2.4.2 SQL+微服务
mock
#IP转城市
POST /ip/ip_2_city
INPUT
{
ip: “1.1.1.1” #IP
}
OUTPUT
{
data: “深圳” #城市
code: 0 #状态码
}
微服务
gateway
SELECT count(*), udf_ip_2_city(ip) FROM login_table
url、method、param、return
HTTP
电光火石:4步点击注册UDF
拒绝繁琐的UDF开发过程
24.
25. 2.4.3 SQL+微服务的加速调用方案
异步请求
1
1
2
同步请求
1
2
3
并行度提升
微服务
1
2
2
微服务
中间结果生成
重新分区,提升并行度
1、UDF注册
Task1
分片1
2、SparkSQL执行
3、标记UDF字段
(伪执行)
4、输出中间结果
异步真实请求
Task2
分片2
缓存策略
限流、排队
Task1
分片1
Task2
分片2
Task3
分片3
SparkSQL UDF架构——提升请求效率与成功率
MapPartitions
异步http请求
26. 我们要解决的3个问题
我们需要
更强大的SQL
SQL+微服务
UDF快捷注册
UDF异步调度加速
CURD还要开
发接口?
配置前端靠
Ctrl c+v?
27. 2.5 根据Metadata生成CURD接口
Metadata
create
存储
type、host、port、user、password、db
表
字段 存储类型 字段抽象
date string 时间
city string 城市
count int 登陆人数
update
read
delete
mock
#各城市登陆统计表查询
POST /curd/1000/read
INPUT
{
date #统计时间
city #城市
count #登陆人数
}
OUTPUT
{
code: 0 #状态码
msg: ’’#返回说明
}
微服务
APIJSON
CURD方案选型:APIJSON
腾讯开源零代码接口和文档 ORM 库
1. 文档自动化
2. 接口自动化
3. 多语言支持
28. 2.6.1 规则引擎设计
BPMN2.0协议
实时异步双引擎
清洗
组件
微
服
务
代码
节点
以微服务对外
29. 2.6.2 规则引擎架构图
异步接入层
同步接入层
高/低优先级
队列
网关
任务生产者
版本管理
任务消费者
同步引擎
异步引擎
组件库
在线调试
Pipeline Parser
Mock
Server
组件
注册
凭证中心
微服务
DB / Cache
日志
采集
版本管理
运维
监控
30. 2.6.3 规则引擎基于Mock自动注册组件
所有微服务接口
自动注册为组件
31. 2.6.4 规则引擎生成最终查询接口
mock
如:时间校验
参数校验
权限校验
CURD接口
调用
错误返回
#各城市登陆统计表查询
POST /get_city_login_count
INPUT
{
date #统计时间
city #城市
page #翻页参数
…
}
OUTPUT
{
code: 0 #状态码
data: {
list: []
page:
}#统计列表
}
32. 我们要解决的3个问题
我们需要
更强大的SQL CURD还要开
发接口?
SQL+微服务 APIJSON
UDF快捷注册 通用CURD接口
UDF异步调度加速 规则引擎编排
配置前端靠
Ctrl c+v?
33. 2.7.1 UI平台设计
Form
Form
Form
Table
Chart
页面逻辑配置
Table
Chart
Table
Chart
Mock快捷配置
组件库
value、width
…
http、onclick
…
拖拉拽可视化配置
${ID1}
属性
系统
事件
组件实例
${ID}
自定义
事件
onclick
${ID2}
Mock预览 / 实时预览 / 一键部署
逻辑配置模型举例
Mock Server
http
${ID2}
value
34. 2.7.2 微服务接口与UI平台
1、请求地址:url
2、请求方式:method
3、上报参数:param
4、表格输出 (字段名、中文名)
mock
#各城市登陆统计表查询
POST /get_city_login_count
INPUT
{
date #统计时间
city #城市
page #翻页参数
…
}
OUTPUT
{
code: 0 #状态码
data: {
list: []
page:
}#统计列表
}
UI可视化
form
chart
table
UI平台
一键补齐
配置再次提速
35.
36.
37. 我们要解决的3个问题
我们需要
更强大的SQL CURD还要开
发接口?
SQL+微服务 APIJSON
UDF快捷注册 通用CURD接口
UDF异步调度加速 规则引擎编排
配置前端靠
Ctrl c+v?
Mock一键配置
Mock实时预览
38. 2.8 回顾一下我们的需求
需求:统计某业务的全国各城市登陆人数,并提供一个可检索的页面
数据平台
SQL完成数据统计
SQL+微服务
覆盖数据生产到运营系统
逻辑可视化
配置可检索接口
UI可视化
配置可交互页面
配置自动化
接口自动化
SELECT
udf_ip_2_city(ip) as city, count(distinct(openid)) as user_cnt
FROM .. GROUP BY city
产品也能自己搞定
规则引擎对CURD[通过metadata自动生成]接口进行编排[可选]
UI平台通过Mock一键生成表格
39. • 全生命周期的低码方案简介
• 技术架构介绍
• 落地实践
• 总结展望
40. 客服系统
运维安全SOAR
“道具/代币补发功能自助开发”
“运维风险自动收敛”
光谱:游戏经济系统监控
天眼:内部安全监控
3000个任务 1000个接口 200个模板 600个页面
数据处理 接口 逻辑可视化 UI可视化
SELECT *
form
gateway
FROM table chart
WHERE condition=... table
数据平台
微服务
规则引擎
UI平台
41. • 全生命周期的低码方案简介
• 技术架构介绍
• 落地实践
• 总结展望
42. 4.1.1 总结 / 平台间的协作协议流转
规则引擎
数据平台
SELECT *
FROM table
1
WHERE condition=...
Metadata
4
2
5
微服务
gateway
3
6
Mock
7
UI平台
form
chart
table
43. 4.1.2 总结 / 通过 Metadata & Mock 的自动注册,各子系统相辅相成
UI平台
FORM
TABLE
CHART
自动
配置
数据平台
视图
Metadata
select api(xxx) from table
UDF
Mock
规则引擎
自动
组件
微服务
CUR
D
自动
注册
44. 4.2.1 展望/低代码平台层出不穷,我们需要规范
《腾讯低代码企业标准》架构图
45. 4.2.2 展望/低代码生成运行架构
《腾讯低代码企业标准》生产运行架构图
46. 4.2.3 展望/DSL与Schema
《腾讯低代码企业标准》DSL转换Schema示意图
47. 4.2.4 展望/行业统一的DSL
平台A
DSL
平台A
平台B
平台B
Schema
迁移难,平台绑架产品?
产品
通用语言,各低码平台相互兼容
产品打包带走,更健康的低代码生态
产品
产品
48.
49.