掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流
在架構(gòu)設(shè)計(jì)中,經(jīng)常會(huì)聽(tīng)到人講編排這個(gè)概念。但實(shí)際上,在不同場(chǎng)景下他們說(shuō)的可能不是一回事。

10余年的濂溪網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷(xiāo)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整濂溪建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“濂溪網(wǎng)站設(shè)計(jì)”,“濂溪網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
這期的系統(tǒng)設(shè)計(jì),我們討論幾個(gè)和編排相關(guān)的場(chǎng)景:
在現(xiàn)代企業(yè)應(yīng)用中,上述編排需求已經(jīng)非常常見(jiàn),下面介紹一些開(kāi)源框架或者工具實(shí)現(xiàn)上述訴求,以便在遇到類(lèi)似的場(chǎng)景時(shí),能選擇合適的方案。
在多數(shù)場(chǎng)景下應(yīng)用編排,往往說(shuō)的是部署單元和服務(wù)器資源管理,通常屬于 Devops 領(lǐng)域。
一些中小型公司通常使用 Linux 的 SSH 登錄,配合自己編寫(xiě)的部署腳本就可以完成部署和資源管理。但是對(duì)于大公司的運(yùn)維人員來(lái)說(shuō),管理成千上萬(wàn)的服務(wù)器就顯得吃力。
早期比較流行的服務(wù)器部署編排的工具有 Puppet、Ansible,在云平臺(tái)興起后出現(xiàn)了 Terraform 也非常好用,這些工具均可以操作虛擬服務(wù)器并自動(dòng)完成批量自動(dòng)化操作。
在部署方面這些工具都可以看做應(yīng)用編排工具。
所以在很多文章中,應(yīng)用編排的定義是跨多個(gè)計(jì)算環(huán)境自動(dòng)化的協(xié)調(diào)復(fù)雜應(yīng)用軟件應(yīng)用程序的部署、配置和管理。
在容器和微服務(wù)興起后,基于代碼即基礎(chǔ)設(shè)施的編排理念出現(xiàn)了,通過(guò)定義應(yīng)用程序和基礎(chǔ)設(shè)施的狀態(tài)來(lái)管理基礎(chǔ)設(shè)施和應(yīng)用,從而保證了一致性、快速?gòu)?fù)制能力、拓展性。
常見(jiàn)的工具有:
在 2023 年,了解學(xué)習(xí) Docker Swarm + Kubernetes 可以應(yīng)付大部分應(yīng)用編排的場(chǎng)景和帶來(lái)更多工作機(jī)會(huì)。
微服務(wù)編排往往說(shuō)的是微服務(wù)之間的調(diào)用方式,以及如何給客戶端提供友好的 API。
簡(jiǎn)而言之通常有兩種微服務(wù)集成方式:
流程編排往往和工作流引擎有關(guān)。
流程是一組用戶活動(dòng)按照一定順序組成的序列流,順序可能是串行、并行,在流程中可能存在準(zhǔn)入準(zhǔn)出機(jī)制、觸發(fā)機(jī)制等。
所以工作流引擎編排的對(duì)象往往是一個(gè)系統(tǒng)完備的 API,一個(gè)活動(dòng)也可以看做一個(gè)用例,這點(diǎn)需要和下面的業(yè)務(wù)規(guī)則編排區(qū)分開(kāi)。
在 IT 系統(tǒng)中,流程引擎往往適用于下面這兩種場(chǎng)景:
甚至工作流管理聯(lián)盟(WfMC)在 1993 年對(duì)工作流引擎進(jìn)行了規(guī)范化,使其能定義統(tǒng)一的接口,將各個(gè)應(yīng)用接入到工作流體系中來(lái)。其模型概念如下圖所示:
圖片
參與到流程體系中的組件需要遵守一套規(guī)范,這樣就可以流程互通。發(fā)展到現(xiàn)在,流程引擎的主流規(guī)范是 BPMN2.0。
主流的的流程編排引擎都支持 BPMN2.0,例如:Camunda、Activiti、Flowable 等。
BPMN 和 UML 一樣是一套精確的圖形化表示方法也被 OMG 組織管理,名稱(chēng)為”Business Process Modeling Notation”,即“業(yè)務(wù)流程建模標(biāo)記法”。因此可以在前端靈活的拖拽設(shè)計(jì)生成 BPMN 文件,輸出標(biāo)準(zhǔn)文件后,即可在流程引擎中動(dòng)態(tài)加載和使用。
對(duì)于大型企業(yè)來(lái)說(shuō),流程引擎可以將不同的應(yīng)用集成起來(lái),并參與到企業(yè)的流程管理工作中來(lái)。
規(guī)則編排和流程編排則顯得不一樣,規(guī)則引擎往往用管理業(yè)務(wù)規(guī)則,基于預(yù)定義的規(guī)則,當(dāng)有業(yè)務(wù)輸入時(shí),根據(jù)輸入獲得不同的結(jié)果或者觸發(fā)不同的行為。
例如,電商系統(tǒng)中對(duì)于不同積分和等級(jí)的會(huì)員獲得的折扣可能不一樣,這樣就可以使用規(guī)則引擎靈活處理此類(lèi)場(chǎng)景。
通過(guò)規(guī)則引擎可以讓用戶也能在一定范圍進(jìn)行配置,對(duì)業(yè)務(wù)結(jié)果和行為進(jìn)行干預(yù)。
圖片
規(guī)則引擎的開(kāi)源方案并不多,目前可以使用的有:Drools、Liteflow(國(guó)產(chǎn)開(kāi)源框架)。Drools 是一個(gè)標(biāo)準(zhǔn)的規(guī)則引擎框架,Liteflow 偏向代碼組件級(jí)別的流程編排多一些。
和 BPMN 標(biāo)準(zhǔn)類(lèi)似,在規(guī)則引擎領(lǐng)域也有一個(gè) DMN 規(guī)范,即 Decision Model and Notation。從名字上就能清晰地區(qū)分 BPMN 和 DMN 的關(guān)系。
Drools 完整支持 DMN 在很多業(yè)務(wù)規(guī)則,對(duì)于業(yè)務(wù)規(guī)則復(fù)雜的場(chǎng)景是一個(gè)非常不錯(cuò)的選擇??焖倭私?DMN 可以參考:learn-dmn-in-15-minutes.com。
應(yīng)用編排和微服務(wù)編排為大多數(shù)人熟悉,但是對(duì)于流程引擎和規(guī)則引擎來(lái)說(shuō),了解的人可能不是很多。
實(shí)際上一些系統(tǒng)大量在使用流程引擎和規(guī)則引擎,通過(guò)剝離流程和規(guī)則,對(duì)于復(fù)雜應(yīng)用系統(tǒng)來(lái)說(shuō)大大增強(qiáng)其靈活性,這一點(diǎn)對(duì)架構(gòu)師非常有幫助。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流