微服務(wù)選型與探討課件_第1頁
微服務(wù)選型與探討課件_第2頁
微服務(wù)選型與探討課件_第3頁
微服務(wù)選型與探討課件_第4頁
微服務(wù)選型與探討課件_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

微服務(wù)選型與探討微服務(wù)選型與探討問題匯總1.為什么微服務(wù)部署很少采用邊緣方式CI?2.宏觀角度下微服務(wù)架構(gòu)所適用的場(chǎng)景及運(yùn)維?3.金融行業(yè)的微服務(wù)的標(biāo)準(zhǔn)如何制定比較合理?4..netcore微服務(wù)需要用到哪些技術(shù)?5..netcore微服務(wù)有哪些成功的案例?6、微服務(wù)與系統(tǒng)模塊化的取舍?微服務(wù)選型與探討為什么選擇微服務(wù)微服務(wù)選型與探討S/N對(duì)比點(diǎn)微服務(wù)架構(gòu)單體架構(gòu)結(jié)論1上手難度API接口調(diào)用數(shù)據(jù)庫共享或本地程序調(diào)用單體架構(gòu)勝2.1開發(fā)效率(簡(jiǎn)單項(xiàng)目)早期設(shè)計(jì)和溝通的工作量加大,隨著項(xiàng)目規(guī)模和時(shí)間的推移,效率變化不大早期工作量小,隨著項(xiàng)目規(guī)模和時(shí)間的推移,效率大幅度下降單體架構(gòu)勝2.2開發(fā)效率(復(fù)雜項(xiàng)目)早期設(shè)計(jì)和溝通的工作量加大,隨著項(xiàng)目規(guī)模和時(shí)間的推移,效率變化不大早期工作量小,隨著項(xiàng)目規(guī)模和時(shí)間的推移,效率大幅度下降微服務(wù)架構(gòu)勝3系統(tǒng)設(shè)計(jì)(高內(nèi)聚低耦合)每個(gè)業(yè)務(wù)單獨(dú)包裝成一個(gè)微服務(wù),數(shù)據(jù)和代碼都從物理上隔離開來,實(shí)現(xiàn)高內(nèi)聚低耦合相對(duì)容易以包的形式對(duì)代碼進(jìn)行模塊劃分,控制得當(dāng)即可實(shí)現(xiàn)高內(nèi)聚。但最終都是在數(shù)據(jù)層面將整個(gè)系統(tǒng)耦合在一起微服務(wù)架構(gòu)勝4系統(tǒng)設(shè)計(jì)(擴(kuò)展性)獨(dú)立開發(fā)新模塊,通過API與現(xiàn)有模塊交互在現(xiàn)有系統(tǒng)上修改,與現(xiàn)存業(yè)務(wù)邏輯高度耦合微服務(wù)架構(gòu)勝5需求變更響應(yīng)速度各個(gè)微服務(wù)組件獨(dú)立變更,容易實(shí)施敏捷開發(fā)方法需要了解整個(gè)系統(tǒng)才可以正確修改,容易導(dǎo)致不相關(guān)模塊的意外失敗微服務(wù)架構(gòu)勝6系統(tǒng)升級(jí)效率各個(gè)微服務(wù)組件獨(dú)立升級(jí),上手和開發(fā)效率高,影響面小需要了解整個(gè)系統(tǒng)才可以正確修改,容易導(dǎo)致不相關(guān)模塊的意外失敗微服務(wù)架構(gòu)勝7運(yùn)維效率大系統(tǒng)被拆分為多個(gè)小系統(tǒng),部署和運(yùn)維難度加大,但可以利用DevOps等方式將運(yùn)維工作自動(dòng)化簡(jiǎn)單直接單體架構(gòu)勝8知識(shí)積累微服務(wù)組件可以在新項(xiàng)目中直接復(fù)用,包括前端頁面一般以共享庫的形式復(fù)用后臺(tái)代碼微服務(wù)架構(gòu)勝9.1硬件需求(簡(jiǎn)單項(xiàng)目)一個(gè)系統(tǒng)需部署多個(gè)微服務(wù),需要啟動(dòng)多個(gè)運(yùn)行容器整個(gè)系統(tǒng)只需要一個(gè)運(yùn)行容器單體架構(gòu)勝9.2硬件需求(高要求項(xiàng)目)按需為不同業(yè)務(wù)模塊伸縮資源節(jié)點(diǎn)為整個(gè)系統(tǒng)分配資源,導(dǎo)致冗余微服務(wù)架構(gòu)勝10.1項(xiàng)目成本(簡(jiǎn)單系統(tǒng))項(xiàng)目早期和后期,成本變化曲線平緩項(xiàng)目早期成本低,后期成本大單體架構(gòu)勝10.2項(xiàng)目成本(復(fù)雜系統(tǒng))項(xiàng)目早期和后期,成本變化曲線平緩項(xiàng)目早期成本低,后期成本大微服務(wù)架構(gòu)勝11非功能需求為單獨(dú)的微服務(wù)按需調(diào)優(yōu),甚至更換實(shí)現(xiàn)方式和程序語言為整個(gè)系統(tǒng)調(diào)優(yōu),牽一發(fā)而動(dòng)全身微服務(wù)架構(gòu)勝12職責(zé)、成就感擁有明確的職責(zé)劃分,主人翁意識(shí)和成就感加強(qiáng),容易形成自組織型團(tuán)隊(duì)職責(zé)不明確,容易產(chǎn)生扯皮行為微服務(wù)架構(gòu)勝13風(fēng)險(xiǎn)大系統(tǒng)被拆分為小系統(tǒng),風(fēng)險(xiǎn)可被控制在小系統(tǒng)內(nèi),但也引入了各小系統(tǒng)之間的交互風(fēng)險(xiǎn)系統(tǒng)是一個(gè)整體,一榮俱榮,一損俱損微服務(wù)架構(gòu)勝微服務(wù)架構(gòu)與單體架構(gòu)的對(duì)比微服務(wù)選型與探討康威定律Organizationswhichdesignsystemsareconstrainedtoproducedesignswhicharecopiesofthecommunicationstructuresoftheseorganizations.-MelvinConway(1967)設(shè)計(jì)系統(tǒng)的組織,其產(chǎn)生的設(shè)計(jì)等同于組織之內(nèi)、組織之間的溝通結(jié)構(gòu)分布式服務(wù)組成的系統(tǒng)按照業(yè)務(wù)而不是技術(shù)來劃分組織做有生命的產(chǎn)品而不是項(xiàng)目Smartendpoints和dumbpipes(強(qiáng)服務(wù)個(gè)體和弱通信)自動(dòng)化運(yùn)維(DevOps)容錯(cuò)快速演化微服務(wù)選型與探討AKF可擴(kuò)展立方(ScalabilityCube)X軸擴(kuò)展——關(guān)注水平的數(shù)據(jù)和服務(wù)克隆,也就是前文提到的“加機(jī)器解決問題”Y軸擴(kuò)展——關(guān)注應(yīng)用中職責(zé)的劃分,比如數(shù)據(jù)類型,交易執(zhí)行類型的劃分Z軸擴(kuò)展——關(guān)注服務(wù)和數(shù)據(jù)的優(yōu)先級(jí)劃分,如分地域劃分整個(gè)擴(kuò)展模型,用下圖來表示,其中原點(diǎn)代表完全無擴(kuò)展的狀態(tài)微服務(wù)選型與探討身份認(rèn)證用戶、客戶端、資源交互過程中的身份認(rèn)證授權(quán)框架服務(wù)注冊(cè)服務(wù)提供方將自己調(diào)用地址注冊(cè)到服務(wù)注冊(cè)中心,讓服務(wù)調(diào)用方能夠方便地找到自己。服務(wù)發(fā)現(xiàn)服務(wù)調(diào)用方從服務(wù)注冊(cè)中心找到自己需要調(diào)用的服務(wù)的地址。負(fù)載均衡服務(wù)提供方一般以多實(shí)例的形式提供服務(wù),負(fù)載均衡功能能夠讓服務(wù)調(diào)用方連接到合適的服務(wù)節(jié)點(diǎn)。并且,節(jié)點(diǎn)選擇的工作對(duì)服務(wù)調(diào)用方來說是透明的。服務(wù)網(wǎng)關(guān)服務(wù)網(wǎng)關(guān)是服務(wù)調(diào)用的唯一入口,可以在這個(gè)組件是實(shí)現(xiàn)用戶鑒權(quán)、動(dòng)態(tài)路由、灰度發(fā)布、A/B測(cè)試、負(fù)載限流等功能。配置中心將本地化的配置信息(properties,xml,yaml等)注冊(cè)到配置中心,實(shí)現(xiàn)程序包在開發(fā)、測(cè)試、生產(chǎn)環(huán)境的無差別性,方便程序包的遷移。API管理以方便的形式編寫及更新API文檔,并以方便的形式供調(diào)用者查看和測(cè)試。集成框架微服務(wù)組件都以職責(zé)單一的程序包對(duì)外提供服務(wù),集成框架以配置的形式將所有微服務(wù)組件(特別是管理端組件)集成到統(tǒng)一的界面框架下,讓用戶能夠在統(tǒng)一的界面中使用系統(tǒng)。分布式事務(wù)對(duì)于重要的業(yè)務(wù),需要通過分布式事務(wù)技術(shù)(TCC、高可用消息服務(wù)、最大努力通知)保證數(shù)據(jù)的一致性。調(diào)用鏈記錄完成一個(gè)業(yè)務(wù)邏輯時(shí)調(diào)用到的微服務(wù),并將這種串行或并行的調(diào)用關(guān)系展示出來。在系統(tǒng)出錯(cuò)時(shí),可以方便地找到出錯(cuò)點(diǎn)。支撐平臺(tái)系統(tǒng)微服務(wù)化后,系統(tǒng)變得更加碎片化,系統(tǒng)的部署、運(yùn)維、監(jiān)控等都比單體架構(gòu)更加復(fù)雜,那么,就需要將大部分的工作自動(dòng)化?,F(xiàn)在,可以通過Docker等工具來中和這些微服務(wù)架構(gòu)帶來的弊端。例如持續(xù)集成、藍(lán)綠發(fā)布、健康檢查、性能健康等等。嚴(yán)重點(diǎn),以我們兩年的實(shí)踐經(jīng)驗(yàn),可以這么說,如果沒有合適的支撐平臺(tái)或工具,就不要使用微服務(wù)架構(gòu)。常見的微服務(wù)組件及概念微服務(wù)選型與探討.NET微服務(wù)和容器指南eBookaka.ms/MicroservicesEbook

