微服務

微服務化的核心

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

微服務

強調的是服務的大小,它關注的是某一個點,是具體解決某一個問題/提供落地對應服務的一個服務應用,狹義的看,maven開發的一個個獨立的小moudle,具體使用springboot開發的一個小模組,專業的事情給專業的模組來做,一個模組就做一件事情。強調的是一個個的個體,每個個體完成一個具體的任務或者功能

微服務架構

微服務架構是一種架構模式或者說是一種架構風格,它提倡將單一應用程式劃分成一組小的服務,服務之間互相協調、互相配合,為用戶提供最終價值。每個服務運行在其獨立的進程中,服務於服務間採用輕量級的通訊機制互相協作(通常是基於HTTP協議的Restful API)。每個服務都圍繞著具體業務進行構建,並且能夠被獨立的部署到生產環境、類生產環境等。另外,應當盡量避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合適的語言、工具對其進行構建。

微服務的優缺點

優點:

  1. 每個服務足夠內聚,足夠小,程式碼容易理解,這樣能聚焦一個指定的業務功能或業務需求
  2. 開發簡單、開發效率提高,一個服務可能就是轉移的只干一件事
  3. 微服務能夠被小團隊單獨開發
  4. 微服務是松耦合的,是由功能意義的服務,無論是在開發階段或部署階段都是獨立的。
  5. 微服務能使不用的語言開發
  6. 易於第三方集成,微服務允許容易且靈活的方式集成自動部署,通過持續集成工具,如Jenkins,Hudson,bamboo。
  7. 微服務易於被一個開發人員理解,修改和維護,這樣小團隊能夠更關注位元組的工作成果。無需通過合作才能體現價值。
  8. 微服務允許利用融合最新技術
  9. 微服務只是業務邏輯的程式碼,不會和HTML,CSS或其他介面組件混合。
  10. 每個微服務都有自己的存儲能力,可以有自己的資料庫。也可以有統一的資料庫。

缺點:

  1. 開發人員要處理分散式系統的複雜性
  2. 多服務運維難度,隨著服務的增加,運維的壓力也在增大
  3. 系統部署依賴
  4. 服務間的通訊成本
  5. 數據一致性
  6. 系統集成測試
  7. 性能監控…

Duboo和Spring Cloud的區別

通訊機制不同(本質的區別):

  1. Dubbo基於RPC遠程過程調用
  2. Spring Cloud是基於Rest 調用