1. 程式人生 > >小白入門微服務(0) - 什麼是微服務

小白入門微服務(0) - 什麼是微服務

概述

  • 前言
  • 什麼是微服務
  • 微服務的特徵與優勢
  • 微服務的不足
  • 微服務如何通訊
  • 我該使用使用微服務嗎?

前言

大半年前,我第一次聽說【微服務】這個詞,當時由於好奇心,就 Google 了一下這個詞,從此埋下了一顆學習微服務的心。在前半年的時間裡因為忙,所以抽不出完整的時間塊來學習微服務。但都有使用閒碎的時間來看相關的概念與架構。最近總算是有點時間了,我覺得光看概念是沒有用的,要真真實實地實踐一下,才能真正學到東西。這才有了這篇文章(後面會有系列文章)。

什麼是微服務

我們就以微信為栗子,來解釋一下微服務。首先假設你要做一款簡化版的微信產品,他只有如下幾個功能。那麼你的初期系統設計應該是這樣的:
微信架構

隨著時間的遷移,我們日子來到了 2019.01.01 00:00 跨年,此時此刻,很多人都在發朋友圈。朋友圈介面訪問量很大很大很大,伺服器訪問峰值瞬間衝頂,那麼我們可以開始做叢集操作。也就是整一個伺服器做叢集操作。那麼我們的註冊登入介面、支付介面、聊天介面也有了一個複製集,在此時此刻這幾個介面是比較雞肋的,那我們能不能只將朋友圈的介面做叢集呢?答案當然是可以的,且看下圖 – 微服務架構

微信架構 plus
那麼當我們微服務架構遇到 2019.01.01 00:00 跨年,會怎麼樣呢?
直接水平擴充套件朋友圈服務,如下圖,峰值壓力有所緩解。
微信架構 plus
然而在各個功能拆解成一個個的服務之後,由客戶端直接訪問各個微服務,這樣就直接將我們的服務暴露了出來,客戶端也需要定製相應的訪問策略。這樣的設計還是沒有那麼友好。那麼,我們能不能將所有微服務統一到一起呢?

且看下圖:

微信架構 plus plus
開啟一個 API 閘道器,來分發不同的請求,並做好負載均衡策略。

微服務的特徵與優勢

微服務特徵:
1. 單一職責;
2. 輕量級的通訊;
3. 隔離性,執行在自己的程序中,不會相互干擾;
4. 有自己的資料,資料的獨立性,每個微服務都有自己的資料庫;
5. 技術的多樣性,選用適合的技術做合適的事;

概述

  • 前言
  • 什麼是微服務
  • 微服務的特徵與優勢
  • 微服務的不足
  • 微服務如何通訊
  • 我該使用使用微服務嗎?

前言

大半年前,我第一次聽說【微服務】這個詞,當時由於好奇心,就 Google 了一下這個詞,從此埋下了一顆學習微服務的心。在前半年的時間裡因為忙,所以抽不出完整的時間塊來學習微服務。但都有使用閒碎的時間來看相關的概念與架構。最近總算是有點時間了,我覺得光看概念是沒有用的,要真真實實地實踐一下,才能真正學到東西。這才有了這篇文章(後面會有系列文章)。

什麼是微服務

我們就以微信為栗子,來解釋一下微服務。首先假設你要做一款簡化版的微信產品,他只有如下幾個功能。那麼你的初期系統設計應該是這樣的:
微信架構

隨著時間的遷移,我們日子來到了 2019.01.01 00:00 跨年,此時此刻,很多人都在發朋友圈。朋友圈介面訪問量很大很大很大,伺服器訪問峰值瞬間衝頂,那麼我們可以開始做叢集操作。也就是整一個伺服器做叢集操作。那麼我們的註冊登入介面、支付介面、聊天介面也有了一個複製集,在此時此刻這幾個介面是比較雞肋的,那我們能不能只將朋友圈的介面做叢集呢?答案當然是可以的,且看下圖 – 微服務架構

微信架構 plus
那麼當我們微服務架構遇到 2019.01.01 00:00 跨年,會怎麼樣呢?
直接水平擴充套件朋友圈服務,如下圖,峰值壓力有所緩解。
微信架構 plus
然而在各個功能拆解成一個個的服務之後,由客戶端直接訪問各個微服務,這樣就直接將我們的服務暴露了出來,客戶端也需要定製相應的訪問策略。這樣的設計還是沒有那麼友好。那麼,我們能不能將所有微服務統一到一起呢?且看下圖:

微信架構 plus plus
開啟一個 API 閘道器,來分發不同的請求,並做好負載均衡策略。

微服務的特徵與優勢

微服務特徵:
1. 單一職責;
2. 輕量級的通訊;
3. 隔離性,執行在自己的程序中,不會相互干擾;
4. 有自己的資料,資料的獨立性,每個微服務都有自己的資料庫;
5. 技術的多樣性,選用適合的技術做合適的事;

本篇文章首發於公眾號「zone7」,關注公眾號獲取最新推文。