一种面向后端的微服务低代码平台架构设计
作者:京东科技 常姜洲
一、背景
近期参加公司组织的极客中餐厅训练营,我们所在的小组接到的课题是微服务的低代码平台架构设计。目标是:结合京东业务研发实际情况,针对后端研发人员,设计一个微服务低代码平台,助力更高效低交付业务需求。现已结业,将我在本次项目中沉淀设计出的设计文档整理成文,期待与大家有进一步的碰撞沟通
二、低代码平台整体技术架构设计
1、低代码开发三阶段
平台为开发者的三个阶段提供的核心功能:
整个3阶段如下图所示:
2、低代码平台功能架构设计
角色与主功能说明:
本低代码开发平台的服务对象为开发者,旨在使用低代码开发平台,进行快速的微服务应用开发与部署,相对于传统的开发与部署方式减少研发时间,降低成本
Low Code 开发面板:
提供整个低代码应用开发生命周期的全功能的运营后台面板,可以在此面板完成开发阶段的各项配置、流程编排、脚本编写与调试、部署等功能。
Low Code 控制面板:
提供各种服务治理,告警配置管理,配置管理等服务控制功能模块
基础功能说明:
部署功能说明:
提供在线构建应用工程,在线调试函数、触发器、连接器等功能,调试完毕后可一键进行发布
特色功能:
为进一步提升业务域功能复用度,进一步减少重复功能开发的成本,同样提供基于模板,函数扩展点等功能的快速复用湖开发
依赖:
3、低代码应用开发流程
应用生命周期4阶段
开发与测试、构建保存、发布、运行
广义流程编排
4、低代码平台技术架构
5、低代码平台应用部署架构
6、低代码平台各角色系统工作机制
7、低代码平台单机应用架构
单机运行环境简介
单机应用架构
三、低代码平台详细设计
由于是小组共创设计,我在详细设计中主要负责了连接器与触发器的设计部分,其他如函数、配置部分的设计与此详细设计这里不再赘述。大概思路如下
函数:支持各种语言的表达式函数、支持BPMN可视化流程编排
多环境配置:需要支持测试、生产、预发等环境配置文件
日志: 支持平台开发者自定义日志是否打印,打印格式,是否有掩码等
1、连接器的设计
连接器定义
连接器的0代码开发与部署流程
2、自定义连接器
1、为了适应内外部不同的连接器诉求,平台提供自定义触发器的能力
2、预留使用连接器使用的配置信息,为引入的通信中间件预留未来使用该触发器的使用方需要0代码配置的配置信息,如数据库的地址,账号密码等信息
3、连接器需要实现平台提供的API,这样以便函数或者触发器可以直接调用该连接器
4、调试无误后保存触发器,提交平台审核,审核通过后平台可上架该触发器
3、自定义触发器
1、为了适应内外部不同的触发器诉求,平台提供自定义触发器的能力
2、预留使用触发器使用的配置信息,为引入的通信中间件预留未来使用该触发器的使用方需要0代码配置的配置信息,如JSF的接口地址,别名等
3、使用纯代码写出该触发器的源代码,并预留调用低代码函数的入口,以便将来使用该触发器的使用者可以0代码配置触发器所调用的函数
4、调试无误后保存触发器,提交平台审核,审核通过后平台可上架该触发器
四、低代码应用源文件
a、元信息,0代码,包含低代码应用的0代码开发部分的触发器元信息、连接器元信息
1、触发器配置信息:
2、连接器配置信息
b、源文件,0代码,包含:流程文件、脚本文件
c、多环境配置,0代码,包含各个环境的配置文件
d、日志组件配置
e、监控组件配置
d、低代码平台应用底座:
执行引擎、LC Proxy、中间件依赖的jar、应用框架springboot的jar等,这部分跟随不同的构建部署方式为可选项
五、低代码应用的构建部署方式
1、源文件热部署
这种方式应对于低代码平台的租户使用低代码平台所有集群的共享资源,选取一部分可用资源以后在控制面板进行选择发布,可以使用指定ip的模式应对相关权限问题,也可以不指定ip使用平台自定义分配。
2、构建jar包、war包
这种方式应对于有自己的主机用户,拿到成品后即可部署无状态应用,打的包中不包含LC Proxy部分,执行引擎在应用启动的时候自动加载包中特定路径的流程文件、脚本文件等。
3、构建镜像
这种方式应对于有自己的容器用户,拿到成品后即可部署无状态应用,打的包中不包含LC Proxy部分,执行引擎在应用启动的时候自动加载包中特定路径的流程文件、脚本文件等。
4、低代码平台和部署平台的关系
六、一些问题的思考与收获
1、扩展性不仅仅是在某一项功能上的扩展,站在全局视角看在架构设计中所有产品功能理论上都要尽可能考虑模块化,可插拔,进而搭积木成平台化,真正做到全场景和全链路可扩展
2、团队小伙伴对HTTP 触发器的设计输出,让我联想到 JSF注册中心等通用类注册中心都要解决的高可用问题,举一反三,同场景的同类解决方案的核心问题是相通的
3、对于未来业务发展生命周期没那么长,数据要求没有强隔离诉求的场景,能否基于数据模型做一层数据层的0代码开发?
4、流程驱动的低代码可以和数据驱动的低代码很好地结合起来
5、低代码平台产出物的多样化,为之后交付项目的产出物打开了思路,很多时候要站在客户角度考虑,客户的应用场景是什么,需要什么,那么我们就提供什么,张宇轩单元可跑,也可圈定某一部分功能集合,打包输出
低代码平台适合的场景的一些思考
1、可以应用在上层营销系统的开发中
2、可以用在流程较为通用的场景如:消息转化、数据统计、接口转发
3、可以应用在已有成熟的业务线进行外围的业务开发,如支付、结算等稳定系统上层要做一些简单业务编排的场景用
4、 面对同样一个业务需求是使用低代码开发还是使用纯代码开发,没有明确的可量化的分水岭,但是建议尝试,从中获到提效之后下一次面临需求的时候就会有较为明确的答案
案例1:我们曾在一个上层营销活动系统重尝试基于表达式引擎做了一个半配置化的活动配置系统(那个时候还没听过低代码这个词),现在想来算是比较原始的支持低代码系统,上新一个活动原本需要3个人日的开发量,基于对以往流程的复用,使用脚本语言,使用表达式进行编排和发布,0.5人日就搞定了,且系统无需重新发布。不得不说在合适的场景,低代码还是非常有空的。
案例2:大促的时的业务数据大屏的制作相信很多人都经历过,我们最近两次大促采取的方案都是使用星链对已有的数据接口和新的数据指标进行简单编排加工,提供JSF服务,再结合我们内部的网关系统将接口协议转化为HTTP, 直接在展示平台(如莫奈大屏)上直接使用,大促过后资源也可随之释放,非常方便与高效,同时也降低了研发成本
七、结语
参加训练营后还是有一些感触想分享给大家
1、感谢马老师的指导和各位评委老师的指点,感恩大家的信任,感谢同组的大佬们,从大家身上学习到不同的思路。每个人来此不同团队,通过和大家的讨论,发掘了很多新的看待产品与架构的视角
2、流程驱动的低代码平台可以和数据驱动的低代码以及部分0代码开发组件可以很好地有机整合成统一的低代码平台,进一步提升研发效率
3、整体感觉训练营节奏紧凑,干货满满,架构设计方面对平台扩展性的思考充分得到训练

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
AR Engine毫秒级平面检测,带来更准确的呈现效果
近年来,AR版块成为时下大热,这是一种将现实环境中不存在的虚拟物体融合到真实环境里的技术,用户借助显示设备可以拥有真实的感官体验。AR的应用场景十分广泛,涉及娱乐、社交、广告、购物、教育等领域:AR可以让游戏更具互动性;商品通过AR展示更真实;使用AR进行教育教学让抽象事物更形象等,可以说AR技术已经渗透人们生活的方方面面。 为了让人们产生强烈的视觉真实感,AR首先要解决的问题就是如何将虚拟对象准确地融合到现实世界中,即让虚拟对象以正确的姿态显示在真实场景的正确位置上。一些AR方案完成环境识别与摄像机位姿计算之后,没有进行平面检测就直接叠加虚拟对象显示,导致虚拟对象与真实环境没有很好的贴合度,用户容易产生视觉错位,影响虚拟对象在现实中的呈现效果。因此,如何在不同的真实环境中准确检测出水平或垂直平面,与放置虚拟对象位置的平面保持一致,是用户与AR进行交互的重要一步。 华为HMS Core AR Engine跟踪设备周围的光照、平面、图像、物体、环境表面等环境信息,辅助开发者们的应用实现虚拟物体以场景化的方式逼真地融入现实物理世界。其中平面检测能力可识别到水平和垂直平面(地面或墙面)上的成...
- 下一篇
图计算引擎分析--GridGraph
作者:京东科技 李永萍 GridGraph:Large-Scale Graph Processing on a Single Machine Using 2-Level Hierarchical Partitioning 图计算框架 图计算系统按照计算方式划分可分为:单机内存图处理系统,单机核外图处理系统,分布式内存图处理系统,分布式核外图处理系统。本文将详细介绍单机核外图处理系统GridGraph。 GridGraph论文分析 单机核外图处理系统 单机内存图处理系统受限于内存空间和单机算力,能够解决的图规模有限。分布式内存图处理系统理论上可以随着集群规模的增大进而解决更大的图规模,但集群间的网络带宽问题,负载不均衡,同步开销大,容错开销和图分割挑战也愈变明显。无论是单机还是分布式,内存式图处理系统能够处理的图规模都是有限的。因此想要使用更少的资源解决更大的图规模,可以使用单机核外图处理系统。单机核外图处理系统使用磁盘顺序读写进行数据置换,能够在有限的内存中计算更大规模的图。单机核外图处理系统在最大化利用磁盘顺序读写,在选择调度和同异步计算模式等方面做出了重要探索。 GridGraph...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题