- 收藏
- 加入书签
基于Lua的高可配置化C++中台服务调度系统的实现
摘 要:当今正处在互联网高速发展的时期,伴随着“互联网+”和数字经济战略步伐的快速迈进,网络应用渗透进了人们日常生活的方方面面。为了满足各行业在互联网时代,进行信息化建设改造的需求,亟需一种能应对多种复杂业务场景,同时能快速敏捷迭代,并能保持高并发性能的网络应用中台服务系统。本文既是基于此实际需求,利用Lua脚本构建可配置化的业务调度逻辑,并嵌入高性能的C++网络服务框架中,实现一套高可配置化的业务中台服务调度程序,具有高可扩展性、高可配置性、高并发性的特点。
关键词:Lua;C++;中台;网络服务
一、研究背景
当今各行各业均在着力进行信息化系统建设工作,各种网络应用系统应运而生。在满足行业信息化建设需求的同时,也面临着系统的业务逻辑复杂、业务更新频繁、适配系统多样、性能要求提升等难题,从而导致用传统方式开发后端程序的难度加大、周期变长、维护困难,难以应对业务个性化需求的快速增长。故在业务个性化需求特征很明显的应用场景下,后端系统的实现会考虑采用业务中台的模式,将系统的基础功能,与业务流程逻辑相分离,而对业务的个性化逻辑,采用脚本的形式进行扩展,并将脚本的调用和控制功能,嵌入到调度系统中。典型的案例,是游戏应用中,游戏主体本身的代码逻辑维持相对稳定,而游戏运营过程中的多种玩法场景的变化,则通过嵌入Lua脚本的形式实现。在Lua脚本中,编写个性化的逻辑代码。本文借鉴这一思路,利用Lua脚本来扩展业务的个性化需求,将调度系统的基础功能与业务逻辑隔离,业务的个性化需求,完全通过嵌入Lua脚本实现。以此开发一个通用的高可配置化的业务中台服务框架。
二、系统设计
以C++语言,构建一套调度系统的网络基础功能,实现高并发的网络服务接入;以Lua脚本语言作为个性化业务配置的脚本。将Lua脚本嵌入至C++的程序运行环境中执行,并拟定一套Lua脚本的设计开发规则,满足个性化业务逻辑的串行、并行、容错、重试以及个性化配置等中台业务调度需求。系统实现的技术关键点在于将Lua脚本嵌入C++运行程序中,并能实现与C++程序的数据交互;同时构建一套Lua脚本的编写规则,便于系统的调度运行。而C++程序主体,承担了并发通信、动态库调用外部系统支撑服务等基础功能。
系统间的主要模块关系如图1示:
其中,服务调度层:主要实现与调用方的交互,及对调用的个性化配置的请求进行解析执行;通信访问层:实现底层的接口通信访问,并返回相应格式的结果。通过动态链接库(So)的形式,与不同的信息审核服务接口进行底层的通信;管理模块:提供整个调度系统的启/停、系统资源使用情况的管理、调度服务的相关业务信息查询等功能。
具体来看,服务调度层依托C++异步并发执行框架,构建底层通信调度基础。通过共享内存队列,实现多个flow调度进程并发执行,处理外部请求。Flow进程负责解析服务调度描述脚本(Lua脚本),并将解析的业务调度信息,进一步传递给后端通信访问层,去执行真实的外部接口的访问调用。同时,也负责将外部接口返回的结果,传递给Lua脚本做结果的个性化处理。
通信访问层负责接收来自服务调度层给到的具体外部服务的接口调用信息,通过共享内存队列,分发给并发执行的trans进程。Trans进程负责加载对应的接口动态链接库,实现对具体的外部服务接口的访问。
上述各个模块,均采用了多活机制,做为系统高可靠性和高并发性的保障。处理调度服务指令的flow进程和处理服务接口访问的trans进程,均可以灵活扩展出多个运行实例,来满足高并发和高可靠性的要求。
而在整体架构中,个性化的调度服务,通过Lua脚本来描述,能适配多种业务场景的需求,而不需要改动C++调度进程本身的代码;访问外部支撑服务接口的逻辑,也是通过动态链接库来实现,并被C++进程动态加载,从而保证接口的变更,仅需要更新动态链接库,也无需改造C++进程本身。从而达到解决整个系统不因为某个业务服务的调整,而需要停机维护、中断重启的问题。
三、系统的性能测试
针对C++网络服务框架,在单进程、配置单个TCP监听端口和单个共享内存写队列的情况下,客户端模拟发起100个并发链接,且每个链接发出100个请求。在此压力下,框架可以接收每秒约1万的请求数量。
针对整套业务中台调度系统,在并发10个流程调度进程和10个外部接口访问进程,本机模拟外部接口请求直接返回的情况下,测试客户端发起300个并发链接,每个链接循环发出100个请求,总计3万个并发请求的平均处理耗时为80ms。
该性能,可以应对200万级别的日均访问量。
四、全文总结
本文利用Lua脚本进行个性化配置,并嵌入C++网络框架中,实现了高性能、高并发且业务逻辑高可配置化的通用中台服务系统,能很好的满足当今各行业的信息化系统建设,对业务中台系统的需求。
参考文献:
[1] 《一种C++与Lua自动绑定的方法》,李中东,中国科技信息. 2021,(02);
[2] 《基于微服务架构的软件系统信息资源交互设计》,王国娟,王利军,陈金华,聂顺林,自动化与仪器仪表. 2020,(11);
[3] 《基于微服务架构的APP应用改造案例浅析》,卢翔,毛广莉,李翠,信息技术与信息化. 2021,(01)


京公网安备 11011302003690号