文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

系统设计 | 应用、微服务、流程、规则编排

2024-11-30 06:32

关注

这期的系统设计,我们讨论几个和编排相关的场景:

在现代企业应用中,上述编排需求已经非常常见,下面介绍一些开源框架或者工具实现上述诉求,以便在遇到类似的场景时,能选择合适的方案。

应用编排

在多数场景下应用编排,往往说的是部署单元和服务器资源管理,通常属于 Devops 领域。

一些中小型公司通常使用 Linux 的 SSH 登录,配合自己编写的部署脚本就可以完成部署和资源管理。但是对于大公司的运维人员来说,管理成千上万的服务器就显得吃力。

早期比较流行的服务器部署编排的工具有 Puppet、Ansible,在云平台兴起后出现了 Terraform 也非常好用,这些工具均可以操作虚拟服务器并自动完成批量自动化操作。

在部署方面这些工具都可以看做应用编排工具。

所以在很多文章中,应用编排的定义是跨多个计算环境自动化的协调复杂应用软件应用程序的部署、配置和管理。

在容器和微服务兴起后,基于代码即基础设施的编排理念出现了,通过定义应用程序和基础设施的状态来管理基础设施和应用,从而保证了一致性、快速复制能力、拓展性。

常见的工具有:

在 2023 年,了解学习 Docker Swarm + Kubernetes 可以应付大部分应用编排的场景和带来更多工作机会。

微服务编排

微服务编排往往说的是微服务之间的调用方式,以及如何给客户端提供友好的 API。

简而言之通常有两种微服务集成方式:

流程编排

流程编排往往和工作流引擎有关。

流程是一组用户活动按照一定顺序组成的序列流,顺序可能是串行、并行,在流程中可能存在准入准出机制、触发机制等。

所以工作流引擎编排的对象往往是一个系统完备的 API,一个活动也可以看做一个用例,这点需要和下面的业务规则编排区分开。

在 IT 系统中,流程引擎往往适用于下面这两种场景:

甚至工作流管理联盟(WfMC)在 1993 年对工作流引擎进行了规范化,使其能定义统一的接口,将各个应用接入到工作流体系中来。其模型概念如下图所示:

图片

参与到流程体系中的组件需要遵守一套规范,这样就可以流程互通。发展到现在,流程引擎的主流规范是 BPMN2.0。

主流的的流程编排引擎都支持 BPMN2.0,例如:Camunda、Activiti、Flowable 等。

BPMN 和 UML 一样是一套精确的图形化表示方法也被 OMG 组织管理,名称为”Business Process Modeling Notation”,即“业务流程建模标记法”。因此可以在前端灵活的拖拽设计生成 BPMN 文件,输出标准文件后,即可在流程引擎中动态加载和使用。

对于大型企业来说,流程引擎可以将不同的应用集成起来,并参与到企业的流程管理工作中来。

规则编排

规则编排和流程编排则显得不一样,规则引擎往往用管理业务规则,基于预定义的规则,当有业务输入时,根据输入获得不同的结果或者触发不同的行为。

例如,电商系统中对于不同积分和等级的会员获得的折扣可能不一样,这样就可以使用规则引擎灵活处理此类场景。

通过规则引擎可以让用户也能在一定范围进行配置,对业务结果和行为进行干预。

图片

规则引擎的开源方案并不多,目前可以使用的有:Drools、Liteflow(国产开源框架)。Drools 是一个标准的规则引擎框架,Liteflow 偏向代码组件级别的流程编排多一些。

和 BPMN 标准类似,在规则引擎领域也有一个 DMN 规范,即 Decision Model and Notation。从名字上就能清晰地区分 BPMN 和 DMN 的关系。

Drools 完整支持 DMN 在很多业务规则,对于业务规则复杂的场景是一个非常不错的选择。快速了解 DMN 可以参考:learn-dmn-in-15-minutes.com。

总结

应用编排和微服务编排为大多数人熟悉,但是对于流程引擎和规则引擎来说,了解的人可能不是很多。

实际上一些系统大量在使用流程引擎和规则引擎,通过剥离流程和规则,对于复杂应用系统来说大大增强其灵活性,这一点对架构师非常有帮助。

参考资料

来源:DDD和微服务内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