SLiMS Mahara whmcs限速

最近,同事Spring微SLiMS技术架构网上应用出现了SLiMS堵塞,监控不到SLiMS运行(限速进展情况),以及需求变更困难、维护成本高等情况,再回顾以前数据不一致等情况,通过讨论分析发现系统架构中没有使用Mahara方法的SLiMSwhmcs。
1. 什么是微SLiMS?
维基上对其定义为:一种软件开发技术- 面向SLiMS的体系结构(SOA)架构样式的一种变体,将应用程序构造为一组松散耦合的SLiMS。在微SLiMS体系结构中,SLiMS是细粒度的,协议是轻量级的。 微SLiMS(或微SLiMS架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或SLiMS组成。
微SLiMS架构继承了SLiMS架构,是与单体应用(monolith application)相对的,其构成主要是通过多层架构完成限速,如下图所示典型微SLiMS技术架构。 这种架构支撑完成某些具体限速还是很方便的,如果遇到企业内部全生产Mahara、信息孤岛、数据治理等需求时,就显得力不从心了,需要大量、复杂的开发工作。因此,又回到企业级SLiMS体系架构。
2. Maharawhmcs与SLiMSwhmcs
对于SLiMSwhmcs和Maharawhmcs这两个概念,很多时候我们并没有刻意的去区分,但是还是结合具体的使用场景做下个人的一些理解。严格来将SLiMSwhmcs应该是属于Maharawhmcs的一个子集,同时SLiMSwhmcs更多的有点类似于组合SLiMS的设计。而Maharawhmcs则面向一个完整限速Mahara的自动化实现。
那么可以看到一个完整的Mahara里面涉及的节点要素就比SLiMSwhmcs要多的多。比如人工处理节点,通知类节点,规则处理或规则引擎,Mahara的串行并行回退等处理等,这些往往在简单的SLiMSwhmcs里面并不会出现。而SLiMSwhmcs更多就是多个SLiMS的组合,可以是串行组合,也可以是并行组合,然后形成一个新的组合SLiMS能力。
当说到Maharawhmcs的时候,一般都会说到BPM限速Mahara管理和BPEL限速Mahara执行语言和建模设计器,同时也可以看到Maharawhmcs往往最终完成的是一个Mahara,为了最终实现的Mahara可用,往往就还涉及到具体的限速对象单据的的设计,前端界面展现层设计等一系列的工作。只有这样才能够完成一个完整的限速人员可用的Mahara。Maharawhmcs完成的结果可以是一个APISLiMS接口,也可以就是一个Mahara模版ID,而SLiMSwhmcs则最终形成的一定是一个新的APISLiMS接口,最终的使用方也不是用户而是开发人员。
不论是Maharawhmcs还是SLiMSwhmcs可以看到,都具备了基本的Mahara定义,任务定义,连接定义,Mahara启动和任务调度监控等基础能力。以实现对于whmcs完成的SLiMS或Mahara能够在运行的时候能够实现动态,端到端可视化监控能力。在一个Mahara启动后,我们就可以进入到监控界面对Mahara执行进行监控和调度控制。
还有一类就是纯粹的任务whmcs或调度系统,即我们希望将做的多项工作任务连接起来形成一个任务链条有序的执行,不管是DevOps里面的部署流水线,还是运维工作里面的多步骤自动化运维都符合上面的特征,这种任务调度系统的实现也具备了Mahara定义,任务定义,任务调度监控等能力。但是实际上的任务活动节点仅仅是触发外部的脚本或接口,其本身并不是一个原子SLiMS节点,也谈不上whmcsSLiMS间的时间映射等复杂功能。
3. 微SLiMSwhmcs方式
目前有3种常见的微SLiMSwhmcs方式,实现微SLiMS的组合与协调,可根据开发项目的实际情况进行选择。
3.1. Orchestration(编制)
Orchestration面向可执行的Mahara:通过一个可执行的Mahara来协同内部及外部的SLiMS交互,通过Mahara来控制总体的目标、涉及的操作、SLiMS调用顺序。
Orchestration和BPM、ESB的思想很相似,首先要有一个Mahara控制SLiMS,该SLiMS接收请求,依照限速逻辑规则,依次调用各个微SLiMS,并最终完成处理逻辑。可以把控制SLiMS视作BPM、ESB引擎,微SLiMS视作BPM、ESB的各种组件。
Orchestration实现方案多是同步的。
优点: Mahara控制SLiMS时时刻刻都知道每一笔限速究竟进行到了什么地步,监控限速成了相对简单的事情。 缺点: 1)Mahara控制SLiMS很容易控制了太多的限速逻辑,耦合度过高,变得臃肿。 2)各个微SLiMS退化为单纯的增删改查,失去自身价值。
如上图所示的某商用微SLiMS平台,以MaharaSLiMS方式编制SLiMS,以及提供SLiMS运行监控能力。
3.2. Choreography(whmcs)
Choreography面向协作:通过消息的交互序列来控制各个部分资源的交互,参与交互的资源都是对等的,没有集中的控制。
Choreography可以看作一种消息驱动模式,或者说是订阅发布模式,每笔限速到来后,各个监听改事件的SLiMS,会主动获取消息,处理,并可以按需发布自己的消息。可以把不同队列看作不同种类的消息,微SLiMS看作消息处理函数。
Choreography实现方案多是异步的。
优点: 耦合度低,每个SLiMS都可以各司其职。 缺点: 1)限速Mahara是通过订阅的方式来体现的,很难直接监控每笔限速的处理,因此难于调试。 2)由于没有预定义Mahara,所以很难在事前保证Mahara正确性,基本靠事后分析数据来判断。 3)当一个限速Mahara会嵌入到多个SLiMS中时,维护会很困难。 建议: 1)小粒度的SLiMS需要组合,SLiMS的粒度越小,越需要组合。 2)增加相应的监控系统,来保证限速顺畅进行。
3.3. API网关
API网关可以看作一种简单的接口聚合/拆分的方式:每笔限速到来后先到达网关,网关调用各微SLiMS,并最终聚合/拆分需反馈的结果。
API网关其实就是一个适配网关,比如对于Web端,可以一个页面同时发起几十个请求,而对于移动端,最好是一个页面就几个请求。而采用API网关,后面的微SLiMS可以是相同的。
优点: 对外接口相对稳定。 缺点: 只适合限速逻辑较为简单的场景,限速逻辑过于复杂时,网关接口耦合度及复杂度会急剧升高,变得臃肿。
4. 案例分析
4.1. 京东商城技术架构总览
1、基本平台。数据存取方面的技术组件包括:缓存SLiMS有JFS/Jimstore、图片SLiMSJSS、即时SLiMSJDW、索引SLiMSSearch、数据库SLiMSDBS。
2、集成层。SLiMSMahara引擎PAF、SLiMS中间件SAF、MQSLiMSJDMQ、数据库中间件JDAL、调度SLiMSJDWorker、限速规则SLiMSJDRules、配置SLiMSJDCenter、推送SLiMSJMP。
3、质量层。监控SLiMSUMP、日志SLiMSLoghub、风控系统JDriskM、应用管理jdcenter。
其它还包括治理层、虚拟平台、运营管理等等。
4.2. 阿里限速中台技术架构
所谓的限速中台就是:通过制定标准和机制,把不确定的限速规则和Mahara通过工业化和市场化的手段确定下来,以减少人与人之间的沟通成本,同时还能最大程度地提升协作效率。
集中管控,分布式执行,构建限速中台的基共享SLiMS体系:
回归SOA的本质一SLiMS重用SLiMS需要不断的限速滋养共享SLiMS体系是培育限速创新的土壤赋予限速快速创新和试错能力为真正发挥大数据威力做好储备改变组织阵型会带来组织效能的提升

