欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

大神告訴你如何理解微服務框架

因為Martin Fowler和Chris Richardson兩位大神的布道,及NetFlix和Amazon公司的實踐,國內(nèi)對于微服務的一些基礎問題理解基本一致,但受限于自身單體應用的限制,過度到微服務架構,又要各想辦法,具體問題具體看了。本篇描述一下微服務架構的基本概念及個人的一些理解。“微服務架構是一種架構模式,它提倡將單一應用程序劃分成一組小的服務,服務之間相互協(xié)調(diào)、互相配合,為用戶提供最終價值。每個服務運行在其獨立的進程中,服務和服務之間采用輕量級的通信機制相互溝通(通常是基于HTTP的Restful API).每個服務都圍繞著具體的業(yè)務進行構建,并且能夠被獨立的部署到生產(chǎn)環(huán)境、類生產(chǎn)環(huán)境等。另外,應盡量避免統(tǒng)一的、集中的服務管理機制,對具體的一個服務而言,應根據(jù)業(yè)務上下文,選擇合適的語言、工具對其進行構"---- Martin Fowler的博客

專業(yè)成都網(wǎng)站建設公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來客戶和效益!創(chuàng)新互聯(lián)為您提供成都網(wǎng)站建設,五站合一網(wǎng)站設計制作,服務好的網(wǎng)站設計公司,網(wǎng)站設計、做網(wǎng)站負責任的成都網(wǎng)站制作公司!

  微服務的特征與界定

大神告訴你如何理解微服務框架

單體應用vs 微服務架構

 優(yōu)點

1:提升開發(fā)交流,每個服務足夠內(nèi)聚,足夠小,代碼容易理解;

2:服務獨立測試、部署、升級、發(fā)布;

3:按需定制的DFX,資源利用率,每個服務可以各自進行x擴展和z擴展,而且,每個服務可以根據(jù)自己的需要部署到合適的硬件服務器上;每個服務按4:需要選擇HA的模式,選擇接受服務的實例個數(shù);

5:容易擴大開發(fā)團隊,可以針對每個服務(service)組件開發(fā)團隊;

6:提高容錯性(fault isolation),一個服務的內(nèi)存泄露并不會讓整個系統(tǒng)癱瘓;

7:新技術的應用,系統(tǒng)不會被長期限制在某個技術棧上;

缺點

沒有銀彈,微服務提高了系統(tǒng)的復雜度;開發(fā)人員要處理分布式系統(tǒng)的復雜性;服務之間的分布式通信問題;服務的注冊與發(fā)現(xiàn)問題;服務之間的分布式事務問題;數(shù)據(jù)隔離再來的報表處理問題;服務之間的分布式一致性問題;服務管理的復雜性,服務的編排;不同服務實例的管理。

大神告訴你如何理解微服務框架

Chris Richardson提出的微服務的三維擴展模型:

X軸,服務實例水平擴展,保證可靠性與性能;

Y軸,功能的擴展,服務單一職責,功能獨立;

Z軸,數(shù)據(jù)分區(qū),數(shù)據(jù)獨立,可靠性保證;

大神告訴你如何理解微服務框架

  通信問題

微服務的拆分一般會帶來IPC通信的問題。通信機制需要完備可靠,服務之間的通信選擇應盡量單一,從兩個維度對通信的模式進行劃分:

第一個維度是一對一還是一對多:

一對一:每個客戶端請求有一個服務實例來響應。

一對多:每個客戶端請求有多個服務實例來響應。

第二個維度是這些交互式同步還是異步:

同步模式:客戶端請求需要服務端即時響應,甚至可能由于等待而阻塞。

異步模式:客戶端請求不會阻塞進程,服務端的響應可以是非即時的。

大神告訴你如何理解微服務框架

微服務架構認為,服務間通信應該就只有這幾種模式。AC出于時延、編程模型等方面的考慮,提供了一套通信機制,業(yè)務之間的通信要按需選用。

  服務的發(fā)現(xiàn)與注冊

一般的微服務架構里都有兩層API GetWay,一層是外部API GetWay,用于用戶訪問系統(tǒng);一層是內(nèi)部API GetWay,內(nèi)部服務之間的API GetWay。內(nèi)部API GetWay要解決的問題就是服務發(fā)現(xiàn)和服務注冊。從這也能看出來,為什么通信的方式要盡量單一,API GetWay有一項工作就是協(xié)議轉換。

微服務可能是HA主備的,也可能是LB的,怎么找到一個服務?有兩種思路,客戶端發(fā)現(xiàn)(上圖),客戶端去注冊中心查詢服務實例列表,自行選擇;另一種是服務端發(fā)現(xiàn)(下圖),添加LB模塊,客戶端把請求發(fā)向LB,由LB根據(jù)負載均衡策略選擇服務實例;

大神告訴你如何理解微服務框架

大神告訴你如何理解微服務框架

微服務注冊表的典型實現(xiàn):

 ETCD : 是一個高可用,分布式的,一致性的,鍵值表,用于共享配置和服務發(fā)現(xiàn)。兩個著名案例包括Kubernetes和Cloud Foundry。 ZK: 是一個廣泛使用,為分布式應用提供高性能整合的服務。Apache ZooKeeper最初是Hadoop的子項目,現(xiàn)在已經(jīng)變成頂級項目。

微服務架構的部署

微服務架構對于部署的要求

部署速率,Amazon與NetFlix都有千個服務,每個服務都有持續(xù)部署的要求,Amazon的服務每秒都會部署一次;

部署自動化,一切都要自動化,IaaS與PaaS解決I層與P層自動化部署,微服務有自動部署與運維工具,并實現(xiàn)Auto-Scaling;

