<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 云原生編程語言 Ballerina 當我第一眼看到 [Ballerina](https://ballerina.io) 還真有點驚艷的感覺。Ballerina 這個單詞的意思是“芭蕾舞女演員”。我想他們之所以給公司和這們語言起這個名字,可能是希望它成為云原生這個大舞臺中,Ballerina 能像一個靈活的芭蕾舞者一樣輕松自如吧! Ballerina 是一款開源的編譯式的強類型語言,該語言本身的代碼可以通過 [GitHub](https://github.com/ballerina-platform/ballerina-lang) 上獲取。我們可以通過 Ballerina 官網上的[設計哲學](https://ballerina.io/philosophy/)頁面來對這門云原生編程語言一探究竟。 ![云原生編程語言ballerina](https://box.kancloud.cn/b6bc1b84a8e21e69b60c3e598c61afd5_1825x1671.png) 未來的應用程序應該是基于 API 的,而眾多 API 之間的通訊和集成就成了關鍵問題。Ballerina 是一款使用文本和圖形語法編譯的、事務的、靜態和強類型編程語言。Ballerina 包含分布式系統集成到語言的基本概念,并提供類型安全,并發環境下實現的分布式事務,可靠的消息傳遞,流處理和工作流。 ## 為什么創建 Ballerina? 與 ESB 集成仍然是瀑布式開發。你必須部署服務器,配置連接器,使用 XML 編程服務邏輯以及使用 XPath 查詢和轉換數據。這不是開發者友好的。 帶有 Spring 和 Node.js 等框架的編程語言提供了靈活性,但是它沒有使適合于序列并行化、并發模型編程的分布式系統結構變得簡單。 ESB、EAI、BPM 和 DSL 需要 XML 和配置來中斷迭代開發流程:編輯、構建、運行和測試。這與運行實際應用之間是有一條鴻溝的,而云原生編程語言 Ballerina 的出現就是為了解決這條“集成鴻溝”的。 ## Ballerina 設計理念 ### 序列圖 ![云原生編程語言Ballerina的序列圖設計理念](https://box.kancloud.cn/d4018fc15eb736b1e2a5f2091ea0764f_1201x1317.png) **語言靈感** 序列圖反映了設計開發人員記錄的互聯的系統。Ballerina 的語法和高效的編碼模式要求開發人員使用強大的交互最佳實踐來編碼。 **序列圖可視化** Ballerina 的語言語義模型旨在定義獨立的各方如何通過結構化的交互溝通。接著,每個 Ballerina 程序都可以顯示為其流程的序列圖。IntelliJ 和 VS Code 的插件中提供了這些可視化。Ballerina Composer 是一款通過序列圖創建 Ballerina 服務的工具。 **Actor 與 action** 客戶端、worker 和遠程系統在 Ballerina 的序列圖中以不同的 actor 表示。在代碼中,遠程端點通過連接器進行連接,連接器提供類型安全操作。在圖形上,每個連接器在序列圖中表示為一個 actor(即一條垂直線),action 表示為與這些actor 的交互。 ### 并發 ![云原生編程語言Ballerina的并發理念](https://box.kancloud.cn/f8ef7300d7e971a8cfbce80e6d35a817_1203x1319.png) **序列圖和并發** Ballerina 的并發模型是并行優先的,因為與遠程方的交互總是涉及多個 worker。Worker 之間的交互作為消息傳遞進行處理,它們之間沒有共享狀態。 **Worker 語義** Ballerina 的執行模型由稱為 worker 的輕量級并行執行單元組成。Worker 使用非阻塞策略來確保沒有函數鎖定正在執行的線程,例如等待響應的 HTTP I/O調用。 **編程模型** Worker 和 fork/join 語義抽象了底層非阻塞方法,以啟用更簡單的并發編程模型。 ### 類型系統 下面是 Ballerina 中支持的類型。 ```java any anything; int integer = 0; float floatingPoint = 0.0; boolean b = true; string hi = "hello"; blob bl = hi.toBlob("UTF-8"); json jsonNative = { a: "hello", b: 5 }; xml x = xml `<ballerina> <supports>XML natively</supports> </ballerina>`; string[] stringArray = ["hi", "there"]; int[][] arrayOfArrays = [[1,2],[3,4]]; json | xml | string unionType; (string, int) tuple = ("hello", 5); () n = (); // the empty tuple acts as "null" string | int stringOrInt = "this is a union type"; int | () intOrNull = 5; var inferred = ("hello", 5); map<boolean> myMap = {"ballerina": true}; type myRecord { string a; int b; }; type myObject object { public { string x; } private { string y; } new (string xi, string yi) { x = xi; y = yi; } function getX() returns (string) { return x; } }; ``` **類型安全** Ballerina 有一個結構化的類型系統,包括 primitive、recored、object、tuple 和 union 類型。該類型安全模型在賦值時包含了類型推斷,并為連接器、邏輯和網絡綁定的有效負載提供了大量的編譯時完整性檢查。 **Union 類型和顯式 Null** 各個網絡端點通常會根據其輸入和邏輯返回具有不同有效負載類型消息或 error。Ballerina 的類型系統采用了基于 union 類型的方法。Union 類型明確地采用了這種語義,不需要開發人員創建不必要的“包裝”類型。這種方法也增強了對 null 值的處理。默認情況下,類型不支持 null 值。開發人員必須明確創建 union 類型來處理 null 值。結果是 null 的異常不會發生,并且語言語法和編譯器會識別是否需要 null 處理邏輯。 **異構數據處理** Ballerina 類型系統內置豐富的對 JSON、XML、流和表格的支持以及對 ProtoBuf 和 gRPC 的直接支持。這樣做的結果是可以獲得處理網絡負載、SQL 編程和流處理的干凈可讀的代碼。數據轉換邏輯不受復雜的生成類型、第三方庫代碼或其他混淆因素的影響——簡單明了的可讀代碼捕捉與異構數據和轉換邏輯的交互。 ## Ballerina 如何工作? Ballerina 的語法、代碼和編譯器創建了運行時服務和部署構件,這些工件都是云原生就緒的,您可以選擇將其部署在 IaaS、編排系統或 service mesh 中的。開發人員的體驗旨在維護流程,包括快速的編輯、構建、調試周期并集成到團隊的生命周期工具鏈中。 ### 運行時架構 ![云原生編程語言ballerina運行時架構](https://box.kancloud.cn/ea2abdcd12b2b8fd19523225ccdc3aac_1453x1594.png) **Ballerina API 網關** 強制執行身份策略并保證性能。通過代碼注解(類似于 Spring 中的注解)進行配置和部署。可以運行嵌入式服務、作為管理多個服務的容器代理或者使用 API 管理解決方案(如 WSO2 API Manager)。 **Ballerina service** 表示您的 API 和執行邏輯。服務通過不同的協議運行,內部代碼結構被編譯為支持 OpenAPI 和 Swagger 的API接口。服務與端點進行通信,無論它們是調用客戶端還是其他服務。 **Ballerina bridge** 允許傳統代碼和服務參與分布式事務中的 Ballerina 服務。Bridge 將您現有服務與本地代理包裝起來,通過調用 Ballerina 服務參與和代理分布式事務。 **消息代理、事務協調者和身份代理** 為參與事務、事件驅動的通信和為認證流程的 Ballerina 服務提供代理基礎設施功能。這些組件可以嵌入到單個服務部署中或者進行單獨部署和擴展以管理多個服務。 ### 部署架構 ![云原生編程語言ballerina部署架構圖](https://box.kancloud.cn/d2f529024e5a6ff271106e15a41894e6_1453x1594.png) **IaaS** 使用代碼注解和構建系統,可以打包 Ballerina 服務和其他運行時組件(如 API 網關)以部署到任何云原生環境中。在 IaaS 環境中,Ballerina 服務可以以虛擬機或容器的方式運行,也可以在構建期間將鏡像推送到 registry 中。 **編排器** 代碼注解會觸發編譯器擴展,從而為不同的編排器(如 Kubernetes 或 Cloud Foundry)生成 Ballerina 組件的工件包。供應商或 DevOps 可以添加自定義代碼注解以生成特定于環境的部署,例如自定義藍色部署算法。 **Service mesh** Ballerina 可以選擇斷路器和事務流程邏輯委托給像 Istio 或 Envoy 這樣的 service mesh(如果有的話)。如果沒有 service mesh 的話,Ballerina 服務將嵌入相應的功能。 ### 生命周期 ![云原生編程語言ballerina生命周期架構圖](https://box.kancloud.cn/1ac44f7f62079bb95faa7292d017b786_1204x1317.png) **Ballerina 工具** 使用我們的語言服務器可以在 VS Code 和 IntelliJ 中獲取自動補全和調試等智能感知。Ballerina 的關鍵字和語法結構可以用序列圖的方式來表示。使用 Ballerina Composer 可以可視化的編輯 Ballerina 代碼。另外它也可以做可視化得運行時和開發環境追蹤。 **Ballerina 構建** 將服務編譯為經過優化的字節碼,以便使用內存調優后的 BVM 運行。提供了使用Testerina 的項目結構、依賴管理、包管理和單元測試。構建鎖可以輕松地重新創建服務和部署。生成可執行文件(.balx)或庫(.balo)。 **CI/CD** 部署代碼注解會觸發構建擴展,從而為持續集成、持續交付或編排器環境生成工件。將構建工件推送到您的 CI/CD 系統或完全跳過。 **Registry** 將端點連接器、自定義注解和代碼功能作為可共享軟件包組合在一起。可以在全球共享資源庫——Ballerina Central 中 pull 或 push 版本化的軟件包。 ## Ballerina 的語言特性 Ballerina 設計為云優先,內置對現代 Web 協議和數據格式的支持,完全支持圖靈完備編程語言,以及對微服務架構的原生支持。 - API 構造 - 邏輯語言 - 異步 - Json 和 XML - 注解 - 穩定和強大的類型 - stream ## Ballerina 中集成了哪些內容? Ballerina 是一種旨在**集成簡化**的語言。基于順序圖的交互,Ballerina 內置了對通用集成模式和連接器的支持,包括分布式事務、補償和斷路器。憑借對 JSON 和 XML 的一流支持,Ballerina 能夠簡單有效地構建跨網絡終端的強大集成。 - 類型安全端點集成 - 類型安全連接器 - 可靠的消息傳遞 - 分布式事務 - 斷路器 - 注入攻擊防護 - Docker 和 Kubernetes 關于 Ballerina 中各個功能的示例代碼請查閱 [ballerina-example](https://github.com/ballerina-platform/ballerina-examples)。 ## 參考 - https://ballerina.io - [Microservices, Docker, Kubernetes, Serverless, Service Mesh, and Beyond](https://dzone.com/articles/microservices-docker-kubernetes-serverless-service)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看