自稱十年內取代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註釋將標記任何被認為不可信的計算。
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註釋將標記任何被認為不可信的計算。
相關文章
- 系統整合語言Ballerina介紹
- 強勢崛起的Python會在十年內取代Java嗎?PythonJava
- 比Python、Java更快的 Go 語言,能否稱霸江湖?PythonJavaGo
- CFF:Java 和 JavaScript 是企業開發所用最普遍的語言JavaScript
- 企業微信app怎麼設定英文語言? 企業微信app切換到英文語言的教程APP
- 使用Apache Camel進行Java企業整合ApacheJava
- 谷歌新推出的Carbon語言能直接取代C++?谷歌C++
- Go 會接替 Java,成為下一個企業級程式語言嗎?GoJava
- 幽默:Python和Javascript程式設計師如何以語言自稱? - madelinePythonJavaScript程式設計師
- 牛津經濟:未來十年將有2000萬製造業工作被自動化取代
- Python會在什麼時候被其他語言取代Python
- java語言屬於哪種語言Java
- LLM取代的第一個程式語言竟是SQL?網友吵翻天SQL
- Java語言概述Java
- 如何構建企業內的 TiDB 自運維體系TiDB運維
- java 自動化與 python 自動化哪種程式語言吃香?JavaPython
- 企業數字化轉型的必選項:整合自動化
- "工業革命"--我的多語言開發之路(內附神器)
- C# LINQ (語言整合查詢)C#
- GO語言整合開發GoLand 2022GoLand
- 對企業而言,5G能取代WiFi嗎?WiFi
- Java語言規範Java
- java語言學習Java
- 語言的力量主要來自於社群
- Java與C語言的區別?JavaC語言
- java語言的入門介紹Java
- java語言相關的問題Java
- 【語言】Java 日期 API 的使用技巧JavaAPI
- 企業產品網站多語言支援 - 實踐案例網站
- 2019年十大企業級程式語言榜單
- 分享一個國內首款開源企業級go語言API閘道器--GoKu API GatewayGoAPIGateway
- Java語言搭建介面自動化框架學習八(鑑權)Java框架
- C語言求200000以內的自守數C語言
- 企業內訓的優勢
- Java Platform SE 8(Java™程式語言)JavaPlatform
- Java開發之路—java語言概述Java
- 【開發語言】PHP、Java、C語言的編譯執行過程PHPJavaC語言編譯
- c語言作業C語言