您好,登錄后才能下訂單哦!
一、微服務基本概念
近幾年比較火的架構設計大概就是微服務架構了吧,在學習spring cloud之前,首先了解一下什么是微服務架構。簡單地說,微服務架構就是系統架構設計的一種風格,他的主旨是將原本獨立的系統拆分成多個小型服務,這些小服務都是在各自獨立的進程中運行,服務之間通過HTTP或者RESTful API進行通信協作,被拆分的小服務都圍繞系統的某一項或者一些耦合度較高的業務進行構建,并且每個服務都有自身的數據存儲以及業務開發,自動化測試案例以及獨立部署機制。
微服務與單體系統的區別主要就是在單體系統中,由于項目需求的不斷擴充,會導致我們原本的系統原來越臃腫,如果出現一些小問題要不得不對整個系統進行服務更新,并且在修改問題有可能引發其他模塊出現問題。這不是我們希望看到的。而微服務架構是將哥哥功能模塊分別部署,化整為零,當我們某個模塊需要更新只需要更新對應的服務即可,不需要對整個系統進行部署更新,使系統的穩定性大大的提高。將服務進行組件化這是微服務架構最大的優點。
雖然微服務有很多優點,但相應的要面臨原本系統架構中不存在的問題,如
1、接口一致性:雖然我們拆分了服務,但是邏輯上的依賴并不會刪除,只是從單體的代碼依賴,變為服務間的通信以來,在各個服務的通信我們應該保持通信協議的一致性,否則當我們對原本接口進行修改,相應的服務調用方也要進行修改。
2、分布式的復雜性:由于拆分后的服務都是獨立部署各自運行的,所以所有分布式的問題都要考慮到,例如網絡超時,分布式事物以及消息。
3、運維的挑戰:在微服務中,因為將整個服務拆分成許多個服務單獨部署,導致運維工作量會成倍的增加,將這些程序井然有序的進行組織拍編對運維來說新增了很多挑戰。
雖然微服務有這些問題,但實現敏捷開發以及自動化部署等優點依然被廣大優秀架構師和開發者們青睞,同事這些問題也是架構師們努力實現的目標。
在我們實施微服務架構時,都系統讓每一個服務來實現管理其自己的數據庫,實現數據管理的去中心化。雖然去中心化可以讓數據管理更加細致,通過采用合適的技術可讓數據存儲和性能達到最優。但是,微服務中最大的問題還是數據的一致性。分布式本身實現難度非常大,所以在為服務架構中,我們更強調的是服務之間進行無實物的為調用,對于數據一致性,沒我們只要求數據在最后處理的時候的狀態是一致的即可,如果處理過程中發現錯誤,通過補償機制或者容錯線程來處理,即在微服務中我們要保證數據的最終一致性。
二、框架選型
通過上面的一些介紹相信大家對微服務框架有了相應的理解,接下來就對如何構架微服務進行框架選型。在之前,公司一直使用的是spring + netty進行對微服務進行構建,服務之間用過api方式進行調用。保證數據一致性通過容錯線程來處理,zk來進行配置管理,整體來說架構還是比較穩定。但是有沒有一個成型的微服務框架呢?(畢竟對自己的一套東西,信心還是不足的,哈哈。)然后問了一下度娘
,發現了 spring cloud這個神器(好吧,其實就是把雜七雜八的都砸進去了)。
三、spring cloud簡介
spring cloud 是基于spring boot實現的微服務架構開發工具。他集成了微服務架構中所使用的配置管理,服務治理,斷路器,只能路由,微代理,控制總線,全局鎖,決策競選,分布式回話和集群狀態
管理等操作提供了一種簡單的開發方式。
他所集成常用的工具如下
Spring Cloud Config | 配置管理工具 | |
Spring Cloud NetFlix | 核心組件,對開源組件進行的整合 | |
Eureka | 服務治理組件,服務注冊,服務發現等 | |
Hystrix | 容錯管理組件,實現斷路器 | |
Ribbon | 負載均衡 | |
Feign | 聲明式服務調用組件 | |
Zuul | 網管組件 | |
Archaius | 外部配置化組件 | |
Spring Cloud Bus | 事件消息總線,用于傳播集群中的狀態變化,如刷新配置 | |
Spring Cloud Cluster | 選舉算法和通用狀態模式實現 | |
Spring Cloud Consul | 服務發現與配置管理工具 | |
Spring Cloud Stream | 緩存和mq的消費為服務 | |
Spring Cloud AWS | 簡化整合AWS組件 | |
Spring Cloud Security | 安全工具包 | |
Spring Cloud Zookeeper | zookeeper組件 |
從此可見,它集成了我們微服務框架中常用的工具,而且使用spring boot可以更快的對微服務進行構建,接下來的時間,將對spring cloud的各個組件進行學習與深究。增強對微服務框架的設計與理解。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。