Referenceapplicationaka.ms/MicroservicesArchitecture覆蓋下列主題:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)模式領(lǐng)域模型

(Aggregates,Entity,VO,etc.)簡(jiǎn)單的

CQRSDapperMicroORMforqueriesCommandsandMediatorpatter領(lǐng)域事件(在同一個(gè)微服務(wù)內(nèi))微服務(wù)IntegrationEvents(跨多個(gè)微服務(wù))Multi-containerdocker-compose.ymlSwaggerw/SwashbuckleSecurity(Authentication/Authorization)withtokensfromIdentityServer4wrappingASP.NETIdentity微服務(wù)選型與探討微服務(wù)微服務(wù)選型與探討NewpatternsandnewtechnologiesMicroservicesDockerContainersDockerImageDockerRegistryDockerHubAzureContainerRegistryBoundedContextAPIGatewayEventBusCommandsEventsDockerHostAzureContainerServiceAzureServiceFabricKubernetesDockerSwarmMesosDC/OSLinuxContainersWindowsContainersDomainEventsMediatorAggregatesDomainEntityCQRSsimplifiedDomain-DrivenDesignMessageBrokersRabbitMQAzureServiceBusNServiceBusMassTransitHyper-VContainersAsync.communicationBrighterStatefulServicesActorsOrchestratorsAutonomousDecoupledIsolatedServiceDiscoveryTransientFailuresHandlingResiliencyHealthChecksRetrieswithExponentialBackoffCircuitBreakersPollyNomad&addressableservices微服務(wù)選型與探討Microservices!=Containers但是他們天生一對(duì)…

