1.服務架構的演
1.1 單體架構
單體架構應該是我們最先接觸到的架構實現(xiàn)了,在單體架構中使用經(jīng)典的三層模型,即表現(xiàn)層,業(yè)務邏輯層和數(shù)據(jù)訪問層。
單體架構只適合在應用初期,且訪問量比較下的情況下使用,優(yōu)點是性價比很高,開發(fā)速度快,成本低,但缺點也很明顯,這時擴展的首先就是考慮服務器的集群處理。
1.2 集群
針對單個服務器在訪問量越來越大的情況越來越吃力的情況,我們可以考慮服務器的集群話處理。
集群的部署大大提高了服務的處理能力,同時利用Nginx提供的負載均衡機制,來分發(fā)請求,使用戶的體驗沒有改變。
1.3 垂直化
上面的集群部署是可以解決一部分的服務器壓力,但是隨著用戶訪問量的增多,集群節(jié)點增加到一定階段的時候,其實作用就已經(jīng)不是太大了,因為將所有的業(yè)務都集中在一起,造成耦合度很高,這時我們可以考慮業(yè)務的拆分。來提高系統(tǒng)的性能。比如將原來在一個系統(tǒng)里面的業(yè)務拆分為用戶系統(tǒng),訂單系統(tǒng)和商品系統(tǒng)。也就是我們講的垂直化拆分如下:
服務垂直化拆分后是可以大大的提高整體的服務處理能力,但是也會出現(xiàn)很多的冗余的代碼,比如用戶系統(tǒng)要操作訂單庫,要操作商品庫,訂單系統(tǒng)也有可能要操作用戶庫和商品庫等。
1.4 服務化
針對垂直化拆分出現(xiàn)的問題,這時就出現(xiàn)了我們經(jīng)常聽到的SOA(面向服務的架構).什么是SOA呢?在《微服務設計》中有這么一段描述
SOA是一種設計方法,其中包括多個服務,而服務之間通過配合最終會提供一系列功能,一個服務通常以獨立的形式存在于操作系統(tǒng)進程中,服務之間通過網(wǎng)絡調用,而非采用進程內調用的方式進行通信。
業(yè)務重用,共享服務,
1.5 微服務化
在SOA的基礎上繼續(xù)演進就是我們講的微服務。SOA的服務更細粒度的拆分后就是微服務。根據(jù)時間遞進。
對基礎運維的要求能力會越來越高,虛擬化,容器話等。
微服務和SOA的區(qū)別:
1.思想上:微服務的目的是解耦而SOA的目的是實現(xiàn)數(shù)據(jù)的互通和共享性。
2.協(xié)議:微服務會使用一些輕量級的通信協(xié)議(Restful API)
3.基礎設施要求,微服務更加強調開發(fā)運維的持續(xù)交付。
2. 微服務架構的需求
2.1 RPC框架
在微服務架構中,服務與服務之間要實現(xiàn)接口的調用我們肯定要通過相關的RPC(Remote Procedure Call)框架來實現(xiàn)。
常用的RPC框架有:Dubbo,Google的GRPC,Apache的Thrift,微博的Motan,京東的EasyRPC等。我們通過RPC框架可以取調用服務提供者提供的服務,但有一個前提是我們要能找到這個服務。通常我們的服務部署都是集群多節(jié)點的部署,所以在消費者這端就不可能直接寫死在代碼里面,這時就涉及到了服務的發(fā)現(xiàn)問題,這時就需要另一個組件注冊中心了
2.2 注冊中心
注冊中心實現(xiàn)服務地址管理的功能,解決服務動態(tài)感知(上線,下線)。
2.3 負載均衡
在服務注冊中心的介紹中我們可以看到負載均衡的應用。我們可以通過Ribbon來實現(xiàn)客戶端的負載均衡,負載均衡的策略可以是:輪詢,隨機,根據(jù)響應時間來計算權重的輪詢等。
2.4 配置中心
在微服務架構中我們有很多個服務,而每個服務中是都會有單獨的配置文件的。里面有很多的配置信息的有關聯(lián)的,而且對于后期的更新維護也會非常的不方便,這時配置中心就上場了。常用的配置中心有:apollo/Nacos/disconf/zookeeper/diamond/Spring Cloud Config
2.5 網(wǎng)關
網(wǎng)關可以幫助我們完成用戶請求的入口,路由。完成統(tǒng)一授權,日志的記錄,權限的認證和限流及熔斷操作。
2.6 限流、降級、緩存
在現(xiàn)實的微服務架構中的性能是很難滿足所有的用戶請求,這時我們就可以通過一些措施來保證我們的核心服務的正常運轉。
限流:sentinel、hystrix
降級:主動降級(訂單評論、廣告關閉)、被動降級
緩存:降低數(shù)據(jù)源訪問頻率、Redis等
容錯機制:服務出現(xiàn)掛機,宕機之后的處理機制。
2.7 Bus
Bus消息總線,實現(xiàn)異步化的通信機制。
2.8 鏈路監(jiān)控
因為微服務中的服務實在是太多了,為了能更好的監(jiān)控個服務的情況,肯定就需要鏈路監(jiān)控服務,我們可以通過sleuth+zipkin來實現(xiàn),應用層監(jiān)控,系統(tǒng)級監(jiān)控文章來源:http://www.zghlxwxcb.cn/news/detail-668235.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-668235.html
到了這里,關于【業(yè)務功能篇73】web系統(tǒng)架構演變-單體-集群-垂直化-服務化-微服務化的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!