1. 程式人生 > >01分散式基礎(一)-分散式架構概述

01分散式基礎(一)-分散式架構概述

一、分散式架構概述

什麼是分散式

一個業務拆分成多個業務模組,部署在不同的伺服器裡面

  1. 任務分解
  2. 節點通訊

分散式和叢集的關係

電商平臺: 使用者、 商品、訂單、 交易
分散式: 一個業務拆分成多個子系統,部署在不同的伺服器上
叢集: 同一個業務,部署在多個伺服器上

計算機的發展歷史

計算機的發展歷史

  1. 1946 情人節
  2. 1964 IBM SYSTEM/360
    超強的計算能力、 高可靠性
  3. X86 CPU
  4. RISC CPU 小型機

軟體架構往集中式發展, 成為當時軟體架構的主流

分散式架構的發展

  1. 時機成熟了
    PC機的效能不斷提升
  2. 企業必須要做

去IOE
IBM小型機 、 Oracle Rac、 EMC儲存裝置
PC mysql mariadb
2013年5月17號,最後一臺IMB小型機下線

單機計算機的架構->分散式計算機架構

架構的發展演變過程

lamp
BAT
什麼是大型網站

  1. 訪問量(tps、qps)
  2. 資料量(儲存資料量)

電商平臺的發展
使用者、 商品、訂單

容器: tomcat ;jsp/servlet
資料庫儲存: mysql
網路層面的知識:tcp/udp

第一版應用

在這裡插入圖片描述

第二版 單擊負載越來越高,資料庫伺服器和應用伺服器分離

在這裡插入圖片描述

第三版 應用伺服器做叢集

叢集裡面會有一些問題:

  1. session共享的問題
  2. 如何做請求轉發:CDN、前端的負載均衡器;
    在這裡插入圖片在這裡插入圖片描述描述

第四版 資料庫進行讀寫分離

在這裡插入圖片描述
涉及的三個問題

  1. 資料庫的讀寫分離怎麼做?
  2. 資料庫的同步要怎麼做?
  3. 資料庫的路由要怎麼做?-mycat

第五版 解決搜尋帶來的問題

電商平臺操作最多就是搜尋商品—用搜索引擎,搜尋引擎要做叢集,


應用搜索引擎也會帶來問題:

  1. 搜尋引擎的索引資料怎麼去做同步?實時增量同步?還是定時全量同步?----具體怎麼做不是固定的,還是要去看業務

在這裡插入圖片描述

第六版 解決訪問量持續增高帶來的問題

使用者是沒有上限的,我們可以這樣來做,引入快取機制

  1. 快取
  2. 限流
  3. 降級
    在這裡插入圖片描述

第七版:資料庫的水平/垂直拆分

在這裡插入圖片描述

第八版 應用拆分:

在這裡插入圖片描述

架構圖示

還有監控,資料採集、日誌分析等
資料採集:ELK,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成
在這裡插入圖片描述

解決session跨域共享問題

  1. session sticky
  2. session application
  3. session集中儲存:儲存db,儲存在快取伺服器(redis)
  4. cookie(主流)
    access_token(userid/token/timestamp)
    SOA架構和微服務的區別:訊息匯流排的不同