SpringCloud(一)——微服務與微服務架構
阿新 • • 發佈:2021-07-06
微服務概述
微服務化的核心就是將傳統的一站式應用,根據業務拆分成一個一個的服務,徹底地去耦合,每一個微服務提供單個業務功能的服務,一個服務做一件事情,從技術角度看就是一種小而獨立的處理過程,類似程序的概念,能夠自行單獨啟動或銷燬,擁有自己獨立的資料庫。
微服務與微服務架構
微服務
強調的是服務的大小,他關注的是某一個點,是具體解決某一個問題/提供落地對應服務的一個服務應
用,狹義的看,可以看做是IDEA中的一個個微服務工程,或者Moudel
微服務架構
微服務架構是一種架構模式,它提倡將單一應用程式劃分成一組小的服務,服務之間互相協調,互相配合,為使用者提供最終價值。每個服務執行在其獨立的程序中,服務於服務間採用輕量級的通訊機制互相協作,每個服務都圍繞著具體的業務進行構建,並且能夠被獨立的部署到生產環境中,另外,應儘量避免統一的,集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合適的語言,工具對其進行構建。
微服務優缺點
優點
- 每個服務足夠內聚,足夠小,程式碼容易理解,這樣能聚焦一個指定的業務功能或業務需求;
- 開發簡單,開發效率提高,一個服務可能就是專一的只幹一件事;
- 微服務能夠被小團隊單獨開發,這個小團隊是2~5人的開發人員組成;
- 微服務是鬆耦合的,是有功能意義的服務,無論是在開發階段或部署階段都是獨立的。
- 微服務能使用不同的語言開發。
- 易於和第三方整合,微服務允許容易且靈活的方式整合自動部署,通過持續整合工具,如jenkins,Hudson,bamboo
- 微服務易於被一個開發人員理解,修改和維護,這樣小團隊能夠更關注自己的工作成果。無需通過合作才能體現價值。
- 微服務允許你利用融合最新技術。
- 微服務只是業務邏輯的程式碼,不會和 HTML , CSS 或其他介面混合
- 每個微服務都有自己的儲存能力,可以有自己的資料庫,也可以有統一資料庫
缺點
- 開發人員要處理分散式系統的複雜性
- 多服務運維難度,隨著服務的增加,運維的壓力也在增大
- 系統部署依賴
- 服務間通訊成本
- 資料一致性
- 系統整合測試
- 效能監控.....
微服務技術棧有哪些?
微服務條目 | 落地技術 |
---|---|
服務開發 | SpringBoot,Spring,SpringMVC |
服務配置與管理 | Netflix公司的Archaius、阿里的Diamond等 |
服務註冊與發現 | Eureka、Consul、Zookeeper等 |
服務呼叫 | Rest、RPC、gRPC |
服務熔斷器 | Hystrix、Envoy等 |
負載均衡 | Ribbon、Nginx等 |
服務介面呼叫(客戶端呼叫服務的簡化工具) | Feign等 |
訊息佇列 | Kafka、RabbitMQ、ActiveMQ等 |
服務配置中心管理 | SpringCloudConfig、Chef等 |
服務路由(API閘道器) | Zuul等 |
服務監控 | Zabbix、Nagios、Metrics、Specatator等 |
全鏈路追蹤 | Zipkin、Brave、Dapper等 |
全鏈路追蹤 | Zipkin、Brave、Dapper等 |
服務部署 | Docker、OpenStack、Kubernetes等 |
資料流操作開發包 | SpringCloud Stream(封裝與Redis,Rabbit,Kafka等傳送接收訊息) |
事件訊息匯流排 | SpringCloud Bus |