部署提供基礎機制,為實現(xiàn)分布式部署要求,部署機制一般都有資源池化、服務的生命周期來看,部署服務與服務注冊是一體的;

部署的粒度:

VM: 部署系統(tǒng)管理的VM的生命周期,如當前AC的iDeploy部署,把AC部署拆分為每個VM的安裝、配置與啟動;這種方式粒度粗,支撐不了微服務的部署(除非一個服務占用一個VM); 

App: 管理應用的生命周期及部署形態(tài),生命周期分為部署、配置、啟動、升級等,部署形態(tài)有主備、LB、Daemon等;

Container: 相比于APP,容器有更好的隔離性和移植性;

微服務:一般的微服務要么是APP,要么是Container,但AC就不是。受限于ONOS架構,我們的服務是一組feature;

MS部署的解決方案:

TOSCA: 云應用拓撲標準,一種描述云化部署的DSL,我司主推一個標準,PaaS的部署系統(tǒng)和MANO用的都是TOSCA;

Kubernetes:Google開源的容器管理系統(tǒng),提出了Pod/Service/Labels等概念,以ETCD為中心,PaaS基于K8S開發(fā)出了我司的云化部署平臺;

Mesosphere:DCOS,數(shù)據(jù)中心操作系統(tǒng),基于mesos實現(xiàn)資源池化,有自身的編排工具;分布式LAB基于DCOS的思想做出了一套部署與集群管理系統(tǒng)(HASEN);

微服務的劃分

微服務的劃分主要是保證微服務功能內(nèi)聚,職責單一。一般使用DDD(Domain Drive Design)的思想與方法對微服務進行劃分,這種方法有點類似于數(shù)據(jù)庫ER圖的劃分,不斷分解數(shù)據(jù),保證關系型數(shù)據(jù)庫符合原子性、冗余性的范式要求。當然,微服務的劃分比數(shù)據(jù)表劃分更復雜,也沒有微服務范式的概念,但思想是一致的。更多的內(nèi)容,請參考《領域驅動設計》這本書。

分布式一致性

有兩個大的思路:全局的分布式事務;事件驅動;

分布式事務就是現(xiàn)在AC的思路,在設計開發(fā)中;

事件驅動,忽略了事務的概念,由每個服務在應用層面保存服務的狀態(tài),服務之間的通信使用事件機制通知;此種方法可以保證微服務間的獨立性,但把問題交給了服務的設計者;具體事件驅動的案例見參考材料;

數(shù)據(jù)隔離問題

微服務之間數(shù)據(jù)隔離可以保證服務的獨立升級與部署,數(shù)據(jù)隔離有三個維度:

數(shù)據(jù)表級隔離;數(shù)據(jù)表之間獨立,沒有外鍵關系;

數(shù)據(jù)庫級隔離;不同服務有不同的數(shù)據(jù)庫;

DBMS級隔離;不同服務有不同的數(shù)據(jù)庫管理系統(tǒng);

一般做到數(shù)據(jù)庫級隔離就可以了,服務之間的數(shù)據(jù)交換使用服務間接口。

從單體到微服務

微服務架構是一個衍生架構,都是從單體架構演化而來的。

因為微服務架構本身的復雜性,初創(chuàng)系統(tǒng)出于快速開發(fā)、快速驗證的考慮,很少在一開始就使用微服務架構。加之微服務的概念在這兩年才火,大型單體應用也是看到了開發(fā)與維護的成本在不斷增加,才會有轉型微服務的動力。因此,如何從單體到微服務是一個普遍問題。

從單體到微服務的原則:

逐步演進,不要全部重構

全部重構,帶來極大的成本和風險,系統(tǒng)會有很長的不穩(wěn)定期。而且,最終的效果也不會很好,在設計時很難想到所有問題。微服務架構的演化思路應該是一步步鋪基礎設施,一點點拆分微服務。

演化建議(個人建議)

1. 不要增加新的耦合;

不要有編譯依賴,如直接import其它模塊的類;

使用版本建議的通信方式,不要使用osgiservice,這個耦合還是很強;不要直接訪問其它模塊的數(shù)據(jù)表;

避免不必要的親合性,注意特性之間的狀態(tài),如A特性訪問B特性的2個請求有狀態(tài),那這兩個特性實例就有親合性;

2. 前后端分離;

  前后端業(yè)務分離,前端之間不會耦合,能前端做的,就放在前端;

3. 獨立的服務逐漸拆出;

  逐步拆出功能獨立的微服務,對有特殊DFX要求的微服務也可以優(yōu)先拆出;

DevOps與微服務架構

DevOps 是09年提出來的概念,但一直沒有太火。直到14年,容器與微服務架構的提出,DevOps才得到了快速的發(fā)展。DevOps不單是一個實現(xiàn)自動化的工具鏈,而是組織、流程與技術的結合。組織上強調(diào)全棧團隊、團隊特性專一、團隊自治;技術上打通開發(fā)與運維;流程上強調(diào)端到端、可視化、灰度升級、A/B測試等。

對于DevOps,MS不是必須的,但MS為DevOps提供了最好的架構支撐,對于組織和流程的要求也是一致的。所以,也有人稱MS是DevOps架構。

目前國內(nèi)多家巨頭都對微服務的支持投入巨大,例如騰訊云micro-service、 華為云微服務云應用平臺ServiceStage 等等。

本文名稱:大神告訴你如何理解微服務框架
轉載注明:http://www.chinadenli.net/article38/gocipp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供面包屑導航網(wǎng)站維護網(wǎng)頁設計公司網(wǎng)站導航網(wǎng)站設計做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設公司