微服務(wù)選型與探討單體應(yīng)用程序微服務(wù)應(yīng)用程序微服務(wù)應(yīng)用程序把功能分割為更小粒度的服務(wù).通過獨(dú)立部署各個(gè)服務(wù)的方式擴(kuò)展,每個(gè)服務(wù)可以獨(dú)立進(jìn)行擴(kuò)展單體應(yīng)用程序在一個(gè)進(jìn)程中運(yùn)行所有的功能.通過部署應(yīng)用程序的多個(gè)實(shí)例進(jìn)行擴(kuò)展App1App2App1Fine-graineddensityofservicesCoarse-graineddensityofapps/servicesNeedtodeploythefullapplicationIndependentdeploymentofmicroservice微服務(wù)選型與探討eShopOnContainers參考應(yīng)用程序-架構(gòu)OrderingmicroserviceCatalogmicroserviceeShopWebAppMVCASP.NETCoreMVCIdentitymicroservice(STS+users)eShopSPAWebappTypeScript/Angular4eShopmobileappXamarin.FormsC#xPlat.OS:iOSAndroidWindowsDockerHosteShoptraditionalWebappHTMLSQLServerdbClientappsBasketmicroserviceRediscacheMarketingmicroserviceMongoDB/CosmosDBSQLServerDBSQLServerdbSQLServerdbLocationmicroserviceMongoDB/CosmosDBOrdering.APIGracePeriodworkerSvc.微服務(wù)選型與探討微服務(wù)模式架構(gòu)設(shè)計(jì)微服務(wù)選型與探討微服務(wù)關(guān)鍵模式直接訪問vs.APIGateway

