歡迎關注微信公衆號:石杉的架構筆記(id:shishan100)面試
個人新課**《C2C 電商系統微服務架構120天實戰訓練營》在公衆號儒猿技術窩**上線了,感興趣的同窗,能夠點擊下方連接瞭解詳情:算法
《C2C 電商系統微服務架構120天實戰訓練營》性能優化
「 這篇文章開始,咱們把消息中間件這塊高頻的面試問題來給你們說一下,也會涵蓋一些MQ中間件常見的技術問題。假如說面試官看你簡歷裏寫了MQ中間件的使用經驗,極可能會有以下的問題:大家公司生產環境用的是什麼消息中間件?爲何要在系統裏引入消息中間件?引入消息中間件以後會有什麼好處以及壞處?好,咱們一個個的來分析!微信
1、大家公司生產環境用的是什麼消息中間件?
這個首先你能夠說下大家公司選用的是什麼消息中間件,好比用的是RabbitMQ,而後能夠初步給一些你對不一樣MQ中間件技術的選型分析。markdown
舉個例子:好比說ActiveMQ是老牌的消息中間件,國內不少公司過去運用的仍是很是普遍的,功能很強大。網絡
可是問題在於無法確認ActiveMQ能夠支撐互聯網公司的高併發、高負載以及高吞吐的複雜場景,在國內互聯網公司落地較少。並且使用較多的是一些傳統企業,用ActiveMQ作異步調用和系統解耦。架構
而後你能夠說說RabbitMQ,他的好處在於能夠支撐高併發、高吞吐、性能很高,同時有很是完善便捷的後臺管理界面可使用。併發
另外,他還支持集羣化、高可用部署架構、消息高可靠支持,功能較爲完善。app
並且通過調研,國內各大互聯網公司落地大規模RabbitMQ集羣支撐自身業務的case較多,國內各類中小型互聯網公司使用RabbitMQ的實踐也比較多。異步
除此以外,RabbitMQ的開源社區很活躍,較高頻率的迭代版本,來修復發現的bug以及進行各類優化,所以綜合考慮事後,公司採起了RabbitMQ。
可是RabbitMQ也有一點缺陷,就是他自身是基於erlang語言開發的,因此致使較爲難以分析裏面的源碼,也較難進行深層次的源碼定製和改造,畢竟須要較爲紮實的erlang語言功底才能夠。
而後能夠聊聊RocketMQ,是阿里開源的,通過阿里的生產環境的超高併發、高吞吐的考驗,性能卓越,同時還支持分佈式事務等特殊場景。
並且RocketMQ是基於Java語言開發的,適合深刻閱讀源碼,有須要能夠站在源碼層面解決線上生產問題,包括源碼的二次開發和改造。
另外就是Kafka。Kafka提供的消息中間件的功能明顯較少一些,相對上述幾款MQ中間件要少不少。
可是Kafka的優點在於專爲超高吞吐量的實時日誌採集、實時數據同步、實時數據計算等場景來設計。
所以Kafka在大數據領域中配合實時計算技術(好比Spark Streaming、Storm、Flink)使用的較多。可是在傳統的MQ中間件使用場景中較少採用。
PS:若是你們對上述一些MQ技術還沒在本身電腦部署過,沒寫幾個helloworld體驗一下的話,建議先上各個技術的官網找到helloworld demo,本身跑一遍玩玩
2、爲何在大家系統架構中要引入消息中間件?
回答這個問題,其實就是讓你先說說消息中間件的常見使用場景。
而後結合大家自身系統對應的使用場景,說一下在大家系統中引入消息中間件是解決了什麼問題。
1)系統解耦
假設你有個系統A,這個系統A會產出一個核心數據,如今下游有系統B和系統C須要這個數據。
那簡單,系統A就是直接調用系統B和系統C的接口發送數據給他們就行了。
整個過程,以下圖所示。
可是如今要是來了系統D、系統E、系統F、系統G,等等,十來個其餘系統慢慢的都須要這份核心數據呢?以下圖所示。
你們可別覺得這是開玩笑,一個大規模系統,每每會拆分爲幾十個甚至上百個子系統,每一個子系統又對應N多個服務,這些系統與系統之間有着錯綜複雜的關係網絡。
若是某個系統產出一份核心數據,可能下游無數的其餘系統都須要這份數據來實現各類業務邏輯。
此時若是你要是採起上面那種模式來設計系統架構,那麼絕對你負責系統A的同窗要被煩死了。
先是來一我的找他要求發送數據給一個新的系統H,系統A的同窗要修改代碼而後在那個代碼里加入調用新系統H的流程。
一會那個系統B是個陳舊老系統要下線了,告訴系統A的同窗:別給我發送數據了,接着系統A再次修改代碼再也不給這個系統B。
而後若是要是某個下游系統忽然宕機了呢?系統A的調用代碼裏是否是會拋異常?那系統A的同窗會收到報警說異常了,結果他還要去care是下游哪一個系統宕機了。
因此在實際的系統架構設計中,若是所有采起這種系統耦合的方式,在某些場景下絕對是不合適的,系統耦合度太嚴重。
而且互相耦合起來並非核心鏈路的調用,而是一些非核心的場景(好比上述的數據消費)致使了系統耦合,這樣會嚴重的影響上下游系統的開發和維護效率。
所以在上述系統架構中,就能夠採用MQ中間件來實現系統解耦。
系統A就把本身的一份核心數據發到MQ裏,下游哪一個系統感興趣本身去消費便可,不須要了就取消數據的消費,以下圖所示。
2)異步調用
假設你有一個系統調用鏈路,是系統A調用系統B,通常耗時20ms;系統B調用系統C,通常耗時200ms;系統C調用系統D,通常耗時2s,以下圖所示。
如今最大的問題就是:用戶一個請求過來巨慢無比,由於走完一個鏈路,須要耗費20ms + 200ms + 2000ms(2s) = 2220ms,也就是2秒多的時間。
可是實際上,鏈路中的系統A調用系統B,系統B調用系統C,這兩個步驟起來也就220ms。
就由於引入了系統C調用系統D這個步驟,致使最終鏈路執行時間是2秒多,直接將鏈路調用性能下降了10倍,這就是致使鏈路執行過慢的罪魁禍首。
那此時咱們能夠思考一下,是否是能夠將系統D從鏈路中抽離出去作成異步調用呢?其實不少的業務場景是能夠容許異步調用的。
舉個例子,你平時點個外賣,咔嚓一會兒下訂單而後付款了,此時帳戶扣款、建立訂單、通知商家給你準備菜品。
接着,是否是須要找個騎手給你送餐?那這個找騎手的過程,是須要一套複雜算法來實現調度的,比較耗時。
可是其實稍微晚個幾十秒完成騎手的調度都是ok的,由於實際並不須要在你支付的一瞬間立馬給你找好騎手,也沒那個必要。
那麼咱們是否是就能夠把找騎手給你送餐的這個步驟從鏈路中抽離出去,作成異步化的,哪怕延遲個幾十秒,可是隻要在必定時間範圍內給你找到一個騎手去送餐就能夠了。
這樣是否是就可讓你下訂單點外賣的速度變得超快?支付成功以後,直接建立好訂單、帳戶扣款、通知商家立馬給你準備作菜就ok了,這個過程可能就幾百毫秒。
而後後臺異步化的耗費可能幾十秒經過調度算法給你找到一個騎手去送餐,可是這個步驟不影響咱們快速下訂單。
固然咱們不是說那些你們熟悉的外賣平臺的技術架構就必定是這麼實現的,只不過是用一個生活中常見的例子給你們舉例說明而已。
因此上面的鏈路也是同理,若是業務流程支持異步化的話,是否是就能夠考慮把系統C對系統D的調用抽離出去作成異步化的,不要放在鏈路中同步依次調用。
這樣,實現思路就是系統A -> 系統B -> 系統C,直接就耗費220ms後直接成功了。
而後系統C就是發送個消息到MQ中間件裏,由系統D消費到消息以後慢慢的異步來執行這個耗時2s的業務處理。經過這種方式直接將核心鏈路的執行性能提高了10倍。
整個過程,以下圖所示。
3)流量削峯
假設你有一個系統,平時正常的時候每秒可能就幾百個請求,系統部署在8核16G的機器的上,正常處理都是ok的,每秒幾百請求是能夠輕鬆抗住的。
可是以下圖所示,在高峯期一會兒來了每秒鐘幾千請求,瞬時出現了流量高峯,此時你的選擇是要搞10臺機器,抗住每秒幾千請求的瞬時高峯嗎?
那若是瞬時高峯天天就那麼半個小時,接着直接就下降爲了每秒就幾百請求,若是你線上部署了不少臺機器,那麼每臺機器就處理每秒幾十個請求就能夠了,這不是有點浪費機器資源嗎?
大部分時候,每秒幾百請求,一臺機器就足夠了,可是爲了抗那天天瞬時的高峯,硬是部署了10臺機器,天天就那半個小時有用,別的時候都是浪費資源的。
可是若是你就部署一臺機器,那會致使瞬時高峯時,一會兒壓垮你的系統,由於絕對沒法抗住每秒幾千的請求高峯。
此時咱們就能夠用MQ中間件來進行流量削峯。全部機器前面部署一層MQ,平時每秒幾百請求你們均可以輕鬆接收消息。
一旦到了瞬時高峯期,一下涌入每秒幾千的請求,就能夠積壓在MQ裏面,而後那一臺機器慢慢的處理和消費。
等高峯期過了,再消費一段時間,MQ裏積壓的數據就消費完畢了。
這個就是很典型的一個MQ的用法,用有限的機器資源承載高併發請求,若是業務場景容許異步削峯,高峯期積壓一些請求在MQ裏,而後高峯期過了,後臺系統在必定時間內消費完畢再也不積壓的話,那就很適合用這種技術方案。
下集預告:
關於第三個問題:引入消息中間件以後會有什麼好處以及壞處。
咱們將會在下一篇文章:《兄弟,那你說說系統架構引入消息中間件有什麼缺點呢?》詳細闡述,敬請關注。
END
若有收穫,請幫忙轉發,您的鼓勵是做者最大的動力,謝謝!
一大波微服務、分佈式、高併發、高可用的原創系列文章正在路上
歡迎掃描下方二維碼,持續關注:
石杉的架構筆記(id:shishan100)
十餘年BAT架構經驗傾囊相授
**> **推薦閱讀:** > > 一、[拜託!面試請不要再問我Spring Cloud底層原理](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Flink.juejin.im%2525252525252F%2525252525253Ftarget%2525252525253Dhttps%252525252525253A%252525252525252F%252525252525252Flink.juejin.im%252525252525252F%252525252525253Ftarget%252525252525253Dhttps%25252525252525253A%25252525252525252F%25252525252525252Fjuejin.im%25252525252525252Fpost%25252525252525252F5be13b83f265da6116393fc7) > > 二、[【雙11狂歡的背後】微服務註冊中心如何承載大型系統的千萬級訪問?](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Flink.juejin.im%2525252525252F%2525252525253Ftarget%2525252525253Dhttps%252525252525253A%252525252525252F%252525252525252Flink.juejin.im%252525252525252F%252525252525253Ftarget%252525252525253Dhttps%25252525252525253A%25252525252525252F%25252525252525252Fjuejin.im%25252525252525252Fpost%25252525252525252F5be3f8dcf265da613a5382ca) > > 三、[【性能優化之道】每秒上萬併發下的Spring Cloud參數優化實戰](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Flink.juejin.im%2525252525252F%2525252525253Ftarget%2525252525253Dhttps%252525252525253A%252525252525252F%252525252525252Flink.juejin.im%252525252525252F%252525252525253Ftarget%252525252525253Dhttps%25252525252525253A%25252525252525252F%25252525252525252Fjuejin.im%25252525252525252Fpost%25252525252525252F5be83e166fb9a049a7115580) > > 四、[微服務架構如何保障雙11狂歡下的99.99%高可用](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Flink.juejin.im%2525252525252F%2525252525253Ftarget%2525252525253Dhttps%252525252525253A%252525252525252F%252525252525252Flink.juejin.im%252525252525252F%252525252525253Ftarget%252525252525253Dhttps%25252525252525253A%25252525252525252F%25252525252525252Fjuejin.im%25252525252525252Fpost%25252525252525252F5be99a68e51d4511a8090440) > > 五、[兄弟,用大白話告訴你小白都能聽懂的Hadoop架構原理](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Flink.juejin.im%2525252525252F%2525252525253Ftarget%2525252525253Dhttps%252525252525253A%252525252525252F%252525252525252Flink.juejin.im%252525252525252F%252525252525253Ftarget%252525252525253Dhttps%25252525252525253A%25252525252525252F%25252525252525252Fjuejin.im%25252525252525252Fpost%25252525252525252F5beaf02ce51d457e90196069) > > 六、[大規模集羣下Hadoop NameNode如何承載每秒上千次的高併發訪問](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Flink.juejin.im%2525252525252F%2525252525253Ftarget%2525252525253Dhttps%252525252525253A%252525252525252F%252525252525252Flink.juejin.im%252525252525252F%252525252525253Ftarget%252525252525253Dhttps%25252525252525253A%25252525252525252F%25252525252525252Fjuejin.im%25252525252525252Fpost%25252525252525252F5bec278c5188253e64332c76) > > 七、【[性能優化的祕密】Hadoop如何將TB級大文件的上傳性能優化上百倍](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Flink.juejin.im%2525252525252F%2525252525253Ftarget%2525252525253Dhttps%252525252525253A%252525252525252F%252525252525252Flink.juejin.im%252525252525252F%252525252525253Ftarget%252525252525253Dhttps%25252525252525253A%25252525252525252F%25252525252525252Fjuejin.im%25252525252525252Fpost%25252525252525252F5bed82a9e51d450f9461cfc7) > > [八、](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Fjuejin.im%2525252525252Fpost%2525252525252F5bf2c6b6e51d456693549af4)[拜託,面試請不要再問我TCC分佈式事務的實現原理坑爹呀!](https://juejin.cn/post/6844903716089233416) [](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Fjuejin.im%2525252525252Fpost%2525252525252F5bf2c6b6e51d456693549af4) > > 九、[【坑爹呀!】最終一致性分佈式事務如何保障實際生產中99.99%高可用?](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Fjuejin.im%2525252525252Fpost%2525252525252F5bf2c6b6e51d456693549af4) > > 十、[拜託,面試請不要再問我Redis分佈式鎖的實現原理!](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Fjuejin.im%2525252525252Fpost%2525252525252F5bf3f15851882526a643e207) > > **十一、****[【眼前一亮!】看Hadoop底層算法如何優雅的將大規模集羣性能提高10倍以上?](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Flink.juejin.im%25252525253Ftarget%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Fjuejin.im%2525252525252Fpost%2525252525252F5bf5396f51882509a768067e)** > > **十二、****[億級流量系統架構之如何支撐百億級數據的存儲與計算](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Flink.juejin.im%252525252F%252525253Ftarget%252525253Dhttps%25252525253A%25252525252F%25252525252Fjuejin.im%25252525252Fpost%25252525252F5bfab59fe51d4551584c7bcf)** > > 1三、[億級流量系統架構之如何設計高容錯分佈式計算系統](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Flink.juejin.im%2525253Ftarget%2525253Dhttps%252525253A%252525252F%252525252Fjuejin.im%252525252Fpost%252525252F5bfbeeb9f265da61407e9679) > > 1四、[億級流量系統架構之如何設計承載百億流量的高性能架構](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Flink.juejin.im%25253Ftarget%25253Dhttps%2525253A%2525252F%2525252Fjuejin.im%2525252Fpost%2525252F5bfd2df1e51d4574b133dd3a) > > 1五、[億級流量系統架構之如何設計每秒十萬查詢的高併發架構](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Flink.juejin.im%252F%253Ftarget%253Dhttps%25253A%25252F%25252Fjuejin.im%25252Fpost%25252F5bfe771251882509a7681b3a) > > 1六、[億級流量系統架構之如何設計全鏈路99.99%高可用架構](https://link.juejin.im/?target=https%3A%2F%2Flink.juejin.im%3Ftarget%3Dhttps%253A%252F%252Fjuejin.im%252Fpost%252F5bffab686fb9a04a102f0022) > > 1七、[七張圖完全講清楚ZooKeeper分佈式鎖的實現原理](https://link.juejin.im/?target=https%3A%2F%2Fjuejin.im%2Fpost%2F5c01532ef265da61362232ed) > > 1八、[大白話聊聊Java併發面試問題之volatile究竟是什麼?](https://juejin.cn/post/6844903730303746061) > > 1九、[大白話聊聊Java併發面試問題之Java 8如何優化CAS性能?](https://juejin.cn/post/6844903731234865160) > > 20、[大白話聊聊Java併發面試問題之談談你對AQS的理解?](https://juejin.cn/post/6844903732061159437) > > 2一、[大白話聊聊Java併發面試問題之公平鎖與非公平鎖是啥?](https://juejin.cn/post/6844903732883226637) > > 2二、[大白話聊聊Java併發面試問題之微服務註冊中心的讀寫鎖優化](https://juejin.cn/post/6844903734267510798) > > 2三、[互聯網公司的面試官是如何360°無死角考察候選人的?(上篇)](https://juejin.cn/post/6844903734930046989) > > 2四、[互聯網公司面試官是如何360°無死角考察候選人的?(下篇)](https://juejin.cn/post/6844903735655661581)**