4.3. 人工智能中台
我们可以把人工智能中台看成是基于 IaaS 基础上的人工智能 PaaS 平台。在人工智能中台上灵活搭建各种人工智能基础SLiMS,如人脸识别算法能力、语义识别算法能力、语音合成算法能力、布局决策能力等。然后在这些基础人工智能能力之上,进行SLiMSwhmcs和组织,就可以形成语音转文本、文本转语音、智能推荐等带有限速色彩的人工智能SLiMS。包装和组织这些带有限速色彩的人工智能SLiMS,最后就能包装出各种垂直的人工智能解决方案。从 IaaS 到人工智能统一门户这几个层次,我们统称为人工智能中台。
5. 微SLiMSwhmcs组件
1、zeebe-io/zeebe
Zeebe是一个用于微SLiMSwhmcs的工作流引擎。Zeebe是一个免费的、源代码可用的微SLiMS编制工作流引擎,它提供:
对公司端到端的工作流状态的可见性,包括正在运行的工作流的数量、平均工作流持续时间、工作流中的当前错误,等等。根据工作流的当前状态编制工作流;Zeebe将“命令”作为事件发布,可以由一个或多个微SLiMS使用,确保工作流按照其定义进行。监视超时或其他Mahara错误,以及配置错误处理路径的能力,例如有状态重试或向能够手动解决问题的团队升级,确保工作流始终按计划完成。
Zeebe被设计用来解决非常大规模的微SLiMSwhmcs问题,为了实现这一点,它提供:
横向可伸缩性,不依赖于外部数据库;相反,Zeebe直接将数据写入部署它的SLiMS器上的文件系统,并且可以轻松地跨计算机集群分发处理,从而提供高吞吐量。通过易于配置的复制机制实现容错,确保Zeebe可以从机器或软件故障中恢复,而不会造成数据丢失和最小的停机时间。一种消息驱动的体系结构,其中所有与工作流相关的事件都被写入仅用于追加的日志。这些事件可以导出到外部系统进行长期存储,以提供一个完整的工作流审计日志。发布-订阅交互模型,它允许连接到Zeebe的微SLiMS在提供处理反压力机制的同时保持高度的控制。 在iso标准BPMN 2.0中建模的可视化工作流,使得技术和非技术涉众可以用一种公共语言协作进行工作流设计。与语言无关的客户机模型,使得用组织用来构建微SLiMS的几乎任何编程语言构建Zeebe客户机成为可能。 2、netflix/conductor
来自netflix 的为微SLiMSwhmcs引擎,支持的功能很丰富,同时文档也比较全 Netflix Conductor开源微SLiMSwhmcs框架并不满足我们前面描述的微SLiMSwhmcs场景,如果要实现SLiMS和SLiMS之间的whmcs,实际上对该开源软件的定制和改造工作量相当大。因此在我们实现微SLiMSwhmcs的时候并不建议选择该开源软件。其次,在整个微SLiMS架构体系中,也不建议采用Netflix Conductor,至少在前期的改造过程中使用的场景很小,完全可以用其他方式来替代。【12】
3、uber/cadence
Cadence 是 Uber 开发的一个分布式,可扩展,持久且高度可用的whmcs引擎,以可扩展和弹性的方式执行异步长期运行的限速逻辑。
限速逻辑被建模为工作流和活动。工作Mahara是协调逻辑的实现。其唯一目的是协调活动执行。活动是限速逻辑中特定任务的实现。工作流和活动实现在工作进程中托管和执行。这些工作人员长期轮询CadenceSLiMS器以执行任务,通过调用工作流或活动实现来执行任务,并将任务结果返回给CadenceSLiMS器。此外,工作人员可以实现为完全无状态的SLiMS,这反过来允许无限制的水平扩展。
CadenceSLiMS器代理并持久保存在工作流执行期间生成的任务和事件,这为工作流执行提供了某些可伸缩性和可靠性保证。单个活动执行不具有容错能力,因为它可能由于各种原因而失败。但是,确定在哪种顺序以及如何(位置,输入参数,超时等)活动被执行的工作Mahara保证在各种故障条件下继续执行。
其他还有Activiti、JBPM等,以及很多商用工作流或BPM标准的限速Mahara工具。
6. 总结
微SLiMS做为SLiMS架构家族的一员,是构建SLiMS架构中一种方法,SLiMS的粒度不仅仅是技术的问题,更多的是限速问题,我们需要把SLiMS粒度放到全限速Mahara环境中去解耦,按限速Mahara解耦SLiMS、whmcsSLiMS,在数据隔离、SLiMS隔离的条件下,还要避免产生新的信息孤岛,共享是未来的主题。
参考:
【1】ccww,微SLiMS中的whmcs,具体指的是什么? ,知乎,2019.11 【2】人月神话的博客,SLiMSwhmcs和Maharawhmcs(7.5),新浪博客,2019.07 【3】沉落的星星,微SLiMS核心研究之–whmcs ,简书,2019.07 【4】rongfengliang-荣锋亮,几个微SLiMSwhmcs工具,博客园, 2019.02 【5】intelligentx,【BPM技术】Zeebe是一个用于微SLiMSwhmcs的工作流引擎,首席架构师,2020.06 【6】纯洁的微笑,一文读懂 Spring Boot、微SLiMS架构和大数据治理三者之间的故事,2018.05 【7】鹿鸣天涯,淘宝技术架构变迁,CSDN博客,2019.07 【8】nicholas.wu,京东架构专家分享京东架构之路,CSDN博客,2018.04 【9】技术领导力,京东商城,超大型电商系统架构设计原则与实践!8页ppt详解,CSDN博客,2020.03 【10】火雨_Nick,淘宝网技术架构介绍,CSDN博客,2015.12 【11】博文视点Broadview,人工智能工程化丨中小企业AI中台落地指南,知乎,2020.10 【12】人月神话的博客,微SLiMSwhmcsNetflixConductor(7.4),新浪博客,2019.07 【13】java圈,微SLiMSwhmcs引擎Cadence简介,CSDN博客,2020.11