服務(wù)健康檢查

彈性云應(yīng)用程序:

指數(shù)退避和

Circuitbreaker進(jìn)行重試

異步.發(fā)布/訂閱

(EventBus)

使用協(xié)調(diào)器進(jìn)行擴(kuò)展微服務(wù)選型與探討HealthChecksAPIHealthChecksWatchDogapp/healthMicroservice2Microservice1/health微服務(wù)選型與探討HealthChecksAPIConsumerAConsumerBRouterAPIGatewayServiceRegistryquery/health/healthMicroservice2Microservice1UsuallyProvidedbytheOrchestrator(i.e.ServiceFabric,Kubernetes,etc.)微服務(wù)選型與探討Microservice2Microservice1ClientWebAppMVCContainerContainerWebAPIWebAPIASP.NETCoreMVCContainerMicroservice3ContainerWebAPIClientSPAWebAppJavaScript/Angular.jsClientMobileAppAPIGatewayASP.NETCoreWebAPIContainerBackendTraditionalWebAppBrowserHTMLHTMLJSONJSONBuildingresilientcloudapplicationsHTTPRequest/ResponseHTTPRequest/ResponseImplementresilientcommunicationImplementresilientcommunicationWithRetriesw/exponentialbackoff&Circuit-Breakers微服務(wù)選型與探討Microservice2Microservice1ClientWebAppMVCWebAPIWebAPIASP.NETCoreMVCContainerMicroservice3WebAPIAPIGatewayASP.NETCoreWebAPIBackendRetrieswithExponentialBackoffHTTPRequest/ResponseHTTPRetry1Retry2Retry3Success!微服務(wù)選型與探討Microservice2Microservice1ClientWebAppMVCWebAPIWebAPIASP.NETCoreMVCContainerMicroservice3WebAPIAPIGatewayASP.NETCoreWebAPIBackendRetrieswithExponentialBackoffHTTPRequest/ResponseHTTPRetry1Retry2Retry3Retry4!OpenCircuit!RespondwithException+CircuitBreaker微服務(wù)選型與探討ComponentsforRetries,Circuit-Breaker,etc.NetflixHystrix微服務(wù)選型與探討MultipleHTTPrequestsBrowserSubmitOrderpageBackend/OrchestratorWebAppMultipleCustomersDependency1Dependency2Dependency3Dependency7Dependency8Dependency4Dependency5局部的失效風(fēng)險(xiǎn)會(huì)被Microservices放大HTTPrequest/responsecommunicationDependency6Anti-patterns微服務(wù)選型與探討如何最小化微服務(wù)所帶來的指數(shù)故障熔斷器

