<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Service Weaver : 一個(gè)用于編寫分布式應(yīng)用的框架

          共 4069字,需瀏覽 9分鐘

           ·

          2023-03-11 00:21

          ??你懂的?

          我們很高興來(lái)介紹 Service Weaver,這是一個(gè)用于構(gòu)建和部署分布式應(yīng)用程序的開(kāi)源框架。Service Weaver 允許您將應(yīng)用程序編寫為一個(gè)模塊化的單體應(yīng)用,并將其部署為一組微服務(wù)。

          更具體地說(shuō),Service Weaver 由兩個(gè)核心部分組成:

          1. 一組編程庫(kù),讓你只需要使用原生數(shù)據(jù)結(jié)構(gòu)和方法調(diào)用,就可以將應(yīng)用程序編寫為單個(gè)模塊化二進(jìn)制文件。

          2. 一組部署程序,允許您配置應(yīng)用程序的運(yùn)行時(shí)拓?fù)?,并將其部署為一組微服務(wù),可以在本地或您選擇的云上進(jìn)行部署。


          2a6a30a3359e7087bb91327c2aab0b4a.webp


          通過(guò)將編寫應(yīng)用程序的過(guò)程與 runtime 考慮因素(例如如何將應(yīng)用程序拆分為微服務(wù)、使用哪些數(shù)據(jù)序列化格式以及如何發(fā)現(xiàn)服務(wù))分離,Service Weaver 旨在提高分布式應(yīng)用程序開(kāi)發(fā)速度和性能。

          構(gòu)建 Service Weaver 的動(dòng)機(jī)

          在編寫基于微服務(wù)的應(yīng)用程序時(shí),我們發(fā)現(xiàn)維護(hù)多個(gè)不同的微服務(wù)二進(jìn)制文件,以及它們各自的配置文件、網(wǎng)絡(luò)端點(diǎn)和可序列化數(shù)據(jù)格式,會(huì)顯著降低我們的開(kāi)發(fā)速度。

          更重要的是,微服務(wù)嚴(yán)重影響了我們進(jìn)行跨二進(jìn)制更改的能力。這使我們不得不在每個(gè)二進(jìn)制文件中標(biāo)記新功能,小心地更替我們的數(shù)據(jù)格式,并保持對(duì)我們的推出流程的深入了解(這意味著我們需要非常熟悉我們的應(yīng)用程序部署流程)。

          最后,預(yù)先確定特定數(shù)量的微服務(wù)有效地凍結(jié)了我們的 API;它們變得如此難以更改,以至于把所有更改都擠進(jìn)現(xiàn)有的 API 中比修改它們更容易。

          因此,我們希望有一個(gè)單一的單體二進(jìn)制文件來(lái)使用。

          單體二進(jìn)制文件易于編寫:它們只使用原生的語(yǔ)言類型和方法調(diào)用。它們也易于更新:只需編輯源代碼并重新部署即可。它們易于在本地或虛擬機(jī)中運(yùn)行:只需執(zhí)行二進(jìn)制文件即可。

          Service Weaver 是具有單體應(yīng)用程序的開(kāi)發(fā)速度,同時(shí)也具備微服務(wù)的可擴(kuò)展性、安全性和容錯(cuò)性,是兩者之間最佳結(jié)合的一個(gè)框架。

          Service Weaver 概覽

          Service Weaver 的核心思想是其“模塊式單體應(yīng)用”模型。

          您可以編寫一個(gè)單一的二進(jìn)制文件,只使用語(yǔ)言原生的數(shù)據(jù)結(jié)構(gòu)和方法調(diào)用。您可以將二進(jìn)制文件組織為一組模塊,稱為“組件”,這些組件是編程語(yǔ)言的原生類型。

          例如,以下是使用 Service Weaver 編寫的 Go 語(yǔ)言應(yīng)用程序。它由一個(gè) main() 函數(shù)和一個(gè) Adder 組件組成:

                type?Adder?interface?{?
          ????Add(context.Context,?int,?int)?(int,?error)
          }?
          type?adder?struct{?
          ????weaver.Implements[Adder]
          }
          func?(adder)?Add(_?context.Context,?x,?y?int)?(int,?error)?{
          ??return?x?+?y,?nil
          }

          func?main()?{
          ??ctx?:=?context.Background()
          ??root?:=?weaver.Init(ctx)
          ??adder,?err?:=?weaver.Get[Adder](root)
          ??sum,?err?:=?adder.Add(ctx,?1,?2)
          }

          運(yùn)行上述應(yīng)用程序時(shí),您可以進(jìn)行微不足道的配置選擇,即將 Adder 組件與 main() 函數(shù)放在一起還是分開(kāi)放置。當(dāng) Adder 組件是獨(dú)立的時(shí),Service Weaver 框架會(huì)自動(dòng)將 Add 調(diào)用轉(zhuǎn)換為遠(yuǎn)程 RPC;否則,Add 調(diào)用仍然是本地方法調(diào)用。

          要對(duì)上述應(yīng)用程序進(jìn)行更改,例如向 Add 方法添加無(wú)限數(shù)量的參數(shù),您只需要更改 Add 的簽名,更改其調(diào)用位置,然后重新部署應(yīng)用程序。

          Service Weaver 確保新版本的 main() 僅與新版本的 Adder 通信,而不管它們是否共存。這種行為,結(jié)合使用語(yǔ)言原生的數(shù)據(jù)結(jié)構(gòu)和方法調(diào)用,使您可以專注于編寫應(yīng)用程序邏輯,而不必?fù)?dān)心部署拓?fù)浜头?wù)間通信(例如,在代碼中沒(méi)有 protos、stubs 或 RPC 通道)。

          當(dāng)運(yùn)行應(yīng)用程序時(shí),Service Weaver 允許您在任何地方運(yùn)行它——在您的本地桌面環(huán)境、本地機(jī)架或云上——而不需要更改應(yīng)用程序代碼。這種可移植性是通過(guò)Service Weaver 框架內(nèi)置的明確關(guān)注點(diǎn)分離實(shí)現(xiàn)的。

          在一端,我們有編程框架,用于應(yīng)用程序開(kāi)發(fā)。在另一端,我們有各種“部署器”實(shí)現(xiàn),每個(gè)實(shí)現(xiàn)針對(duì)一種部署環(huán)境。

          049873e42bc521b45c6e2c44b2028f89.webp


          這種關(guān)注點(diǎn)分離使您可以通過(guò) go run .在本地單個(gè)進(jìn)程中運(yùn)行應(yīng)用程序;或通過(guò) weaver gke deploy 在 Google Cloud 上運(yùn)行;或在其他平臺(tái)上啟用和運(yùn)行它。在所有這些情況下,您都可以獲得相同的應(yīng)用程序行為,而無(wú)需修改或重新編譯應(yīng)用程序。

          Service Weaver v0.1 包括什么?

          • 用于編寫應(yīng)用程序的Go核心庫(kù)[1]

          • 用于在本地或 GKE 上運(yùn)行應(yīng)用程序的一些部署器,如本地部署器[2]GKE 部署器[3]

          • 一組 API,允許您為任何其他平臺(tái)編寫自己的部署器。

          所有庫(kù)都在 Apache 2.0 許可下發(fā)布。請(qǐng)注意,在發(fā)布 v1.0 版本之前,我們可能會(huì)引入破壞性更改

          入門指南和參與方式

          雖然 Service Weaver 仍處于早期開(kāi)發(fā)階段,但我們希望邀請(qǐng)您使用它并分享您的反饋、想法和貢獻(xiàn)。

          使用 Service Weaver 的最簡(jiǎn)單方法是遵循我們網(wǎng)站上的逐步說(shuō)明[4]。如果您想做出貢獻(xiàn),請(qǐng)遵循我們的貢獻(xiàn)者指南[5]。如果要發(fā)布問(wèn)題或直接聯(lián)系團(tuán)隊(duì),請(qǐng)使用 Service Weaver 的郵件列表[6]。 請(qǐng)關(guān)注 Service Weaver 博客[7] 以獲取最新消息、更新和未來(lái)活動(dòng)的詳細(xì)信息。

          By Srdjan Petrovic and Garv Sawhney, ?僅代表 Service Weaver team


          相關(guān)鏈接:

          [1]https://github.com/ServiceWeaver/weaver

          [2]https://github.com/ServiceWeaver/weaver/tree/main/cmd/weaver

          [3]https://github.com/ServiceWeaver/weaver-gke

          [4]https://serviceweaver.dev/docs.html#step-by-step-tutorial

          [5]https://github.com/ServiceWeaver/weaver/blob/main/CONTRIBUTING.md

          [6]https://groups.google.com/g/serviceweaver

          [7]https://serviceweaver.dev/blog/

          原文地址:

          Introducing Service Weaver: A Framework for Writing Distributed Applications | Google Open Source Blog (googleblog.com)

          原文作者: Srdjan Petrovic and Garv Sawhney

          本文永久鏈接: translator/w09_Introducing_Service_Weaver_A_Framework_for_Writing_Distributed_Applications.md at master · gocn/translator (github.com)

          譯者 zxmfke

          校對(duì) ---




          669c05af68cf68e62f06a34de631e153.webp

          3月15日第一階段早鳥(niǎo)票截止 ,還沒(méi)薅羊毛的快下手了 ??

          瀏覽 59
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  东京热在线观看 | 青青草成人无码视频 | 亚洲欧美日本一区二区三区 | 免费无码操逼 | 堕落人妻5果冻传媒 |