日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

 

大型主機缺點:

非常貴,一般的小企業用不起。

比較復雜,培養人才的成本比較高。

單點一旦故障,整個系統停轉,損失非常大。

個人PC電腦的性能越來越高,成本也越來越低。

炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 

Web時代

c/s時代:

富客戶端方案。賣軟件可賺錢。qq、影音、游戲。早期流行。

Web 1. 0

特色

主要是單向信息的發布,即信息門戶---> 廣大瀏覽器客戶端互聯網內容是由少數編輯人員(或站長)定制的。 代表:三大門戶,新浪/網易/搜狐。新浪以新聞+廣告為主,網易拓展游戲為主,搜狐延伸門戶矩陣。

一般的雛型如下圖,用戶通過瀏覽器輸入網址進行域名解析,然后從CDN上獲得靜態資源,從后臺服務器獲得html文件,這些信息拼裝組成顯示的網頁。

炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 

Web 2.0

特色

注重用戶的交互。每個人都是內容的供稿者。 RSS訂閱扮演一個很重要的作用。 代表:博客、播客、維基、P2P下載、社區、分享服務

集群跟分布式

橫向復制的集群跟縱向切分的分布式環境。

炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 


炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 

架構演進史

1. 早期雛形

特征:

應用程序主要做靜態文件讀取,返回內容給瀏覽器。 瀏覽器加載本地的若干資源 跟 瀏覽器解析從服務器獲取到的資源是一樣的!

2. 數據庫開發(LAMP特長)

linux + Apache + MySQL + php 特征:

應用程序主要主要讀取數據表值,填充html模塊。業務邏輯簡單,寫sql處理。

3. JAVAWeb雛型

特征:

Tomcat + servlet + jsp + mysql。一個war包打天下 項目結構:ssh/ssm三層結構。

4. JavaWeb的集群發展

特征:

在3的基礎上進行多個war包的復制啟動 。 硬件機器的橫向復制,對整個項目結構無影響。

炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 

5. JavaWeb分布式

特征:

將Service層單獨分離出去,成為一個單獨的項目jar。單獨運行。 Web服務器通過rpc框架,對分離出去的service進行調用。分布式是按照組件拆分。

炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 

6. JavaWeb微服務

特征:

從業務角度,細分業務為微服務,每一個微服務是一個完整的服務(從http請求到返回)。在微服務內部,將需要對外提供的接口,包裝成rpc接口,對外部開放。微服務按照 業務拆分。

炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 

后端問題

后端的不斷演進就會導致出現服務治理需求的出現。

跨系統的RPC: RMI、webservice、Http請求,

dubbo的引入, SpringCloud

服務器集群的負載路由,服務的注冊跟發現 ZooKeeper

數據量超級大時引發的

分庫/分表,需要修改業務sql語句,有侵入型,MyCat的引入。

分區,對sql語句是沒有侵入性的,但是對庫是沒辦法減輕壓力的。

單庫的MySQL承載容量一般在700W左右。

炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 

前端發展史

1.%20整頁提交

特征:

瀏覽器請求皆為頁面級請求,每次請求都是一次頁面跳轉/刷新。

 

2. 頁面+ ajax

特征:

瀏覽器請求主要為頁面級請求,有局部刷新使用ajax刷新,頁面體驗更好。

炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 

3. mvvm模式

MVVM是Model-View-ViewModel的簡寫。它本質上就是MVC 的改進版 特征:

首次請求返回頁面html,后續請求皆為restful返回json。

前端人員將js/css/img 資源開發完畢后 打包到apache或者Nginx上,供瀏覽器訪問 3 瀏覽器 訪問靜態資源服務器,獲得HTML資源。

HTML頁面JS發起·ajax·請求后臺服務器,得到業務數據 然后進行渲染整個頁面。跨域問題可用nginx解決。

炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 

架構思路及常見解決方案

1、緩存(list/redis/memached) 2、橫向拓展(集群負載) 3、拆分高負載服務,獨立為一模塊 4、大表數據切片( mysql分庫分區分表) 5、使用搜索中間件: solr/elasticsearch 6、全局性網站搜索跟mysql指定型搜索不一樣,只能用上面的中間件搞定 like 搜索。 7、tomcat一般在500以下為好。 8、mysql單表一般700萬以內。

炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 

session跨域共享

cookie、session、token 形象說, 跨域問題:

方案1:負載使用 hash(ip) 方案2:使用redis共享session 方案3: tomcat 插件實現共享 方案4: spring session 實現共享

炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 

常見解決方案

1. 緩沖方案

Redis 的引入。 一般緩存方案

1、先到緩存中查,有值直接返回 2、無值(緩存穿透、擊穿)則調用接口或者查庫,并將值補入緩存區 3、緩存區數據與db中可能不一致,使用過期時間調節 4、若緩存區數據集中在某一短時刻失效,將導致大量的緩存擊穿(雪崩)

永不過期方案

1、不設置過期時間,數據永久有效,避免雪崩 2、需要額外機制來實現數據的同步更新(參照數據同步)

炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 

2. 消息中間件

Kafka,RocketMQ,RabbitMQ,ActiveMQ

1、每個應用啟動時,主動注冊隊列 2、后續收/發信息,只管收/發隊列中數據 3、隊列中數據的路由策略, 由mq管理者來配置,跟應用程序無關。類似傳話筒

炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 

3. 同步異步

同步調度:

1、調度期間,主調和被調線程被同時占用。 2、被調執行完成前,主調等待。 3、程序內部的調度,則為一單線程。

異步調度:

1、主調與被調只是一次消息發送,信息到達即返回。 2、被調執行完成后,回調一次主調方,發送結果回來。 3、程序內部的調度,則回調函數是由被調線程執行。

炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 

4. 同步轉異步

同步轉異步:空間換時間,JDK Future Task模式

炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 

5. 數據切片

實現集群的動態擴容,Redis/es/fastdfs,將數據按片切分:

1、切成6個片,每個片存儲總量1/6數據 2、則兩個庫每個庫分擔三個片 3、若三個庫,則每個庫只需要承擔兩個片 4、路由管理,只記錄數據與片柱的關系

炸裂!萬字長文拿下分布式系統,我在字節跳動等你

 

 

分享到:
標簽:分布式 系統
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定