(例如Polly’spolicies等等.)避免在同一個(gè)Http調(diào)用鏈中請(qǐng)求長時(shí)間的請(qǐng)求/響應(yīng)

微服務(wù)選型與探討微服務(wù)之間的Synchronousvs.AsynccommunicationClienti.e.MVCapp,APIGateway,etc.Httpsync.requestHttpsync.requestHttpsync.requestHttpsync.requestHttpsync.responseHttpsync.responseHttpsync.responseHttpsync.responseSameHttpRequest/Responsecycle!BasketOrderingCatalogOtherClienti.e.MVCapp,APIGateway,etc.Httpsync.requestHttpsync.responseBasketOrderingCatalogOtherSynchronous

allreq./resp.cycleAsynchronous

Comm.acrossinternalmicroservices(EventBus:i.e.AMPQ)“Asynchronous”

Comm.acrossinternalmicroservices(Polling:Http)Clienti.e.MVCapp,APIGateway,etc.Httpsync.responseBasketOrderingCatalogOtherHttpPollingHttpPollingHttpPollingHttpsync.requestHttpPollingAnti-pattern微服務(wù)選型與探討AsynchronousEvent-DrivencommunicationwithanEventBusDatabaseOrderingMicroserviceBasketMicroserviceDatabaseasCacheServiceServiceUser-ProfileMicroserviceWebAPIServiceDatabaseBackendUserUpdatedevent(PublishAction)EventBus(Publish/SubscribeChannel)UpdateUsercommandUserUpdatedeventBuyerinfo

UserUpdatedeventBuyerinfo

