日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

MASA Framework - 整体设计思路

發(fā)布時(shí)間:2023/12/4 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MASA Framework - 整体设计思路 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

源起

年初我們?cè)谡乙豢羁蚣?#xff0c;希望它有如下幾個(gè)特點(diǎn):

  • 學(xué)習(xí)成本低

    只需要學(xué).Net每年主推的技術(shù)棧和業(yè)務(wù)特性必須支持的中間件,給開發(fā)同學(xué)減負(fù),只需要專注業(yè)務(wù)就好

    個(gè)人見解:一款好用的框架應(yīng)該是補(bǔ)充,而不是顛覆或過度創(chuàng)新

  • 對(duì)擴(kuò)展開放

    可以按照業(yè)務(wù)需求任意調(diào)整依賴實(shí)現(xiàn),而不被捆綁在一個(gè)架構(gòu)思路上

  • 功能強(qiáng)大卻不限制架構(gòu),從單體到SOA再到微服務(wù)都可以適應(yīng)

    因?yàn)橐粋€(gè)系統(tǒng)中總有復(fù)雜的也有簡(jiǎn)單的,最好能全面覆蓋我們的業(yè)務(wù)場(chǎng)景

  • 行業(yè)不限

    既能支持傳統(tǒng)行業(yè)的業(yè)務(wù)特殊性,又可以支持互聯(lián)網(wǎng)行業(yè)的高并發(fā)特性

  • 穩(wěn)定性

    有嚴(yán)格的測(cè)試標(biāo)準(zhǔn),用起來更安心

  • 契機(jī)

    在我們做技術(shù)選型的時(shí)候,對(duì)Dapr的研究越深入,對(duì)我們想要做的事情就越清晰

    站在Dapr的設(shè)計(jì)上我們找到了一個(gè)平衡點(diǎn),Mecha

    可以看下這篇文章(Mecha:將Mesh進(jìn)行到底):https://skyao.io/talk/202004-mecha-mesh-through-to-the-end/

    Mecha的特性

  • Mecha是通用的,高度可配置的,可重用的組件,提供分布式原語作為現(xiàn)成的能力

  • Mecha 可以與單個(gè)Micrologic組件一起部署(Sidecar模式),也可以部署為多個(gè)共享(注:我稱之為Node模式)

  • Mecha不對(duì)Micrologic運(yùn)行時(shí)做任何假設(shè)。它與使用開放協(xié)議和格式(例如HTTP/gRPC,JSON,Protobuf,CloudEvents)的多語言微服務(wù)甚至單體一起使用

  • Mecha以簡(jiǎn)單的文本格式(例如YAML,JSON)聲明式地配置,指示要啟用的功能以及如何將其綁定到Micrologic端點(diǎn)

  • 與其依靠多個(gè)代理來實(shí)現(xiàn)不同的目的(例如網(wǎng)絡(luò)代理,緩存代理,綁定代理),不如使用一個(gè)Mecha提供所有這些能力

  • 換個(gè)角度看Mecha

  • Mecha提供的是能力,不論是單體還是分布式

  • Mecha與服務(wù)之間交互是有開放API標(biāo)準(zhǔn)的

  • Mecha可以通過文本格式(Yaml或Json)聲明式地配置

    對(duì)于.Net開發(fā)來說,更習(xí)慣用Json

  • 應(yīng)用需要多種多樣的能力,Mecha提供了一整套解決方案卻不強(qiáng)綁定你所有都要用到,按需即可

  • 每個(gè)能力有不同的實(shí)現(xiàn)版本,可以根據(jù)自身業(yè)務(wù)情況替換其中某一部分的能力

  • 為什么是Mecha

    Mecha的好處是業(yè)務(wù)邏輯和越來越多的分布式系統(tǒng)問題之間的松耦合,除了可以解決分布式以外,我們是否也可以延展成業(yè)務(wù)邏輯和架構(gòu)之間的松耦合?

    當(dāng)然,說到底就是dll而已

    在分布式架構(gòu)中,它以Sidecar的形式守護(hù)在應(yīng)用身旁。

    如果在.Net項(xiàng)目中,它是否可以類似.Net Framework作為基建/適配器/中間件/總線等身份駐留在.Net進(jìn)程中提供基礎(chǔ)能力?

    設(shè)計(jì)思路

    一個(gè)完整的設(shè)計(jì)要先從概念開始,為了降低學(xué)習(xí)成本我們直接復(fù)用Dapr的概念定義

    概念

    構(gòu)建塊

    提供接口標(biāo)準(zhǔn),并為了達(dá)到某個(gè)基礎(chǔ)能力的串接不同組件(也通過接口),松耦合但不脫鉤

    組件

    基于接口標(biāo)準(zhǔn)的實(shí)現(xiàn),比如服務(wù)間通訊提供HttpClient和Dapr Service Invocation等不同組件的實(shí)現(xiàn)

    工具庫(kù)

    提供更抽象的底層能力,供業(yè)務(wù)和組件完成自身功能,如緩存/配置/數(shù)據(jù)操作/安全等

    Roadmap - v1.0

    • 基于.Net主推技術(shù)棧,不魔改,降低學(xué)習(xí)成本

    • 提供項(xiàng)目模板,根據(jù)業(yè)務(wù)需求自由組合功能集合

    • 支持單體架構(gòu),也支持分布式架構(gòu)

    • 支持DDD方法論,也支持CQRS

    • 盡量小的依賴集合,但不為了小而小

    • 約定優(yōu)于配置

    • 有創(chuàng)新,且要經(jīng)過生產(chǎn)驗(yàn)證

    目前進(jìn)展

    我們首先完成了用于指導(dǎo)架構(gòu)相關(guān)的部分,如DDD、CQRS、Minimal APIs擴(kuò)展等,并保持單元測(cè)試覆蓋率在90%以上,目前93%。

    以Contrib的目錄結(jié)構(gòu)為例:

    MASA.Contrib ├── solution items │ ? ├── nuget.config ├── src │ ? ├── BasicAbility │ ? │ ? ├── MASA.Contrib.BasicAbility.Dcc ? ? ? ? ? ? ? ? ? ? ? ? Configuration API │ ? ├── Configuration │ ? │ ? ├── MASA.Contrib.Configuration │ ? ├── Data │ ? │ ? ├── MASA.Contrib.Data.UoW.EF ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Unit of work │ ? │ ? └── MASA.Contrib.Data.Contracts.EF ? ? ? ? ? ? ? ? ? ? ? ? Protocol EF version │ ? ├── DDD │ ? │ ? ├── MASA.Contrib.DDD.Domain ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? In-process and cross-process support │ ? │ ? └── MASA.Contrib.DDD.Domain.Repository.EF │ ? ├── Dispatcher │ ? │ ? ├── MASA.Contrib.Dispatcher.Events ? ? ? ? ? ? ? ? ? ? ? ? In-process event │ ? │ ? ├── MASA.Contrib.Dispatcher.IntegrationEvents.Dapr │ ? │ ? └── MASA.Contrib.Dispatcher.IntegrationEvents.EventLogs.EF Cross-process event │ ? ├── ReadWriteSpliting │ ? │ ? └── CQRS │ ? │ ? │ ? └── MASA.Contrib.ReadWriteSpliting.CQRS ? ? ? ? ? ? ? CQRS │ ? ├── Service │ ? │ ? └── MASA.Contrib.Service.MinimalAPIs ? ? ? ? ? ? ? ? ? ? ? Best practices for [MinimalAPI] ├── test │ ? ├── MASA.Contrib.Dispatcher.Events │ ? │ ? ├── MASA.Contrib.Dispatcher.Events.BenchmarkDotnetTest │ ? │ ? ├── MASA.Contrib.Dispatcher.Events.CheckMethodsParameter.Tests │ ? │ ? ├── MASA.Contrib.Dispatcher.Events.CheckMethodsParameterNotNull.Tests │ ? │ ? ├── MASA.Contrib.Dispatcher.Events.CheckMethodsParameterType.Tests │ ? │ ? ├── MASA.Contrib.Dispatcher.Events.CheckMethodsType.Tests │ ? │ ? ├── MASA.Contrib.Dispatcher.Events.OnlyCancelHandler.Tests │ ? │ ? ├── MASA.Contrib.Dispatcher.Events.CheckMethodsType.Tests │ ? │ ? ├── MASA.Contrib.Dispatcher.Events.Tests │ ? ├── MASA.Contrib.Data.UoW.EF.Tests │ ? ├── MASA.Contrib.Dispatcher.IntegrationEvents.EventLogs.EF.Tests │ ? ├── MASA.Contrib.DDD.Domain.Tests │ ? ├── MASA.Contrib.DDD.Domain.Repository.EF.Tests

    有什么新功能

    • Minimal APIs支持類似Controller的API分類聚合

    • Event Bus支持Hanlder編排、SAGA、Middleware、事務(wù)控制、Event和Hanlder解耦模式。相較于MediatR性能僅有0.x%的差距但功能更加強(qiáng)大,可以面對(duì)更復(fù)雜的業(yè)務(wù)場(chǎng)景,并且已規(guī)劃性能優(yōu)化路線

    • Integration Event Bus是Event Bus的增強(qiáng)版,支持分布式事務(wù)(最終一致性),與Dapr集成

    • Domain Event Bus是Event Bus和Integration Event Bus的集成版,支持在領(lǐng)域內(nèi)自動(dòng)控制進(jìn)程內(nèi)與進(jìn)程外的事件,支持實(shí)時(shí)發(fā)送也支持入棧后統(tǒng)一發(fā)送

    更多功能等你來體驗(yàn),也歡迎提意見

    什么是MASA

    MASA = Mesh Application Service Architecture,即網(wǎng)格應(yīng)用服務(wù)架構(gòu)

    除了MASA Framework,我們馬上將開源Blazor組件庫(kù)(MASA Blazor),包括管理后臺(tái)模板(MASA Blazor Pro)

    后續(xù)還有MASA Stack開源產(chǎn)品,基于MASA Framework打造的一站式PaaS平臺(tái),具備DevOps、微服務(wù)觀測(cè)治理、數(shù)據(jù)治理等平臺(tái)級(jí)能力

    示例 - MASA.EShop

    MASA.EShop是使用MASA.Framework復(fù)刻了eShopOnDapr的功能,并提供了多種架構(gòu)方式的示例。

    • 支持Docker Compose

    • dapr component配置

    • Blazor版EShop網(wǎng)站(正在籌備更換為MASA Blazor Pro的UI)

    • 共享Contracts

    • 所有服務(wù)都使用Minimal APIs和Dapr Pub/Sub進(jìn)行通信

    • MASA.EShop.Services.Basket演示單體架構(gòu),使用Dapr State Management

    • MASA.EShop.Services.Catalog演示CQRS,使用CQRS、貧血模型

    • MASA.EShop.Services.Ordering演示CQRS與Actor,使用CQRS、貧血模型、Dapr Actor

    • MASA.EShop.Service.Payment演示CQRS與DDD,使用CQRS、DDD、充血模型

    開源地址

    MASA.BuildingBlocks:https://github.com/masastack/MASA.BuildingBlocks

    MASA.Contrib:https://github.com/masastack/MASA.Contrib

    MASA.Utils:https://github.com/masastack/MASA.Utils

    MASA.EShop:https://github.com/masalabs/MASA.EShop

    如果你對(duì)我們的MASA Framework感興趣,無論是代碼貢獻(xiàn)、使用、提Issue,歡迎聯(lián)系我們

    參考

    • https://skyao.io/talk/202004-mecha-mesh-through-to-the-end/

    總結(jié)

    以上是生活随笔為你收集整理的MASA Framework - 整体设计思路的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。