分佈式架構(一)
大型互聯網架構演進過程,架構師應具備的分佈式知識,主流分佈式架構設計詳解
分佈式系統
分佈式系統是一個由硬件或軟件組件分佈在不同的網絡計算機上,彼此之間僅僅通過消息傳遞進行通信和協調的系統。其擁有如下特點
- 分佈性
- 對等性
- 併發性
- 缺乏全局時鐘
- 故障總是會發生
(開心一笑)
分佈式協調和分流(二)
Zookeeper分佈式環境指揮官,Nginx高併發分流進階實戰
應用場景
Zookeeper的功能很強大,應用場景很多,結合我實際工作中使用Dubbo框架的情況,Zookeeper主要是做註冊中心用。
基於Dubbo框架開發的提供者、消費者都向Zookeeper註冊自己的URL,消費者還能拿到並訂閱提供者的註冊URL,以便在後續程序的執行中去調用提供者。而提供者發生了變動,也會通過Zookeeper向訂閱的消費者發送通知。
Zookeeper有哪幾種節點類型
持久節點(PERSISTENT)
所謂持久節點,是指在節點創建後,就一直存在,直到有刪除操作來主動清除這個節點——不會因爲創建該節點的客戶端會話失效而消失。
持久順序節點(PERSISTENT_SEQUENTIAL)
這類節點的基本特性和上面的節點類型是一致的。額外的特性是,在ZK中,每個父節點會爲他的第一級子節點維護一份時序,會記錄每個子節點創建的先後順序。基於這個特性,在創建子節點的時候,可以設置這個屬性,那麼在創建節點過程中,ZK會自動爲給定節點名加上一個數字後綴,作爲新的節點名。這個數字後綴的範圍是整型的最大值。
臨時節點(EPHEMERAL)
和持久節點不同的是,臨時節點的生命週期和客戶端會話綁定。也就是說,如果客戶端會話失效,那麼這個節點就會自動被清除掉。注意,這裏提到的是會話失效,而非連接斷開。另外,在臨時節點下面不能創建子節點。
臨時順序節點(EPHEMERAL_SEQUENTIAL)
可以用來實現分佈式鎖
高性能緩存和NoSQL面試題(三)
Redis高性能緩存數據庫,Memcached進階實戰,高性能緩存開發實戰,MongoDB進階實戰
(1)Memcached服務在企業集羣架構中應用場景
(2)Memcached服務在不同企業業務應用場景中的工作流程
(3)Memcached服務分佈式集羣如何實現?
(4)Memcached服務特點及工作原理是什麼?
(5)簡述Memcached內存管理機制原理?
(6)MySQL的delete與truncate區別?
(7)Redis常見的性能問題怎麼解決?
(8)Redis與memcached有什麼區別?
(9)Redis有哪些數據結構?
(10)Redis持久化方案區別以及優缺點?
(11)如何來維護集羣之間的關係,或者說集羣之間如何建立連接?
(12)在項目中緩存是如何使用的?緩存如果使用不當會造成什麼後果?
(13)redis和memcached有什麼區別?redis的線程模型是什麼?爲什麼單線程的redis比多線程的memcached效率要高得多?
(14)redis都有哪些數據類型?分別在哪些場景下使用比較合適?
(15)redis的過期策略都有哪些?手寫一下LRU代碼實現?
異步與消息中間件面試題(四)
RabbitMq消息中間件,ActiveMq消息中間件,kafka百萬級吞實戰
(1)如何確保消息正確地發送至RabbitMQ?
(2) 如何確保消息接收方消費了消息?
(3) 如何避免消息重複投遞或重複消費?
(4)使用RabbitMQ有什麼好處?
(5)如何在activemq.xml裏面配置消息隊列的大小,來保證隊列不會溢出?
(6)如何保證消息隊列的高可用啊?
(7)如何保證消息不被重複消費啊(如何進行消息隊列的冪等性問題)?
(8)如何保證消息的可靠性傳輸(如何處理消息丟失的問題)?
(9)如何保證消息的順序性?
(10)如何解決消息隊列的延時以及過期失效問題?消息隊列滿了以後該怎麼處理?有幾百萬消息持續積壓幾小時,說說怎麼解決?
(11)如果讓你寫一個消息隊列,該如何進行架構設計啊?說一下你的思路
(12)爲什麼使用消息隊列啊?消息隊列有什麼優點和缺點啊?
(13)kafka、activemq、rabbitmq、rocketmq都有什麼優點和缺點啊?
請說明Kafka相對傳統技術有什麼優勢?
(14)在Kafka中broker的意義是什麼?
(15)Kafka服務器能接收到的最大信息是多少?
需要面試題彙總可關注我的公衆號【風平浪靜如碼】領取!
附:高性能架構學習路線導圖
寫在最後:
歡迎大家關注我新開通的公衆號【風平浪靜如碼】,海量Java相關文章,學習資料都會在裏面更新,整理的資料也會放在裏面。
覺得寫的還不錯的就點個贊,加個關注唄!點關注,不迷路,持續更新!!!