Eventualconsistencyacrossmicroservices’databasedonevent-drivenasynccommunication1324DBupdateEventBusAbstractions/InterfaceEventBusImplementationsRabbitMQAzureServiceBusOther:NServiceBusMassTransitetc.微服務(wù)選型與探討業(yè)務(wù)部門調(diào)用鏈26RPCAWEBA平臺(tái)體系RPCBWEBBGolang服務(wù)PHP服務(wù)OR服務(wù)……RestFulAPI業(yè)務(wù)部門業(yè)務(wù)部門語言種類繁多微服務(wù)體系建設(shè)不完善/重復(fù)網(wǎng)絡(luò)抖動(dòng),dns不穩(wěn)定4,7層冗長調(diào)用鏈及資源消耗4,7層調(diào)度微服務(wù)選型與探討身份認(rèn)證架構(gòu)的演變開發(fā)過程中常見的交互瀏覽器與Web應(yīng)用程序通信,B/S瀏覽器與webAPI通信B/S基于瀏覽器的應(yīng)用程序與WebAPI通信(有時(shí)是獨(dú)立的,有時(shí)代表用戶)electronnode-webkitH/S桌面程序程序與WebAPI通信C/S后臺(tái)Service與webAPI通信S/SWebAPI與WebAPI通信(有時(shí)是獨(dú)立的,有時(shí)代表用戶)S/S微服務(wù)選型與探討Users用戶使用注冊(cè)的客戶端訪問資源的人。Clients客戶端請(qǐng)求令牌的軟件,用于驗(yàn)證用戶(請(qǐng)求身份令牌)或訪問資源(請(qǐng)求訪問令牌)。如:Web應(yīng)用程序,本地移動(dòng)或桌面應(yīng)用程序,SPA,服務(wù)器進(jìn)程等。Resources資源想要使用IdentityServer保護(hù)的資源-您的用戶的身份數(shù)據(jù)或API。(每個(gè)資源都有一個(gè)唯一的名稱-客戶端使用這個(gè)名稱來指定他們想要訪問的資源。)IdentityData身份令牌用戶的標(biāo)識(shí)符,可以包含其他身份數(shù)據(jù)。AccessToken訪問令牌訪問API資源的令牌。包含有關(guān)客戶端和用戶的信息(如果存在)。API使用該信息來授權(quán)訪問其數(shù)據(jù)。微服務(wù)選型與探討簡(jiǎn)化溝通方式API網(wǎng)關(guān)對(duì)所有微服務(wù)提供單一的訪問點(diǎn)安全性對(duì)客戶端隱藏了服務(wù)發(fā)現(xiàn)和服務(wù)版本阻止大規(guī)模攻擊,包括SQL注入,XML解析漏洞和DoS攻擊驗(yàn)證token,certificates和其他credentials混合通訊協(xié)議API網(wǎng)關(guān)翻譯并支持不同的通訊協(xié)議調(diào)用頻率,跨域,緩存配置需要額外的配置需要管理路由的配置API網(wǎng)關(guān)優(yōu)/缺點(diǎn)微服務(wù)選型與探討API網(wǎng)關(guān)優(yōu)/缺點(diǎn)微服務(wù)選型與探討ServiceFabric簡(jiǎn)介微服務(wù)選型與探討集群–用于創(chuàng)建資源池托管和環(huán)境抽象–運(yùn)行你自己的工作負(fù)載高可用–檢測(cè)和處理故障編排–管理要求的狀態(tài)配置管理后臺(tái)–升級(jí)和健康監(jiān)控編程模型–微服務(wù)應(yīng)用平臺(tái)可靠和低延遲–支持有狀態(tài)的工作負(fù)載集成解決方案–所需工具都已經(jīng)集成久經(jīng)考驗(yàn)–已經(jīng)使用大約10年什么是ServiceFabric?微服務(wù)選型與探討自己創(chuàng)建一個(gè)PaaS,有點(diǎn)崩潰!滾動(dòng)升級(jí)可用性保證可伸縮架構(gòu)高密度資源治理打包和部署策略強(qiáng)制執(zhí)行細(xì)粒度版本有狀態(tài)工作負(fù)載主節(jié)點(diǎn)選擇仲裁MesosKubernetesZookeeperRedisRavenMongoDBYarnFleetHadoopContainers?微服務(wù)選型與探討ServiceFabric為常見問題提供了集成解決方案滾動(dòng)升級(jí)可用性保證可伸縮架構(gòu)高密度資源治理打包和部署策略強(qiáng)制執(zhí)行細(xì)粒度版本有狀態(tài)工作負(fù)載主節(jié)點(diǎn)選擇仲裁ServiceFabric微服務(wù)選型與探討AzureOtherCloudsOnPremiseDatacentersLifecycleManagementOrchestrationAutoscalingAlwaysOn

