導(dǎo)讀
星鏈?zhǔn)蔷〇|科技消金基礎(chǔ)研發(fā)部研發(fā)的一款研發(fā)效能提升的工具平臺(tái),面向后端服務(wù)研發(fā)需求,尤其是集成性、場(chǎng)景化、定制化等難度不太高、但比較繁瑣的需求,如服務(wù)前端的后端(BFF)、服務(wù)流程編排、異步消息處理、定時(shí)任務(wù)、運(yùn)營(yíng)后臺(tái)、工作流程自動(dòng)化、臨時(shí)性需求等,以低代碼方式開(kāi)發(fā)微服務(wù),以聲明式進(jìn)行Serverless部署,使研發(fā)人員聚焦業(yè)務(wù)邏輯而非各類(lèi)細(xì)節(jié),大幅提升研發(fā)效能、降本增效。
1 星鏈?zhǔn)鞘裁?/strong>
星鏈?zhǔn)蔷〇|科技消金基礎(chǔ)研發(fā)部研發(fā)的一款研發(fā)效能提升的工具平臺(tái),面向后端服務(wù)研發(fā)需求,尤其是集成性、場(chǎng)景化、定制化等難度不太高、但比較繁瑣的需求,如服務(wù)前端的后端(BFF)、服務(wù)流程編排、異步消息處理、定時(shí)任務(wù)、運(yùn)營(yíng)后臺(tái)、工作流程自動(dòng)化、臨時(shí)性需求等,以低代碼方式開(kāi)發(fā)微服務(wù),以聲明式進(jìn)行Serverless部署,使研發(fā)人員聚焦業(yè)務(wù)邏輯而非各類(lèi)細(xì)節(jié),大幅提升研發(fā)效能、降本增效。
星鏈提供了一個(gè)統(tǒng)一的Web界面,用戶(hù)通過(guò)它可以完成微服務(wù)的開(kāi)發(fā)、調(diào)試、構(gòu)建、測(cè)試、部署完整流程。在開(kāi)發(fā)方面,除了支持可視化配置、組件化流程編排,同時(shí)支持JAVA/JavaScript/Groovy等語(yǔ)言,支持引入第三方包,且與Git集成,在低代碼的同時(shí)不降低靈活性與可控性。在部署方面,實(shí)現(xiàn)了聲明式部署, 用戶(hù)不需要關(guān)注服務(wù)器細(xì)節(jié),系統(tǒng)跨集群分組統(tǒng)一智能調(diào)度共享的計(jì)算資源,在自動(dòng)滿(mǎn)足部署需求的同時(shí)節(jié)省計(jì)算成本,此外,星鏈?zhǔn)菬峒虞d,實(shí)現(xiàn)了秒級(jí)部署,還有,星鏈充分考慮了大中型企業(yè)內(nèi)部的實(shí)際情況,不同團(tuán)隊(duì)的服務(wù)完全隔離,測(cè)試、預(yù)發(fā)、生產(chǎn)服務(wù)完全隔離,支持灰度發(fā)布、加密參數(shù)等,計(jì)算資源既支持傳統(tǒng)虛機(jī),也支持K8s,支持部署至私有云和其他公有云,實(shí)現(xiàn)了企業(yè)級(jí)Serverless。
星鏈自19年3月份第一版上線(xiàn)以來(lái),不斷迭代完善,除廣泛支持消費(fèi)金融各場(chǎng)景業(yè)務(wù)外,還支持了集團(tuán)很多其他部門(mén)的業(yè)務(wù),如財(cái)富、支付、營(yíng)銷(xiāo)中臺(tái)、保險(xiǎn)等,歷經(jīng)多次618、雙11性能和穩(wěn)定性考驗(yàn)。為了支持對(duì)外交付,應(yīng)用于更為廣泛的場(chǎng)景,星鏈在21年進(jìn)行了模塊化和產(chǎn)品化改造,不再依賴(lài)京東特有中間件,在22年3月份上線(xiàn)京東公有云,支持對(duì)外服務(wù)。
2 星鏈核心概念
星鏈有兩個(gè)核心概念:VMS和Serverless,下面分別介紹。
2.1 VMS
VMS是指可視化微服務(wù)(Visual MicroService),表示一個(gè)輕量級(jí)微服務(wù)應(yīng)用,是星鏈中開(kāi)發(fā)和部署的基本單元,稱(chēng)為“可視化”主要是星鏈支持且提倡以可視化的方式來(lái)編排微服務(wù)邏輯,VMS同時(shí)表示一個(gè)簡(jiǎn)單靈活的微服務(wù)編程模型,如圖1所示。
圖1 VMS編程模型
這個(gè)模型的基本思路是讓微服務(wù)應(yīng)用的內(nèi)外依賴(lài)組件化、配置化,使開(kāi)發(fā)人員可以聚焦業(yè)務(wù)邏輯,包含三個(gè)核心概念:函數(shù)、連接器和觸發(fā)器。函數(shù)封裝業(yè)務(wù)邏輯,由標(biāo)準(zhǔn)的輸入/輸出以及函數(shù)體組成,支持代碼函數(shù)和BPMN函數(shù)。代碼函數(shù)支持Java、Groovy、JavaScript三種語(yǔ)言,未來(lái)會(huì)支持更多語(yǔ)言。BPMN函數(shù)利用BPMN標(biāo)準(zhǔn)可視化地編排業(yè)務(wù)邏輯,可以引用代碼函數(shù),也可以引用其他BPMN函數(shù),構(gòu)建復(fù)雜業(yè)務(wù)流程。連接器封裝第三方服務(wù),包括RPC服務(wù)、HTTP服務(wù)、異步消息、緩存服務(wù)、配置服務(wù)、數(shù)據(jù)庫(kù)等。觸發(fā)器封裝函數(shù)對(duì)外提供服務(wù)的方式,支持RPC、HTTP REST API、定時(shí)任務(wù)和MQ消息觸發(fā),每個(gè)觸發(fā)器關(guān)聯(lián)一個(gè)函數(shù)。星鏈會(huì)不斷拓展支持新的觸發(fā)器和連接器類(lèi)型,未來(lái)也會(huì)開(kāi)放SDK給用戶(hù)自定義星鏈不支持的類(lèi)型。
2.2 Serveless
星鏈的Serverless概念不是沒(méi)有服務(wù)器,而是盡量抽象,使用戶(hù)盡量減少對(duì)服務(wù)器細(xì)節(jié)的關(guān)注。用戶(hù)仍然需要關(guān)注計(jì)算資源,尤其在企業(yè)內(nèi),用戶(hù)需要關(guān)注資源成本分?jǐn)偅枰P(guān)注資源所處的機(jī)房以保證高可用性,星鏈對(duì)用戶(hù)需要關(guān)注的事情進(jìn)行了抽象,建立了一個(gè)計(jì)算資源模型和聲明式部署模型。星鏈計(jì)算資源模型如圖2所示。
圖2 計(jì)算資源模型
這個(gè)模型既支持傳統(tǒng)虛機(jī),也支持K8s,集群和分組都是計(jì)算資源的抽象,一個(gè)集群下有多個(gè)分組。集群主要是為了方便管理多個(gè)分組,主要屬性就是名稱(chēng)和備注,分組有一個(gè)環(huán)境屬性:測(cè)試、預(yù)發(fā)或生產(chǎn),還有資源類(lèi)型屬性,資源類(lèi)型支持虛機(jī)和K8s。對(duì)于K8s類(lèi)型,一個(gè)分組關(guān)聯(lián)一個(gè)K8s namespace,星鏈自動(dòng)創(chuàng)建和管理計(jì)算引擎Pod。對(duì)于虛機(jī),需通過(guò)其他方式創(chuàng)建計(jì)算引擎,然后將引擎IP關(guān)聯(lián)至星鏈分組。用戶(hù)在開(kāi)發(fā)、調(diào)試、測(cè)試階段不需要申請(qǐng)任何計(jì)算資源。部署生產(chǎn)時(shí),需自行申請(qǐng)K8s資源或虛機(jī)資源,然后關(guān)聯(lián)到星鏈集群和分組,每個(gè)團(tuán)隊(duì)只需申請(qǐng)和配置一次。聲明式部署對(duì)于K8s分組和虛機(jī)分組都是一樣的,模型如圖3所示。
圖3 聲明式部署模型
每個(gè)環(huán)境(測(cè)試、預(yù)發(fā)、生產(chǎn))有不同的部署配置。每個(gè)環(huán)境下可以有多個(gè)部署配置,以流量入口加以區(qū)分。每個(gè)入口配置可能包括多個(gè)條目,每個(gè)條目聲明在哪個(gè)集群分組、部署哪個(gè)版本、期望的實(shí)例個(gè)數(shù)配置等。系統(tǒng)將智能分配計(jì)算資源,監(jiān)控運(yùn)行狀況,確保滿(mǎn)足部署聲明要求。
3 星鏈應(yīng)用場(chǎng)景
星鏈有很多應(yīng)用場(chǎng)景,下面分別介紹。
3.1 業(yè)務(wù)流程編排
在微服務(wù)系統(tǒng)中,有很多各類(lèi)微服務(wù),但可以粗分為兩類(lèi),一類(lèi)是相對(duì)穩(wěn)定的、與場(chǎng)景關(guān)系不大的、沉淀下來(lái)的領(lǐng)域原子微服務(wù),另一類(lèi)是相對(duì)變化多端的、面向場(chǎng)景的、數(shù)量眾多的場(chǎng)景化微服務(wù),場(chǎng)景化微服務(wù)往往通過(guò)整合編排原子化微服務(wù)來(lái)實(shí)現(xiàn)業(yè)務(wù)流程,而針對(duì)不同場(chǎng)景,其流程是不同的,針對(duì)一個(gè)新的場(chǎng)景,通過(guò)創(chuàng)建VMS,可以快速可靠地編排流程,并且將流程可視化,使得業(yè)務(wù)、產(chǎn)品、測(cè)試也都能夠理解該流程,提升協(xié)作效率,同時(shí)每個(gè)新場(chǎng)景獨(dú)立開(kāi)發(fā)和部署,易于管理,不影響現(xiàn)有業(yè)務(wù)。
3.2 服務(wù)前端的后端(BFF)
前端有多種介質(zhì),如PC、移動(dòng)App、H5、小程序等,每種介質(zhì)需要的接口可能是不太一樣的,前端需要的數(shù)據(jù)格式與后端微服務(wù)也可能不同,另外,前端一個(gè)接口需要的數(shù)據(jù)往往需要后端多個(gè)微服務(wù)組合提供,可以通過(guò)創(chuàng)建VMS來(lái)快速滿(mǎn)足這些面向前端的接口數(shù)據(jù)聚合、接口數(shù)據(jù)適配等需求。
3.3 異步消息處理
在微服務(wù)架構(gòu)中,不同微服務(wù)之間往往依賴(lài)異步消息進(jìn)行協(xié)同,在一個(gè)系統(tǒng)中往往有大量的消息監(jiān)聽(tīng)邏輯,其中很多處理邏輯往往比較簡(jiǎn)單,如只是維護(hù)緩存、同步狀態(tài)、轉(zhuǎn)換消息格式等,可以將這些膠水層的消息處理邏輯放到VMS中,以便開(kāi)發(fā)和管理。
3.4 運(yùn)營(yíng)后臺(tái)服務(wù)
運(yùn)營(yíng)后臺(tái)往往有很多定制需求,這些需求往往只是一些查詢(xún)需求,或者是一些簡(jiǎn)單的更新邏輯,實(shí)現(xiàn)這些需求難度不大,但很繁瑣耗時(shí),通過(guò)VMS來(lái)實(shí)現(xiàn)這些需求,使用流程編排和配置數(shù)據(jù)庫(kù)相關(guān)連接器就可以滿(mǎn)足需求,不需要寫(xiě)代碼。
3.5 定時(shí)批處理任務(wù)
在一個(gè)微服務(wù)架構(gòu)的系統(tǒng)中,往往有很多定時(shí)批處理任務(wù),這些任務(wù)往往只是凌晨執(zhí)行,將這些任務(wù)構(gòu)建為VMS,Serverless部署可以大幅節(jié)省計(jì)算資源。
3.6 臨時(shí)性業(yè)務(wù)需求
在實(shí)際業(yè)務(wù)中,往往有很多臨時(shí)性的業(yè)務(wù)需求,如提供臨時(shí)性的運(yùn)營(yíng)活動(dòng)接口、報(bào)表、臨時(shí)數(shù)據(jù)處理等,通過(guò)VMS來(lái)實(shí)現(xiàn)這些需求,一方面可以快速交付,另一方面Serverless部署,不需要關(guān)注計(jì)算資源,此外,與現(xiàn)有穩(wěn)定業(yè)務(wù)代碼相隔離,獨(dú)立開(kāi)發(fā)和部署,便于管理,不用時(shí)可以隨時(shí)下線(xiàn)。
3.7 工作流程自動(dòng)化
在日常工作中,往往有一些工作需要自動(dòng)化,比如異常日志管理:每日查詢(xún)線(xiàn)上異常日志,將重要的異常日志匯總,通過(guò)郵件發(fā)送給團(tuán)隊(duì)成員,團(tuán)隊(duì)成員進(jìn)行反饋。傳統(tǒng)方式是手工操作的,比較繁瑣,用程序?qū)崿F(xiàn)也比較麻煩,且沒(méi)有合適的應(yīng)用/服務(wù)器承載這些功能,通過(guò)星鏈開(kāi)發(fā)和部署進(jìn)行工作流程自動(dòng)化,開(kāi)發(fā)方便,部署簡(jiǎn)單。
3.8 工作流程自動(dòng)化
一個(gè)VMS內(nèi)可以創(chuàng)建多個(gè)觸發(fā)器、函數(shù)和連接器,可以寫(xiě)Java/Groovy/JavaScript代碼,可以引用第三庫(kù),可以通過(guò)配置的方式訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),且支持事務(wù),這樣,業(yè)務(wù)邏輯不太復(fù)雜的普通業(yè)務(wù)需求都可以通過(guò)VMS來(lái)實(shí)現(xiàn)。
4 星鏈優(yōu)勢(shì)
星鏈所能做的事情,通過(guò)傳統(tǒng)開(kāi)發(fā)和部署也可以做,那用星鏈有什么優(yōu)勢(shì)呢?以下這些是來(lái)自大量用戶(hù)的反饋。
- 開(kāi)發(fā)快:比如,原來(lái)開(kāi)發(fā)一個(gè)功能要四五天,現(xiàn)在兩三天就可以了,而且流程可視化,功能邏輯一目了然。
- 部署快、省心:原來(lái)部署經(jīng)常要1~2個(gè)小時(shí),現(xiàn)在幾秒鐘就完成了;VMS部署粒度更小了,獨(dú)立部署,不像原來(lái)一個(gè)大應(yīng)用里改了部分公共代碼,老擔(dān)心影響其他業(yè)務(wù)流程。
- 不用管理服務(wù)器:不用每個(gè)應(yīng)用都申請(qǐng)計(jì)算資源,團(tuán)隊(duì)申請(qǐng)一次就可以了。
- 節(jié)省成本:大多數(shù)服務(wù)器計(jì)算資源利用率都比較低,星鏈通過(guò)讓多個(gè)VMS共享計(jì)算引擎和動(dòng)態(tài)調(diào)度,可以大幅提升計(jì)算資源利用率,節(jié)省成本。
- 常用庫(kù)、中間件升級(jí)方便:公司內(nèi)部各種中間件經(jīng)常升級(jí)、由于安全漏洞等原因各種常用庫(kù)也需要經(jīng)常升級(jí),使用星鏈,不需要用戶(hù)修改代碼,只需要一鍵更新星鏈引擎就可以了。
- 便于協(xié)作:產(chǎn)品、研發(fā)、測(cè)試通過(guò)統(tǒng)一的Web視圖進(jìn)行協(xié)作,方案評(píng)審、代碼評(píng)審不需要再畫(huà)單獨(dú)的流程圖,BPMN圖即真實(shí)流程,點(diǎn)擊節(jié)點(diǎn)即可查看實(shí)現(xiàn)細(xì)節(jié)。
- 賦能前端研發(fā):后端很多服務(wù)只有Java SDK,而沒(méi)有Node.js SDK,對(duì)于BFF層的工作,即使前端研發(fā)有時(shí)間可以做,也因?yàn)槿狈ava技能而做不了,星鏈提供了低代碼平臺(tái),且支持JavaScript,這樣,原來(lái)必須要后端做的事情前端研發(fā)也可以做了。
- 促進(jìn)產(chǎn)生更好的設(shè)計(jì):通過(guò)BPMN圖表達(dá)業(yè)務(wù)邏輯,可以更容易促使用戶(hù)去思考和梳理整體邏輯,將實(shí)現(xiàn)細(xì)節(jié)封裝到具體節(jié)點(diǎn)中,從而產(chǎn)生更清晰完善的設(shè)計(jì)。
5 星鏈產(chǎn)品功能
下面介紹星鏈提供的各種功能及特色。
5.1 可視化低代碼 Cloud Web IDE
星鏈提供了一個(gè)低代碼Cloud Web IDE,通過(guò)可視化微服務(wù)編排提高開(kāi)發(fā)效率,如圖4所示。
圖4 Cloud Web IDE
星鏈IDE支持的特性有下面這些。
- 可視化BPMN編排:支持編排各種連接器方法、代碼函數(shù)、其他BPMN函數(shù),支持分支、異常處理,支持DB事務(wù),自動(dòng)提示請(qǐng)求參數(shù)、環(huán)境變量、中間節(jié)點(diǎn)的輸出結(jié)果等上下文信息,支持使用表達(dá)式表達(dá)復(fù)雜的條件分支、輸入變量。
- 自定義DB/HTTP連接器:可自定義連接器方法列表,出入?yún)⒍x支持三種模式:表格、YAML、CSV,支持根據(jù)JSON示例推斷參數(shù)定義,配置的連接器方法可用于BPMN編排和代碼函數(shù),DB連接器方法可參與事務(wù)。
- 可視化觸發(fā)器配置:各種觸發(fā)器通過(guò)界面配置觸發(fā)機(jī)制和調(diào)用的函數(shù)即可,不需要開(kāi)發(fā)。
- 表達(dá)式編輯器:支持語(yǔ)法高亮、代碼提示,有方便的示例和幫助文檔,有豐富的內(nèi)置函數(shù)庫(kù),可方便構(gòu)造Map和List組成的復(fù)雜對(duì)象,支持各種運(yùn)算。
- 在線(xiàn)開(kāi)發(fā)代碼函數(shù):可視化定義函數(shù)出入?yún)ⅲС諮ava/JavaScript/Groovy,語(yǔ)法高亮,內(nèi)置API訪(fǎng)問(wèn)日志、各個(gè)連接器、環(huán)境變量等。
- 在線(xiàn)函數(shù)Debug:可以在Web上直接運(yùn)行函數(shù),查看運(yùn)行結(jié)果,查看日志,診斷問(wèn)題。對(duì)于BPMN函數(shù),可以可視化地顯示執(zhí)行軌跡,可顯示執(zhí)行經(jīng)過(guò)的每個(gè)節(jié)點(diǎn)的輸入、輸出或異常信息。支持對(duì)于遠(yuǎn)程調(diào)用設(shè)置Mock返回值,以便于聯(lián)調(diào)。
- 多Tab頁(yè)編輯:可以同時(shí)編輯多個(gè)函數(shù),調(diào)試和運(yùn)行歷史都是獨(dú)立的。
- 實(shí)時(shí)保存和校驗(yàn):實(shí)時(shí)保存用戶(hù)的修改到Cloud工作區(qū),實(shí)時(shí)校驗(yàn)并進(jìn)行提示。
在DB/HTTP連接器中,可以自定義方法列表。圖5展示了一個(gè)自定義DB連接器的例子,用戶(hù)只要定義SQL、輸入輸出參數(shù)就能生成一個(gè)方法,在定義過(guò)程中,可以隨時(shí)測(cè)試以驗(yàn)證定義是否正確。目前,需要用戶(hù)使用MyBatis語(yǔ)法輸入SQL,未來(lái),星鏈會(huì)提供更為易用、更為智能的方式定義DB連接器。
圖5 自定義DB連接器示例
圖6展示了一個(gè)自定義HTTP連接器的例子,熟悉HTTP基本協(xié)議就能快速定義一個(gè)方法。未來(lái),星鏈會(huì)提供更為易用和豐富的功能,且支持OpenAPI規(guī)范,導(dǎo)入OpenAPI定義文件即可生成HTTP連接器。
圖6 自定義HTTP連接器示例
當(dāng)在線(xiàn)調(diào)試BPMN函數(shù)時(shí),星鏈會(huì)可視化地顯示執(zhí)行軌跡,方便用戶(hù)定位問(wèn)題,執(zhí)行正確的以綠色顯示,錯(cuò)誤的以紅色顯示,且顯示錯(cuò)誤信息,如圖7所示。未來(lái),星鏈會(huì)支持BPMN斷點(diǎn)調(diào)試。
圖7 BPMN函數(shù)執(zhí)行軌跡示例
5.2 自定義業(yè)務(wù)組件庫(kù)
星鏈提供了獨(dú)特的業(yè)務(wù)組件庫(kù)功能,除了提供系統(tǒng)公共組件,星鏈還支持自定義團(tuán)隊(duì)組件。公共組件由系統(tǒng)維護(hù),每個(gè)用戶(hù)都可以使用。系統(tǒng)將不斷完善公共組件庫(kù)建設(shè),在私有化部署中,客戶(hù)可以自定義系統(tǒng)組件。團(tuán)隊(duì)組件由團(tuán)隊(duì)自己維護(hù),對(duì)其他團(tuán)隊(duì)不可見(jiàn)。用戶(hù)在VMS內(nèi)自定義的連接器組件(如DB/HTTP連接器)可以導(dǎo)出為團(tuán)隊(duì)組件。用戶(hù)可以在星鏈控制臺(tái)中維護(hù)團(tuán)隊(duì)組件,包括組件分組等。在BPMN編排中,用戶(hù)可以瀏覽、查詢(xún)團(tuán)隊(duì)或公共組件,并直接拖拽到編排面板中。如圖8所示。
圖8 業(yè)務(wù)組件庫(kù)
5.3 支持本地IDE開(kāi)發(fā)
與大多數(shù)低代碼平臺(tái)是黑盒子不同, 星鏈開(kāi)發(fā)的VMS保存在Git代碼倉(cāng)庫(kù)上,源碼是完全可見(jiàn)的,用戶(hù)可以克隆到本地,使用本地IDE開(kāi)發(fā)、調(diào)試和運(yùn)行單測(cè),在本地開(kāi)發(fā)中,可以引入第三方包(如Java語(yǔ)言的jar包,JavaScript語(yǔ)言的npm包等),并在代碼函數(shù)中使用這些包,而且,本地提交后,在Cloud Web IDE上也完全兼容可見(jiàn)。在Cloud Web IDE上也支持Git操作,包括切換分支、提交、查看提交歷史、對(duì)比變更等,如圖9所示。
圖9 基于Git的本地與云協(xié)作開(kāi)發(fā)
5.4 集成構(gòu)建發(fā)布流程
星鏈支持一鍵在線(xiàn)構(gòu)建打包,可以實(shí)時(shí)查看構(gòu)建日志。為了管控上線(xiàn)質(zhì)量,星鏈集成上線(xiàn)審批流程,如圖10所示。
圖10 集成構(gòu)建發(fā)布流程
5.5 企業(yè)級(jí)Serveless
在星鏈中開(kāi)發(fā)、測(cè)試、部署,不需要關(guān)注服務(wù)器細(xì)節(jié),在部署時(shí),只需要說(shuō)明部署的集群分組、需要部署的實(shí)例個(gè)數(shù)、部署的版本即可,可以在一次部署中聲明多個(gè)集群分組,這些分組可以位于不同的機(jī)房、可用區(qū),系統(tǒng)自動(dòng)調(diào)度。聲明式部署可以方便地支持灰度發(fā)布、擴(kuò)縮容,只需要修改版本聲明、實(shí)例個(gè)數(shù)即可,系統(tǒng)自動(dòng)調(diào)整。支持部署環(huán)境隔離,區(qū)分測(cè)試、預(yù)發(fā)、生產(chǎn)不同環(huán)境。復(fù)用計(jì)算引擎資源,沒(méi)有冷啟動(dòng),熱加載,部署快。支持部署態(tài)加密環(huán)境變量,針對(duì)敏感變量加密存儲(chǔ),確保安全。示例部署配置如圖11所示。
圖11 聲明式部署配置
星鏈有獨(dú)立的Serverless部署控制網(wǎng)關(guān)和計(jì)算引擎模塊,可以部署至私有云和其他公有云。用戶(hù)創(chuàng)建的計(jì)算資源,系統(tǒng)提供若干管理功能,包括添加引擎、禁用引擎、啟用引擎等,系統(tǒng)會(huì)根據(jù)可用引擎情況動(dòng)態(tài)調(diào)度VMS。
5.6 集成的可觀測(cè)性
星鏈部署狀態(tài)一目了然,包括整體狀態(tài)是否符合預(yù)期,部署的集群、分組、引擎詳情等,如圖12所示。
圖12 部署狀態(tài)
星鏈為函數(shù)主要執(zhí)行節(jié)點(diǎn)自動(dòng)添加日志。可以在部署狀態(tài)設(shè)置日志級(jí)別,可以在星鏈上直接查看和搜索日志,以便于問(wèn)題診斷,如圖13所示。
圖13 集成的日志
在京東內(nèi)部和京東公有云上,星鏈集成了京東的日志、監(jiān)控等更為專(zhuān)業(yè)的服務(wù),用戶(hù)可以利用這些工具進(jìn)行日志查看、監(jiān)控和報(bào)警。
5.7 高性能可拓展的多語(yǔ)言執(zhí)行引擎
自19年3月份上線(xiàn)以來(lái),星鏈執(zhí)行引擎在京東內(nèi)部應(yīng)用中已歷經(jīng)多次618、雙11考驗(yàn)。星鏈引擎是為高性能、低延時(shí)場(chǎng)景設(shè)計(jì)的,如果用戶(hù)沒(méi)有配置有狀態(tài)節(jié)點(diǎn)(如在流程中間等待異步消息),星鏈?zhǔn)菬o(wú)狀態(tài)內(nèi)存執(zhí)行的,相比業(yè)界大多基于數(shù)據(jù)庫(kù)或消息系統(tǒng)的編排引擎,延時(shí)低,更適合服務(wù)編排,廣泛應(yīng)用于面向C端用戶(hù)的高并發(fā)、低延時(shí)場(chǎng)景。此外,星鏈引擎是一個(gè)多語(yǔ)言執(zhí)行引擎,目前支持Java、JavaScript、Groovy,各個(gè)語(yǔ)言都支持調(diào)用各種連接器方法、都提供常用API,也在規(guī)劃支持更多語(yǔ)言(如Python/ target=_blank class=infotextkey>Python)。此外,星鏈引擎采用了微內(nèi)核、模塊化架構(gòu),可以方便地根據(jù)場(chǎng)景進(jìn)行擴(kuò)展、調(diào)整。未來(lái),也將允許用戶(hù)自定義觸發(fā)器、連接器、及其他功能組件。
5.8 團(tuán)隊(duì)協(xié)作與管理
星鏈提供了方便的VMS協(xié)作與管理功能。在星鏈中,VMS和計(jì)算資源都屬于一個(gè)團(tuán)隊(duì),團(tuán)隊(duì)中成員有四種角色:開(kāi)發(fā)、測(cè)試、訪(fǎng)客和管理員,每種角色有不同權(quán)限,管理員可以添加/刪除成員。一個(gè)用戶(hù)可以加入多個(gè)團(tuán)隊(duì),默認(rèn)有一個(gè)專(zhuān)屬的個(gè)人團(tuán)隊(duì),可以在其中試用星鏈,還會(huì)默認(rèn)加入demo團(tuán)隊(duì),以方便查看系統(tǒng)提供的示例VMS。在創(chuàng)建VMS時(shí),可以通過(guò)克隆已有VMS的方式快速新建VMS。VMS支持分組、分級(jí)管理。管理員可以將VMS遷移至其他團(tuán)隊(duì),以方便實(shí)現(xiàn)在大中型企業(yè)中經(jīng)常發(fā)生的組織和業(yè)務(wù)調(diào)整需求。
6 小結(jié)
本文介紹了星鏈的功能、核心概念、應(yīng)用場(chǎng)景、優(yōu)勢(shì)和主要產(chǎn)品功能,簡(jiǎn)單總結(jié)來(lái)說(shuō),星鏈?zhǔn)且粋€(gè)微服務(wù)低代碼Serverless平臺(tái),用戶(hù)通過(guò)統(tǒng)一的Web界面完成可視化微服務(wù)(VMS)的開(kāi)發(fā)、調(diào)試、構(gòu)建、測(cè)試、部署完整流程,以可視化、組件編排方式低代碼開(kāi)發(fā)微服務(wù),以聲明式進(jìn)行Serverless部署,快速交付如服務(wù)前端的后端(BFF)、服務(wù)流程編排、異步消息處理、定時(shí)任務(wù)、運(yùn)營(yíng)后臺(tái)、工作流程自動(dòng)化、臨時(shí)性需求等場(chǎng)景化、定制化業(yè)務(wù)研發(fā)需求,降本增效。星鏈的特色是滿(mǎn)足高并發(fā)、低延時(shí)C端服務(wù)要求,低代碼但不犧牲靈活性和可控性,支持企業(yè)級(jí)Serverless,計(jì)算資源利用率高、成本低。