精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

RockScript:用于編配微服務的腳本語言和引擎

責任編輯:editor004

作者: Daniel Bryant

2017-11-01 11:27:45

摘自:INFOQ

Tom Baeyens發布了預覽版的RockScript,一個用于在基于事件驅動的架構里集成和編排微服務的腳本語言和引擎。在我的愿景里,我們完全可以在基于無服務器架構的云基礎設施上使用在線IDE開發應用程序,而且只需要掌握JavaScript。

Tom Baeyens發布了預覽版的RockScript,一個用于在基于事件驅動的架構里集成和編排微服務的腳本語言和引擎。RockScript使用了一種類似JavaScript的語言,用于在微服務系統里協調事務性活動,這種方式有點類似Business Process Execution Language(BPEL)和Business Process Modelling(BPM)。

在分布式系統中協調服務之間的交互一直以來都是一個巨大的挑戰,傳統的SOA(面向服務架構)社區已經針對“編配(orchestration)還是編排(choreography)”展開了廣泛的爭論。服務編配是指按照由集中的引擎(如BPEL)預定義的業務流程來自動執行服務。而服務編排一般不包含集中式的服務監管流程,服務之間的交互是由服務自身建立起來的,微服務大師James Lewis和Martin Fowler將其稱為“聰明的端點和笨拙的管道”。

關于編配和編排的爭論在微服務社區愈演愈烈,不過服務編排還是成為人們可接受的最佳實踐。不過,隨著采用微服務架構企業數量的增長(以及在編配流程方面的巨大投入)和使用無服務器架構或FaaS(Function-as-a-Service)框架的服務逐漸流行,編配框架再度引起人們的關注。RockScript就是這樣的一個專門用于編配微服務的框架。

RockScript的wiki頁上寫道,“大部分微服務之間的交互都是通過JSON和HTTP來完成的”,所以這些交互很難具備事務性。在發生交互的任意時刻,被調用的服務都有可能發生崩潰,或者底層的基礎設施組件出現故障。如果一個業務流程中涉及多個服務間交互,為了保持一致性,需要把服務間的調用圖以及調用成功和失敗的結果記錄下來。在微服務架構里,一般使用Saga模式來處理多階段事務協議。

RockScript被設計用于捕捉對事件的響應。一般會使用一個外部事件作為輸入觸發器,然后發送命令到其他微服務API,在這一過程中可能還會伴隨數據轉換。RockScript可以用于連接HTTP API和消息交換服務,不過目前僅實現了HTTP API連接。Activiti和jBPM平臺的作者Baeyens表示,RockScript旨在“讓編寫連接企業系統事件的腳本變得更簡單,并更容易建立起到腳本的觸發器連接”。這與工作流框架IFTTT或Zapier的觸發器概念十分相似。

RockScript的執行過程具備彈性,而且運行時引擎可以確保腳本的執行在應用程序或基礎設施發生崩潰時自動恢復。每個腳本執行的狀態通過事件溯源的方式保存在一個集群上,所以,當腳本在等待異步活動時就不會占用線程或內存。因為使用了事件溯源,在發生故障時(如服務器崩潰)可以追查問題的細節,而且可以從最后一次保存的執行狀態中恢復過來。

Baeyens向InfoQ透露了開發RockScript背后的動機。

InfoQ:歡迎來到InfoQ,Tom!你參與工作流和Business Process Management(BPM)方面的工作已經有很長時間了(曾經創立了jBPM、Activiti和Effektif),那么為什么要創立這個新項目呢?

Baeyens:過去的項目讓我積累了大量實現異步引擎的經驗。但從產品方面來看,我發現開發者需要奔忙于兩個世界:工作流是基于圖表的,需要在活動(activity)之間進行數據轉換,而它們一般是使用JavaScript或其他編程語言編寫的。 開發者需要在這兩個世界之間來回切換。我想這也是工作流沒能一舉成為主流開發技術的原因。將工作流活動的概念帶到像JavaScript這樣的編程語言上,開發者就可以只呆在一個他們喜歡的世界里。我的目標是把微服務集成帶給更廣大的開發者社區,讓微服務之間的交互變得更容易。

InfoQ:有什么其他技術可以與RockScript進行比較的嗎?

Baeyens:最近,一些云平臺供應商推出了類似AWS Step Function和Microsoft Logic App的服務。它們把自己定位成API、自定義App和Serverless Cloud Function(也即lambda)之間的粘合劑。現今,幾乎所有的服務間交互都基于JSON,并通過HTTP傳輸,或轉向異步消息系統。BPEL的目標是解決基于XML的服務的集成問題,盡管這種解決方案太過復雜。不過這也說明了我們需要一門用于集成的編程語言。RockScript致力于成為最好的API和微服務生態系統集成腳本語言。

InfoQ:我們知道你有很深厚的Java背景,而RockScript卻使用了JavaScript作為基礎,這是為什么?

Baeyens:有三方面的原因。

在我的愿景里,我們完全可以在基于無服務器架構的云基礎設施上使用在線IDE開發應用程序,而且只需要掌握JavaScript。 對于CTO和開發團隊領導來說,盡快讓開發人員進入狀態,讓新加入的開發人員盡快掌握公司使用的技術,這點是非常重要的。RockScript是JavaScript的一個子集,所以對于大部分開發者來說是很容易掌握的。JavaScript語法也非常適合用來在微服務之間做數據轉換。大部分微服務是基于JSON的,而JavaScript最適合用來操控這種類型的數據。

RockScript的wiki頁上寫道,該項目目前還處在概念性驗證階段,實現的功能還不太穩定。目前的實現主要專注在開發者體驗上,持久化的東西還只是保存在內存里(后續計劃使用SQL系統或Kafka來進行持久化),而且覆蓋到的JavaScript特性還非常少。開發者可以通過GitHub Issues、Twitter或郵件組反饋他們的想法。

有一些新出現的編配框架,感興趣的讀者可以在它們的項目主頁上找到更多信息:

Netflix ConductorApache NiFiSpring Cloud Data FlowAWS Step FunctionMicrosoft Logic App

現有的一些集成框架,如Apache Camel和Spring Integration也可以用來模擬大部分的編配行為。一些

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 冕宁县| 南靖县| 隆子县| 甘南县| 长丰县| 庆城县| 云林县| 探索| 奎屯市| 台湾省| 岐山县| 澄迈县| 常州市| 山丹县| 浦东新区| 涞水县| 淮滨县| 乌恰县| 马鞍山市| 磐石市| 蒙山县| 台江县| 米脂县| 葫芦岛市| 栾川县| 沅陵县| 淮阳县| 宁津县| 新建县| 南陵县| 大连市| 锦州市| 大荔县| 胶南市| 新巴尔虎右旗| 句容市| 方城县| 辰溪县| 自贡市| 年辖:市辖区| 石台县|