AvailabilityDev&OpsToolingProgrammingModelsAzureServiceFabric:運(yùn)行在任何地方DevBoxHealth&Monitoring微服務(wù)選型與探討AzureOtherCloudsAzureServiceFabric:運(yùn)行任何程序GuestExecutables(AnyCode)ReliableServices(Java/C#)ReliableActors(Java/C#)

WebAppsContainers(WindowsContainers&Docker)LifecycleManagementAutoscalingAlwaysOn

AvailabilityDev&OpsToolingProgrammingModelsHealth&MonitoringDevBoxOrchestrationOnPremiseDatacenters微服務(wù)選型與探討Tars介紹Tars是一個(gè)支持多語言、內(nèi)嵌服務(wù)治理功能,與Devops能很好協(xié)同的微服務(wù)框架微服務(wù)選型與探討開發(fā)框架的特點(diǎn)02使用RPC調(diào)用的方式,使業(yè)務(wù)能快速開發(fā)03高性能的實(shí)現(xiàn)04豐富的擴(kuò)展能力,適應(yīng)不同的業(yè)務(wù)場(chǎng)景用戶透明的實(shí)現(xiàn),讓業(yè)務(wù)聚焦于邏輯實(shí)現(xiàn)01微服務(wù)選型與探討開發(fā)框架–用戶透明的實(shí)現(xiàn)BCAD通過封裝讓通信、服務(wù)治理相關(guān)功能由框架完成,讓開發(fā)者聚焦業(yè)務(wù)邏輯本身使用以IDL實(shí)現(xiàn)的Tars協(xié)議,屏蔽對(duì)象序列化反序列化細(xì)節(jié),客戶端與服務(wù)端的開發(fā)人員都直接面向接口編程。協(xié)議底層通信封裝,支持tcp/udp,以配置的方式讓用戶靈活選擇,并容易擴(kuò)展支持其他通信協(xié)議如rdma、quick等通信在RPC調(diào)用的基礎(chǔ)上封裝future/promise和協(xié)程,用戶簡(jiǎn)易實(shí)現(xiàn)異步調(diào)用,不用關(guān)心異步實(shí)現(xiàn)細(xì)節(jié),封裝統(tǒng)一的配置和日志等接口,透明實(shí)現(xiàn)云端配置和日志匯聚編程對(duì)常用的服務(wù)發(fā)現(xiàn)、容錯(cuò)&熔斷、負(fù)載均衡、過載保護(hù)、分布式跟蹤等等在框架內(nèi)置服務(wù)治理ABCD微服務(wù)選型與探討開發(fā)框架–基于TARS協(xié)議的RPC框架實(shí)現(xiàn)快速開發(fā)部署變更容器DevOpsstructUserInfo{1requireintage;2requirecharsex;3optionalstringcompany;4optionalvector<string>hobby;};interfaceUser{intgetUserInfo(intuid,outUserInfoinfo);};客戶端Tars文件接口代碼自動(dòng)生成,實(shí)現(xiàn)業(yè)務(wù)快速開發(fā)classUserServant{virtualint32getUserInfo(int32uid,UserInfo&info,taf::TarsCurrentPtrcurrent)=0;};版本兼容性好

高性能

多語言支持便利服務(wù)端classUserProxy{intgetUserInfo(intuid,UserInfo&info,…);

promise::Future<…>promise_async_getUserInfo(intuid,…);};微服務(wù)選型與探討開發(fā)框架設(shè)計(jì)–高性能的實(shí)現(xiàn)C++01NodeJS05模型:NIO、Reactor異步調(diào)用:協(xié)程、future/promiseJAVA02PHP04模型:Swoole異步調(diào)用:協(xié)程模型:NIO、Reactor異步調(diào)用:future/promise無鎖化實(shí)現(xiàn)應(yīng)用層獲取時(shí)間c擴(kuò)展的序列化方式全異步GO03模型:協(xié)程池、chan異步調(diào)用:協(xié)程類slab內(nèi)存分配避免多協(xié)程競(jìng)爭(zhēng)chan優(yōu)化Buffer隊(duì)列減少內(nèi)存拷貝使用快速模式對(duì)象使用扁平化字符串06C#模型:NIO、Reactor異步調(diào)用:await/async微服務(wù)選型與探討開發(fā)框架設(shè)計(jì)–性能數(shù)據(jù)框架TPS(10字節(jié))TPS(128字節(jié))TPS(256字節(jié))TARS(C++)617163390686280637TARS(JAVA)430725384113279531TARS(NODEJS)158888158139157334TARS(GO)596795386024276458TARS(PHP)168745169953168617SpringCloud160114157010156830gRPC(C++)893518613281630測(cè)試機(jī)型:CPU

:4核/8線程3.30GHz內(nèi)存:16G網(wǎng)卡:千兆serverclientclientclient部署情況:性能數(shù)據(jù):微服務(wù)選型與探討開發(fā)框架–擴(kuò)展能力Tars除了具備業(yè)界RPC框架常見的能力之外,還具備適應(yīng)不同業(yè)務(wù)場(chǎng)景的擴(kuò)展能力A協(xié)議的解析以插件化方式實(shí)現(xiàn),支持http1/2、ssl、pb,并支持用戶自定義協(xié)議。BC多協(xié)議支持1.提供RPC_Call+注冊(cè)自定義協(xié)議的方式,解決Tars服務(wù)訪問邊界系統(tǒng)的服務(wù)。2.框架提供TUP(TarsUni-Protocol)協(xié)議,解決邊界系統(tǒng)的服務(wù)訪問Tars服務(wù)的問題。與邊界系統(tǒng)的對(duì)接框架給業(yè)務(wù)開發(fā)開放了網(wǎng)絡(luò)通信底層連接的上下文,并定制化push相關(guān)協(xié)議,可實(shí)現(xiàn)PUSH能力。消息Push支持單向調(diào)用的能力,滿足一些并不關(guān)注調(diào)用返回結(jié)果的場(chǎng)景,比如流量、延時(shí)、超時(shí)等統(tǒng)計(jì)信息的采集。單向調(diào)用D微服務(wù)選型與探討服務(wù)治理–整體思路MetricConflogauthzipkinxxxsvrnodekeepaliveclientregistryxxxsvrnodekeepalivegetRoute(“xxxsvr”);監(jiān)控統(tǒng)計(jì)配置中心日志聚合認(rèn)證鑒權(quán)分布式跟蹤…開發(fā)框架、Registry、node和基礎(chǔ)服務(wù)集群協(xié)同工作,透明完成服務(wù)發(fā)現(xiàn)/注冊(cè)、負(fù)載均衡、鑒權(quán)、分布式跟蹤等服務(wù)治理相關(guān)工作輪詢、hash、權(quán)重熔斷策略:連續(xù)超時(shí)或失敗次數(shù)超過閾值一段時(shí)間內(nèi)超時(shí)比率閾值微服務(wù)選型與探討服務(wù)治理–自動(dòng)區(qū)域感知Clientlogsvrlogsvrlogsvr:80:80:80registrygetAddr(“l(fā)ogsvr”)返回

IP:Port列表:80和:80node深圳寶安深圳坪山szbaoan127.27.*.*szpingshan10.147.*.*常規(guī)的負(fù)載均衡方式面對(duì)跨地區(qū)或者跨機(jī)房部署的服務(wù)會(huì)因?yàn)榫W(wǎng)絡(luò)原因造成延時(shí)增大使用不同服務(wù)名來解決該問題時(shí)會(huì)帶來繁重的運(yùn)維工作通過Registry和開發(fā)框架配合實(shí)現(xiàn)自動(dòng)區(qū)域感知自動(dòng)區(qū)域感知優(yōu)勢(shì)運(yùn)維簡(jiǎn)單降低延時(shí)減少帶寬消耗更強(qiáng)的容災(zāi)能力微服務(wù)選型與探討服務(wù)治理–Set模型容量分區(qū)300W在線AB框架支持下的Set分組ABABAB按服務(wù)名分SetA1B1A2B2A3B3ABB:80:80registrygetAddr(“B”)返回

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論