2020年後想跳槽的朋友們,弱弱的問一句:MQ(RabbitMQ+ActiveMQ)、ZK、MongoDB、Nginx、Kafk等分佈式技術你都掌握了?這些分佈式架構的學習筆記你都有嗎?掌握與否不打緊,我們一起來重新學習認識一下吧!
注意注意:需要MQ、ZK、Nginx、Kafk等分佈式學習筆記的(都已整理如下)
可以後臺私信 “學習” 免費領取!!!
01 第一個閃亮登場的是Nginx
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。其特點是佔有內存少,併發能力強,事實上nginx的併發能力在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等
1.1 關於Nginx面試官最愛問哪些問題?
- 請解釋 Nginx 如何處理 HTTP 請求?
- 請解釋是否有可能將Nginx 的錯誤替換為 2 502 錯誤?
- 在 Nginx 中,如何使用未定義的服務器名稱來阻止處理請求?
- 請解釋 Nginx 服務器上的 r Master 和 和 r Worker 進程分別是什麼?
- 請解釋你如何通過不同於 0 80 的端口開啟 Nginx?
- 請解釋什麼是 K C10K 問題?用 Nginx 服務器解釋s -s 的目的是什麼?
- 在 Nginx 中,解釋如何在 L URL 中保留雙斜線?
- 使用 “ 反向代理服務器 ”
- 解釋Nginx 是否支持將請求壓縮到上游?
- 解釋如何在 Nginx 中獲得當前的時間?如何在 Nginx 服務器上添加模塊?
- ...
Nginx:詳細解答如下
1.2 Nginx學習必須推薦的書籍
(1)深入理解Nginx模塊開發與架構解析
02 第二個是Kafka
Kafka 是由Apache軟件基金會開發的一個開源流處理平臺,由Scala和Java編寫。Kafka是一種高吞吐量的分佈式發佈訂閱消息系統,它可以處理消費者在網站中的所有動作流數據。 這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網絡上的許多社會功能的一個關鍵因素。 這些數據通常是由於吞吐量的要求而通過處理日誌和日誌聚合來解決。 對於像Hadoop一樣的日誌數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行加載機制來統一線上和離線的消息處理,也是為了通過集群來提供實時的消息。
2.1 Kafka面試問題?
- Kafka 的設計時什麼樣的呢?
- 數據傳輸的事物定義有哪三種?
- Kafka 判斷一個節點是否還活著有那兩個條件?
- producer 是否直接將數據發送到 broker 的 leader(主節點)?
- Kafa consumer 是否可以消費指定分區消息?
- Kafka 消息是採用 Pull 模式,還是 Push 模式?Kafka 存儲在硬盤上的消息格式是什麼?
- 消費者負載均衡策略,kafaka 生產數據時數據的分組策略?
- Kafka 創建 Topic 時如何將分區放置到不同的 Broker 中?
- partition 的數據如何保存到硬盤?
- Kafka 的消費者如何消費數據?
- ...
Kafka:詳細解答如下
2.2 學習Kafka必備
(1)Kafka學習大綱圖
03 第三個是ZK
ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個為分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。
3.1 ZK面試必備
- ZooKeeper 提供了什麼?
- zk 的配置管理(文件系統、通知機制)
- Zookeeper 集群管理(文件系統、通知機制)?Zookeeper 分佈式鎖(文件系統、通知機制)?
- 獲取分佈式鎖的流程?分佈式通知和協調?
- Zookeeper 隊列管理(文件系統、通知機制)
- Zookeeper 數據複製?Zookeeper 工作原理?
- zookeeper 是如何保證事務的順序一致性的?
- zookeeper 是如何選取主 leader 的?
- zk 節點宕機如何處理?
- zookeeper 負載均衡和 nginx 負載均衡區別?
- ...
ZK:詳細解答如下
3.2 ZK學習推薦書籍
(1)ZooKeeper-分佈式過程協同技術詳解
04 第四個是MongoDB
MongoDB是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。它支持的數據結構非常鬆散,是類似json的bson格式,因此可以存儲比較複雜的數據類型。Mongo最大的特點是它支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關係數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。
4.1 面試官最常問的MongoDB問題有哪些?
- 你說的 NoSQL 數據庫是什麼意思?NoSQL 與 RDBMS 直接有什麼區別?為什麼要使用和不使用NoSQL 數據庫?說一說 NoSQL 數據庫的幾個優點?
- MongoDB 支持存儲過程嗎?如果支持的話,怎麼用?
- 如何理解 MongoDB 中的 GridFS 機制,MongoDB 為何使用 GridFS 來存儲文件?
- journal 回放在條目(entry)不完整時(比如恰巧有一箇中途故障了)會遇到問題嗎?
- 如果用戶移除對象的屬性,該屬性是否從存儲層中刪除?
- 我應該啟動一個集群分片(sharded)還是一個非集群分片的 MongoDB 環境?
- 如果我在使用複製技術(replication),可以一部分使用日誌(journaling)而其他部分則不使用嗎?
- 如果在一個分片(shard)停止或者很慢的時候,我發起一個查詢會怎樣?
- 如果塊移動操作(moveChunk)失敗了,我需要手動清除部分轉移的文檔嗎?
- 如果一個分片(Shard)停止或很慢的時候,發起一個查詢會怎樣?
- ...
MongoDB:詳細解答如下
4.2 MongoDB學習必須推薦的書籍
(1)MongoDB權威指南
05 最後壓軸出場的是MQ(RabbitMQ+ActiveMQ)
5.1 ActiveMQ
ActiveMQ是Apache軟件基金會所研發的開放源代碼消息中間件;由於ActiveMQ是一個純Java程序,因此只需要操作系統支持Java虛擬機,ActiveMQ便可執行。
(1)ActiveMQ面試常備
- 什麼是 ActiveMQ?
- ActiveMQ 中的消息重發時間間隔和重發次數嗎?
- ActiveMQ 服務器宕機怎麼辦?
- 丟消息怎麼辦?
- 持久化消息非常慢?
- 消息的不均勻消費?
- ...
ActiveMQ:詳細解答如下
5.2 RabbitMQ
RabbitMQ是實現了高級消息隊列協議(AMQP)的開源消息代理軟件(亦稱面向消息的中間件)。RabbitMQ服務器是用Erlang語言編寫的,而集群和故障轉移是構建在開放電信平臺框架上的。所有主要的編程語言均有與代理接口通訊的客戶端庫。
(1)RabbitMQ面試常備
- RabbitMQ 中的 broker 是指什麼?cluster 又是指什麼?
- 什麼是元數據?元數據分為哪些類型?包括哪些內容?與 cluster 相關的元數據有哪些?元數據是如何保存的?元數據在 cluster 中是如何分佈的?
- RabbitMQ 中的 cluster、mirrored queue,以及 warrens 機制分別用於解決什麼問題?存在哪些問題?
- RAM node 和 disk node 的區別?
- cluster 中 node 的失效會對 consumer 產生什麼影響?若是在 cluster 中創建了mirrored queue ,這時 node 失效會對 consumer 產生什麼影響?
- 向不存在的 exchange 發 publish 消息會發生什麼?向不存在的 queue 執行consume 動作會發生什麼?
- 為什麼說保證 message 被可靠持久化的條件是 queue 和 exchange 具有durable 屬性,同時 message 具有 persistent 屬性才行?
- RabbitMQ 上的一個 queue 中存放的 message 是否有數量限制?
- 在單 node 系統和多 node 構成的 cluster 系統中聲明 queue、exchange ,以及進行 binding 會有什麼不同?
- RabbitMQ 允許發送的 message 最大可達多大?
- ...
RabbitMQ:詳細解答如下
[中文]分佈式系統原理與範型
總結
需要小編整理的這些MQ(RabbitMQ+ActiveMQ)、ZK、MongoDB、Nginx、Kafk等分佈式技術筆記的小夥伴可以直接
轉發+後臺 私信 “學習” 免費獲取!!!還有更多學習筆記展示如下:
轉發+轉發+轉發+私信 “學習” 即可免費領取我的全部學習筆記!!!
閱讀更多 追逐仰望星空 的文章