自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

微服務架構一直火,為什么服務化要搞懂?

開發(fā) 架構
微服務架構,這 5 年左右一直被認可,是軟件架構的未來方向。需要大家理解的是,為什么需要服務化。比如微服務架構對企業(yè)來說,帶來什么價值?有啥弊端?

[[277207]]

微服務架構,這 5 年左右一直被認可,是軟件架構的未來方向。需要大家理解的是,為什么需要服務化。比如微服務架構對企業(yè)來說,帶來什么價值?有啥弊端?

這里淺談一下微服務架構,主要還是在理解 Why :為什么需要服務化?

一、對微服務架構的理解

1.1 微服務架構

 

微服務架構,主要是多了個 “微”。亞馬遜有個粗粗的定義:一個微服務應用工程的所有開發(fā)、測試、運維加起來大約 6 到 8 個人,只需要兩個披薩就可以聚餐了。

反例:不是一個 Service 類組成的應用工程,發(fā)布成服務就是微服務。這樣分的太小,理解微服務就很片面。杭州某金融大廠,曾經分的很細,造成了運維測試成本巨大。開始分了合,折騰...

1.2 為啥需要微服務?

由 SOA 架構 -> 微服務架構的轉變,得理解為什么微服務架構被廣泛提到并實踐。它解決了什么問題,帶來了什么價值?

傳統(tǒng)企業(yè)或者很多企業(yè)的軟件,大多不止一套系統(tǒng),都是各個獨立大系統(tǒng)的堆砌。整體存在的問題是:

  • 擴展性差
  • 可靠性不高
  • 維護成本還很大
  • 重復輪子很多

 

那么這些問題,可以想到的解決方案就是:

  • 組件化
  • 服務化

微服務架構,將各個組件或者模塊分散到各個服務中,對整個系統(tǒng)實現解耦。那微服務架構強調的重中之重就是業(yè)務系統(tǒng)需要完善的組件化和服務化。什么是組件化?

組件化,即將一個大系統(tǒng),按照一定的業(yè)務或者技術維度關注形式,拆分成獨立的組件。目的是為了分而治之,為了可重用,為了減少耦合度。比如按照技術維度:搜索組件、緩存組件;按照業(yè)務維度:用戶中心、支付中心等

 

組件化是不是有點中臺的意思?阿里巴巴提出 大中臺,小前臺;就是把組件化、插件化、服務化解決方案到極致。通過產品線公共業(yè)務或者技術下沉,形成各種技術或者業(yè)務中臺

 

(圖來自漫畫程序員小灰)

二、服務化前的問題

2.1 沒有服務化,不代表不是分布式或集群

分布式,就是多個實例提供相同的服務。比如多個地方動車站里面,多個機器提供取票服務。多個地方,北京上海等,就是多機房,多個取票服務一起組成了集群,形成分布式服務。那啥是服務化?

服務化,強調 “化”!核心就是不同服務之間的通信。是一種以服務為中心的解決方案:

  • 服務注冊
  • 服務發(fā)布
  • 服務調用
  • 服務監(jiān)控
  • 服務負載均衡
  • 等等

 

2.2 沒有服務化的架構問題

沒有服務化前,舉個例子,會更形象:

假設有個取票服務、買票服務、改座服務都需要驗證下用戶身份真實性,那么會存在下面的問題:

  • 取票服務 -> 調用用戶DB代碼 -> 用戶DB
  • 買票服務 -> 調用用戶DB代碼 -> 用戶DB
  • 改座服務 -> 調用用戶DB代碼 -> 用戶DB

 

明顯的問題是:

  • 代碼重復:不同業(yè)務相同訪問 DB 的 userDAO 代碼邏輯。而且每個服務這塊代碼是不同人維護的。
  • 可維護性低:不同人維護;不同地方維護;每次 DB 字段改變或者遷庫,全部業(yè)務都有修改
  • DB 訪問耦合

自然也有解決方案是:lib。維護一個 user-DAO-lib 1.0.0 release 包,給各個業(yè)務方。

解決了問題,引入了新的問題,lib 升級是巨大而又漫長的問題。比如小李是維護 user-DAO-lib 的人,有一次寫了隱蔽的 bug 。user-lib 升級到了 1.0.1 release,花了 1 個月左右時間,推幾十個業(yè)務方升級完畢。然后這個 bug 運行了幾天出現了,考慮升級fix或者回滾都是巨大的成本

基于服務化,就可以完美解決問題。

三、服務化后的好處

 

如圖 Post 文章服務調用 Video 視頻服務,需要通過最上層的 Service 之間相互調用。服務化明顯改變:

  • DB 隔離:這樣底層細節(jié)設計可以屏蔽,后續(xù)加上其他存儲 Cache 等對業(yè)務調用方無感知。
  • 通過 Service 之間通信:具體協議可以 RPC / HTTP 等

服務化后的好處:

  • 調用簡單:不用寫相同的訪問用戶服務代碼,調用一個服務即可
  • 代碼復用:跟 lib 形式的代碼復用有所區(qū)別在于,服務化通過通信的方式解決
  • 業(yè)務隔離
  • 數據庫解耦
  • 等等

四、不可否認的微服務架構或者服務化帶來新的問題

1、本身不大的系統(tǒng),業(yè)務不復雜的系統(tǒng)也不需要微服務架構。微服務架構會帶來一定的復雜性,是一套完整的服務治理方案

2、多個模塊數據庫,分布式事務是一個挑戰(zhàn)

3、開發(fā)過程,增加了測試等一定的復雜性

有利必有弊,具體場景具體選擇

五、小結

本小結,不是講how,講的是 why。只有懂 why ,才能更好地 do。從為啥服務化?到為啥微服務架構這么流行:

  • 微服務擴展性高
  • 微服務可靠性高
  • 微服務 維護成本小
  • 微服務幾乎沒有重復輪子
  • 微服務直接調用調用簡單
  • 微服務業(yè)務隔離
  • 微服務數據庫解耦
  • 等等

參考資料

互聯網架構,究竟為啥要做服務化?https://mp.weixin.qq.com/s/S6ga8y88qaAjbKjuKMrowQ

https://zh.wikipedia.org/zh-sg/%E5%BE%AE%E6%9C%8D%E5%8B%99

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2024-09-04 17:49:27

2017-03-06 17:30:11

微服務架構系統(tǒng)

2023-11-21 08:37:09

2016-01-20 09:54:51

微服務架構設計SOA

2016-09-22 16:06:21

微服務架構RPC框架

2020-01-18 09:35:03

微服務團隊架構

2021-11-15 11:05:27

DDD微服務Java

2023-09-15 12:30:06

微服務架構管理

2020-09-01 10:46:55

微服務架構服務器

2020-07-10 08:27:55

王者榮耀微服務架構

2015-09-15 17:01:59

2017-06-06 10:18:35

技術主管微服務

2024-12-31 11:05:07

2015-02-03 09:36:45

微服務2015元年

2021-08-03 07:21:14

架構微服務開發(fā)

2010-10-20 11:06:27

公司

2017-07-25 09:55:13

微服務架構種類

2023-07-28 09:23:24

微服務架構

2024-10-29 08:44:18

2020-08-05 08:23:19

架構Java微服務
點贊
收藏

51CTO技術棧公眾號