中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

eShopOnContainers 知(zhi)多少(shao)[1]:總體(ti)概(gai)覽

引言

在微服(fu)務(wu)大行其道的(de)今(jin)天,Java陣營(ying)的(de)Spring Boot、Spring Cloud、Dubbo微服(fu)務(wu)框架可謂是風水(shui)(shui)水(shui)(shui)起,也不(bu)得不(bu)感慨Java的(de)生態圈的(de)火爆。反觀國(guo)內.NET陣營(ying),微服(fu)務(wu)卻不(bu)慍不(bu)火。

微(wei)(wei)軟在其官網的(de)架構(gou)體系(xi)上推(tui)出了微(wei)(wei)服(fu)(fu)務(wu)(wu)參考應用,用來推(tui)廣基(ji)于.NET Core的(de)微(wei)(wei)服(fu)(fu)務(wu)(wu)架構(gou)。我(wo)也將基(ji)于此來學(xue)習(xi)研究(jiu)微(wei)(wei)服(fu)(fu)務(wu)(wu),并分享自己的(de)所學(xue)所得,形(xing)成一個(ge)系(xi)列,為.NET社區微(wei)(wei)服(fu)(fu)務(wu)(wu)的(de)推(tui)廣略盡(jin)綿薄之力。

eShopOnContainers 簡介

Easy to get started sample reference microservice and container based application. Cross-platform on Linux and Windows Docker Containers, powered by .NET Core 2.1, Docker engine and optionally Azure, Kubernetes or Service Fabric. Supports Visual Studio 2017, VS for Mac and CLI based environments with Docker CLI, dotnet CLI, VS Code or any other...

簡單來說:是一個簡化版的基于.NET Core和Docker等技術開發的面向微服務架構的參考應用

該參考應用是一個簡化版的在線商城/電子商務應用

雖然(ran)是(shi)簡(jian)化版的(de)微(wei)服務(wu)參考示(shi)例(li),但(dan)對沒接觸過Docker、DDD、微(wei)服務(wu)的(de)同(tong)學(xue)來說,并不(bu)簡(jian)單。其中不(bu)僅包含了(le)很多術(shu)語、設計模式、架構(gou)風格(ge),還使用(yong)了(le)一系列(lie)的(de)常見(jian)技術(shu)(RabbitMQ、EventBus、IdentityServer4、Polly、Api Gateway、Redis、CQRS、CAP、CI/CD等(deng)),還有一些相關工具(Docker、K8S等(deng))。所以這(zhe)將是(shi)一個難啃的(de)骨頭(tou)。

總體介紹

eShopOnContainers作(zuo)(zuo)為跨(kua)平(ping)臺(tai)的(de)(de)(de)微(wei)服(fu)務架構,得益于.NET Core能夠在Linux或(huo)Windows容器(qi)上運(yun)行。其包(bao)含基于瀏覽器(qi)的(de)(de)(de)Web應用(yong)(yong)、基于Xamarin的(de)(de)(de)Android、IOS、Windows/UWP 移動應用(yong)(yong),以及服(fu)務端(duan)應用(yong)(yong)。其中服(fu)務端(duan)包(bao)含多個自治微(wei)服(fu)務(每個都擁有自己的(de)(de)(de)數(shu)據(ju)/ db),并(bing)且每個微(wei)服(fu)務都有不同(tong)的(de)(de)(de)實現形式(簡單的(de)(de)(de)CRUD與(yu)DDD / CQRS模式)。使(shi)用(yong)(yong)Http作(zuo)(zuo)為客戶端(duan)應用(yong)(yong)程序之間的(de)(de)(de)通(tong)信(xin)協議(yi)。支持異步通(tong)信(xin),使(shi)用(yong)(yong)Integration Events(集成(cheng)事(shi)件)和Event Bus(事(shi)件總線(xian))進行數(shu)據(ju)更新傳播(bo)。

開發環境架構

針對開發環境的eShopOnContainers 示例應用程序架構

一圖(tu)勝千言(yan),從上(shang)圖(tu)可知(zhi),該架構主要包括兩個部分:客戶(hu)端應用和Docker主機中(zhong)運行的服(fu)務端應用。

  1. 客戶端應用:基于瀏覽器的Web應用;基于Xamarin開發的Android、IOS、UWP移動應用。
  2. 服務端應用:部署在在Doker主機的系列微服務。

其(qi)中服務端主要包括(kuo)六大微服務:

  1. Identity Micsroservice(身份微服務):用于身份認證和授權。使用SQL Server數據庫。
  2. Catalog microservice(產品目錄微服務):用于產品資料的維護。使用SQL Server數據庫。
  3. Ordering microservice(訂單微服務):用于訂單邏輯的處理。使用SQL Server數據庫。
  4. Basket microservice(購物車微服務):用于購物車邏輯的處理。使用Redis數據庫。
  5. Marketing microservice(市場營銷微服務):用于市場營銷邏輯的處理。使用MongoDB/CosmosDB 和SQL Server數據庫。
  6. Locations microservice (位置微服務):用于提供位置服務。使用MongoDB/CosmosDB 數據庫。
  7. [New] Payment microservice (支付微服務):用于處理支付邏輯。

另外從上圖我們還可以清晰看出其通信架構

  1. 客戶端與微服務通過API網關通信:用于查詢和接收來自客戶端應用程序的更新或事務命令。
  2. 異步事件通信:通過事件總線傳播來自微服務的更新或與外部應用程序集成。事件總線可使用任何消息代理架構技術(如 RabbitMQ)來實現,也可使用諸如 Azure 服務總線、NServiceBus、MassTransit 或 Brighter 等更高級的服務總線。

微服務架構模式

微服務的不同實現形式

上圖(tu)列舉的四個微服(fu)務主(zhu)要使用了兩(liang)種(zhong)架構(gou)模式(shi):

  1. 基于數據驅動的CURD微服務
  2. 基于DDD的微服務

而實際上,軟件架(jia)構師和開發人員(yuan)會使用不同的架(jia)構模式(shi),比如(混(hun)合架(jia)構風格和架(jia)構模式(shi)):

  1. 簡單的 CRUD,單層
  2. 傳統N層
  3. DDD N層
  4. 整潔架構
  5. 命令和查詢分離(CQRS)
  6. 事件驅動架構

多種架構模式和多語言的微服務世界

在由多個(ge)(ge)微服(fu)務組成的應(ying)用程序中,可(ke)以用不同方(fang)式實(shi)現每(mei)個(ge)(ge)微服(fu)務。每(mei)個(ge)(ge)微服(fu)務可(ke)能具有不同架構模(mo)式,并根據應(ying)用程序的性(xing)質、業務需求和(he)優先級(ji)使用不同的語言和(he)數據庫。

這也就是(shi)微服務的靈活(huo)性與復雜(za)性的源頭。

代碼結構

image.png

系列計劃

對于微服務我也只是初步了解,該項目也將是我學習微服務的起點。所以我將以小白的視角(難免有所紕漏,請大家積極交流指正),盡量以通俗易懂的語言來梳理每一個知識點,并形成eShopOnContainers知多少系列,與大家共同學習進步。該系列會首發在我的個人訂閱號『微服務知多少』上,請掃描下文二維碼,關注更新!

參考資料


posted @ 2018-10-15 08:55  「圣杰」  閱讀(20580)  評論(10)    收藏  舉報