天天看點

程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

一、微服務的現狀及未來

1.服務架構的演變

1.1 單體架構

  單體架構應該是我們最先接觸到的架構實作了,在單體架構中使用經典的三層模型,即表現層,業務邏輯層和資料通路層。

程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

  單體架構隻适合在應用初期,且通路量比較下的情況下使用,優點是成本效益很高,開發速度快,成本低,但缺點也很明顯,這時擴充的首先就是考慮伺服器的叢集處理。

1.2 叢集

  針對單個伺服器在通路量越來越大的情況越來越吃力的情況,我們可以考慮伺服器的叢集話處理。

程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

  叢集的部署大大提高了服務的處理能力,同時利用Nginx提供的負載均衡機制,來分發請求,使使用者的體驗沒有改變。

1.3 垂直化

  上面的叢集部署是可以解決一部分的伺服器壓力,但是随着使用者通路量的增多,叢集節點增加到一定階段的時候,其實作用就已經不是太大了,因為将所有的業務都集中在一起,造成耦合度很高,這時我們可以考慮業務的拆分。來提高系統的性能。比如将原來在一個系統裡面的業務拆分為使用者系統,訂單系統和商品系統。也就是我們講的垂直化拆分如下:

程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

  服務垂直化拆分後是可以大大的提高整體的服務處理能力,但是也會出現很多的備援的代碼,比如使用者系統要操作訂單庫,要操作商品庫,訂單系統也有可能要操作使用者庫和商品庫等。

程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

1.4 服務化

  針對垂直化拆分出現的問題,這時就出現了我們經常聽到的SOA(面向服務的架構).什麼是SOA呢?在《微服務設計》中有這麼一段描述

SOA是一種設計方法,其中包括多個服務,而服務之間通過配合最終會提供一系列功能,一個服務通常以獨立的形式存在于作業系統程序中,服務之間通過網絡調用,而非采用程序内調用的方式進行通信。
程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

業務重用,共享服務,

1.5 微服務化

  在SOA的基礎上繼續演進就是我們講的微服務。SOA的服務更細粒度的拆分後就是微服務。根據時間遞進。

程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

  對基礎運維的要求能力會越來越高,虛拟化,容器話等。

微服務和SOA的差別:

1.思想上:微服務的目的是解耦而SOA的目的是實作資料的互通和共享性。

2.協定:微服務會使用一些輕量級的通信協定(Restful API)

3.基礎設施要求,微服務更加強調開發運維的持續傳遞。

2. 微服務架構的需求

2.1 RPC架構

  在微服務架構中,服務與服務之間要實作接口的調用我們肯定要通過相關的RPC(Remote Procedure Call)架構來實作。

程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

  常用的RPC架構有:Dubbo,Google的GRPC,Apache的Thrift,微網誌的Motan,京東的EasyRPC等。我們通過RPC架構可以取調用服務提供者提供的服務,但有一個前提是我們要能找到這個服務。通常我們的服務部署都是叢集多節點的部署,是以在消費者這端就不可能直接寫死在代碼裡面,這時就涉及到了服務的發現問題,這時就需要另一個元件注冊中心了

2.2 注冊中心

  注冊中心實作服務位址管理的功能,解決服務動态感覺(上線,下線)。

程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

2.3 負載均衡

  在服務注冊中心的介紹中我們可以看到負載均衡的應用。我們可以通過Ribbon來實作用戶端的負載均衡,負載均衡的政策可以是:輪詢,随機,根據響應時間來計算權重的輪詢等。

程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

2.4 配置中心

  在微服務架構中我們有很多個服務,而每個服務中是都會有單獨的配置檔案的。裡面有很多的配置資訊的有關聯的,而且對于後期的更新維護也會非常的不友善,這時配置中心就上場了。常用的配置中心有:apollo/Nacos/disconf/zookeeper/diamond/Spring Cloud Config

程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

2.5 網關

  網關可以幫助我們完成使用者請求的入口,路由。完成統一授權,日志的記錄,權限的認證和限流及熔斷操作。

程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

2.6 限流、降級、緩存

  在現實的微服務架構中的性能是很難滿足所有的使用者請求,這時我們就可以通過一些措施來保證我們的核心服務的正常運轉。

限流:sentinel、hystrix

降級:主動降級(訂單評論、廣告關閉)、被動降級

緩存:降低資料源通路頻率、Redis等

容錯機制:服務出現挂機,當機之後的處理機制。

程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

2.7 Bus

  Bus消息總線,實作異步化的通信機制。

程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

2.8 鍊路監控

  因為微服務中的服務實在是太多了,為了能更好的監控個服務的情況,肯定就需要鍊路監控服務,我們可以通過sleuth+zipkin來實作,應用層監控,系統級監控

程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

3.SpringCloud 生态

  SpringCloud生态提供了快速建構微服務的技術元件。

https://spring.io/projects/spring-cloud-netflix
程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

3.1 版本号說明

  • SR (發行版)
  • RC (後續發行版本)
  • M1/M2(PRE) 裡程碑
  • GA 穩定版
  • BUILD-XXX 開發版

3.2 SpringCloud和SpringBoot的關聯關系

大版本對應:

Spring Cloud Spring Boot
Angel版本 相容Spring Boot 1.2.x
Brixton版本 相容Spring Boot 1.3.x,也相容Spring Boot 1.4.x
Camden版本 相容Spring Boot 1.4.x,也相容Spring Boot 1.5.x
Dalston版本、Edgware版本 相容Spring Boot 1.5.x,不相容Spring Boot 2.0.x
Finchley版本 相容Spring Boot 2.0.x,不相容Spring Boot 1.5.x
Greenwich版本 相容Spring Boot 2.1.x
Hoxtonl版本 相容Spring Boot 2.2.x

在實際開發過程中,我們需要更詳細的版本對應:

1.5.2.RELEASE Dalston.RC1
1.5.9.RELEASE Edgware.RELEASE
2.0.2.RELEASE Finchley.BUILD-SNAPSHOT
2.0.3.RELEASE Finchley.RELEASE
2.1.0.RELEASE-2.1.14.RELEASE Greenwich.SR5
2.2.0.M4 Hoxton.SR4

SpringCloud版本是和SpringBoot有關聯關系的,官網中可以檢視:

https://docs.spring.io/spring-cloud/docs/current/reference/html/
程式員不得不了解的微服務的現狀和未來,建議收藏哦!!!一、微服務的現狀及未來

  到這兒,我們也清楚了要學習好SpringCloud中相關元件的内容,SpringBoot是我們必須要掌握好的一個前置内容.下篇文章開始給大家詳細介紹SpringBoot相關的内容,歡迎點贊收藏加關注哦!!!