自稱十年內取代Java的企業集成語言:Ballerina

本文雖然是談論Ballerina(芭蕾舞女)編程語言是如何從專門為企業服務總線(ESB)而編程的語言如何轉變成雲原生語言,但是可以看出傳統SOA到雲原生轉變演進的內在邏輯性。

Ballerina語言是專門設計用來集成不同的企業應用而誕生。“我們正致力於努力改進ESB配置語言已經很長一段時間,一直在尋找正確的方法來演進它,”該語言的創建者、WSO2的首席執行官兼創始人Sanjiva Weerawarana表示。

使用數據流用來集成傳統系統的方法並不合適,正因為配置方法不足,才讓他們想到如何使用編程實現集成的功能。

但是現有的編程語言如Java或JS等設計目的不是為了輕鬆處理集成任務,例如引入外部源等,這些工作留給了驅動程序和客戶端庫,需要開發人員進行額外的工作(以及潛在的錯誤和性能問題)。

現在企業應用正在遷移到雲原生模式,轉向微服務架構,小型服務之間彼此通信,所有這些細粒度分解導致更多端點endpoint,這些端點需要通過API訪問。

為了創建芭Ballerina語言,Weerawarana借鑑了WSO2經常用於完成客戶端部署的工具,也就是序列圖,他有編寫語言的經驗,甚至還教過大學課程,公司建立了一個由60名開發人員組成的團隊,“Ballerina語言芭蕾舞女”這個名字來自Weerawarana對於芭蕾舞如何緊密協調的迷戀,他認為這應該是企業整合都應該追求的優雅流程。

Ballerina將網絡服務視為一等公民的概念,可實現輕鬆集成,這是一種能理解網絡概念的完整編程語言,Ballerina不是僅針對集成任務的領域特定語言(DSL),它實際上是一種成熟的編程語言,Weerawarana可以自認為在未來十年內取代Java

Weerawarana預測,從長遠來看,將不再需要ESB和應用服務器等中間件工具,ESB的路由功能將嵌入代碼中,使用諸如Ballerina之類的語言,或者由諸如Kubernetes之類的編排引擎或諸如Istio之類的服務網格軟件承擔。

最近,WSO2在舊金山召開了第一次Ballerinacon用戶大會,與會者瞭解了Ballerinacon如何成為世界上第一個雲原生編程語言。

以下是Ballerina的六個功能,使其成為雲原生計算的編程語言。

1.內置容器支持

Ballerina可以為雲原生格式運行程序做很多基本準備工作,為開發人員節省時間,可以對代碼進行註釋,以便編譯器自動創建Dockerfile,並將其打包在一個映像中,然後可以作為容器運行,因為編譯器可以完成所有這些額外的工作,所以開發人員可以更快地構建和測試多個迭代。

Ballerina還為Kubernetes開源容器編排引擎提供了一個庫,如果想通過單個命令協調多個程序的操作,這就很方便。

2.無服務器友好

Ballerina已經受到許多無服務器平臺的支持,包括OpenWhisk和Bitnami的Kubeless。

Ballerina由OpenWhisk平臺本地支持,WSO2本身運行託管的OpenWhisk服務,稱為WSO2無服務器解決方案,在OpenWhisk命令行,只要上傳你的函數和服務,它將其編譯並將其放在容器中,並提供實際需要的資源,使用負載進行自動擴展。

Kubeless提供了一種將Ballerina程序作為無服務器功能進行管理的方法,Kubeless為該函數設置了自定義資源定義,因此可以由Kubernetes管理,並可通過Kubeless命令行訪問。

Ballerina一個有趣的方面是任何函數都可以轉換為API端點,實際上使每個函數都成為獨立的微服務,反過來,這開啟了使用單個語義域進行集成操作,可以生成用於開放API網關的Swagger文件。

3.可觀察性

默認情況下,Ballerina程序是可觀察的:Ballerina支持基於微服務的日誌記錄,跟蹤和指標,而不是添加額外的庫,Ballerina生成的二進制文件默認輸出這些數據,除了配置最終客戶端來解釋和顯示數據之外,用戶不必為可觀察性功能做任何額外的工作。

用於系統調試商用Honeycomb軟件,以及開源的Prometheus時間序列監控,這兩個平臺可以輕鬆地與Ballerina程序一起使用。對於跟蹤,生成的數據已經適合OpenTracing模型,對於可視化,它與Grafana很好地集成,日誌數據可以通過ELK堆棧輕鬆消化或寫出到平面文件。擁有各種基於SQL的數據庫系統連接器,並且有一個用戶API供開發人員創建自定義測量指標。

4.使用或不使用服務網格

由於許多微服務彼此通信的性質,服務網格的作用變得越來越重要,其中它負責諸如服務發現(微服務在動態系統中找到彼此的微服務)和認證之類的職責,Ballerina裝備精良,適合這樣的環境。

如果你決定使用像Istio這樣的服務網格,Ballerina效果很好,只需通過創建單個YAML文件手動注入邊車,這對於添加Istio的特定服務(如虛擬服務網關)非常有用,這裡的想法是網絡功能可以由Istio(用於控制平面)和Envoy(用於數據平面)處理,同時保持Ballerina用於業務邏輯本身。

作為集成語言編寫的Ballerina也可以執行類似服務網格的職責,提供內置功能,如服務發現,可觀察性和多協議支持,它還可持在代碼內封裝控制或數據平面邏輯等情況。

5.使用流式SQL輕鬆處理流

今天的數據來源越來越不僅僅是靜態的,通常,數據一旦產生,就從諸如Apache Kafka的流處理系統中收集。

Ballerina具有通過執行復雜事件處理(CEP)來處理流數據的功能,它通過流式SQL的變體來實現這一點,流式SQL是大多數開發人員已經知道的SQL變體,能在時間窗口上處理事件集合,你可以設置包含必填字段的表,然後永久阻止執行,這意味著它會在刷新數據時不斷重新評估數據。

在Ballerina中,網絡事件是自然原生的,是一流的概念,開發人員可以建立帶有豐富註釋和過濾器的服務端點和服務客戶​​端,此外,支持流行的數據交換格式(如JSON和XML),允許開發人員直接對數據進行編程。

6. 內嵌安全性

安全性也融入了Ballerina,在IDE上實現了一系列安全檢查,並具有安全感知編譯器,編譯器進行靜態分析,檢查代碼是否存在明顯的缺陷,例如可能的緩衝區溢出。

還有運行時分析,每個函數都有內置的安全註釋,當被激發時,@ sensitive註釋將僅接受可信數據,這可以防止SQL注入攻擊;@tainted註釋將標記任何被認為不可信的計算。

自稱十年內取代Java的企業集成語言:Ballerina


分享到:


相關文章: