1. 程式人生 > 其它 >SpringCloud(一)——微服務與微服務架構

SpringCloud(一)——微服務與微服務架構

SpringCloud(一)——微服務與微服務架構

微服務概述

微服務化的核心就是將傳統的一站式應用,根據業務拆分成一個一個的服務,徹底地去耦合,每一個微服務提供單個業務功能的服務,一個服務做一件事情,從技術角度看就是一種小而獨立的處理過程,類似程序的概念,能夠自行單獨啟動或銷燬,擁有自己獨立的資料庫。

微服務與微服務架構

微服務

強調的是服務的大小,他關注的是某一個點,是具體解決某一個問題/提供落地對應服務的一個服務應
用,狹義的看,可以看做是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