華為Java面試題目,騰訊Java開發面試記錄,

程序員小明星 2021-09-15 06:31:38
java java


2. ZooKeeper 介紹

2.1. ZooKeeper 由來

正式介紹 ZooKeeper 之前,我們先來看看 ZooKeeper 的由來,還挺有意思的。

下面這段內容摘自《從 Paxos 到 ZooKeeper 》第四章第一節,推薦大家閱讀一下:

ZooKeeper 最早起源於雅虎研究院的一個研究小組。在當時,研究人員發現,在雅虎內部很多大型系統基本都需要依賴一個類似的系統來進行分布式協調,但是這些系統往往都存在分布式單點問題。所以,雅虎的開發人員就試圖開發一個通用的無單點問題的分布式協調框架,以便讓開發人員將精力集中在處理業務邏輯上。

關於“ZooKeeper”這個項目的名字,其實也有一段趣聞。在立項初期,考慮到之前內部很多項目都是使用動物的名字來命名的(例如著名的 Pig 項目),雅虎的工程師希望給這個項目也取一個動物的名字。時任研究院的首席科學家 RaghuRamakrishnan 開玩笑地說:“在這樣下去,我們這兒就變成動物園了!”此話一出,大家紛紛錶示就叫動物園管理員吧一一一因為各個以動物命名的分布式組件放在一起,雅虎的整個分布式系統看上去就像一個大型的動物園了,而 ZooKeeper 正好要用來進行分布式環境的協調一一於是,ZooKeeper 的名字也就由此誕生了。

2.2. ZooKeeper 概覽

ZooKeeper 是一個開源的分布式協調服務,它的設計目標是將那些複雜且容易出錯的分布式一致性服務封裝起來,構成一個高效可靠的原語集,並以一系列簡單易用的接口提供給用戶使用。

原語: 操作系統或計算機網絡用語範疇。是由若幹條指令組成的,用於完成一定功能的一個過程。具有不可分割性·即原語的執行必須是連續的,在執行過程中不允許被中斷。

ZooKeeper 為我們提供了高可用、高性能、穩定的分布式數據一致性解决方案,通常被用於實現諸如數據發布/訂閱、負載均衡、命名服務、分布式協調/通知、集群管理、Master 選舉、分布式鎖和分布式隊列等功能。

另外,ZooKeeper 將數據保存在內存中,性能是非常棒的。 在“讀”多於“寫”的應用程序中尤其地高性能,因為“寫”會導致所有的服務器間同步狀態。(“讀”多於“寫”是協調服務的典型場景)。

2.3. ZooKeeper 特點

  • 順序一致性: 從同一客戶端發起的事務請求,最終將會嚴格地按照順序被應用到 ZooKeeper 中去。
  • 原子性: 所有事務請求的處理結果在整個集群中所有機器上的應用情况是一致的,也就是說,要麼整個集群中所有的機器都成功應用了某一個事務,要麼都沒有應用。
  • 單一系統映像 : 無論客戶端連到哪一個 ZooKeeper 服務器上,其看到的服務端數據模型都是一致的。
  • 可靠性: 一旦一次更改請求被應用,更改的結果就會被持久化,直到被下一次更改覆蓋。

2.4. ZooKeeper 典型應用場景

ZooKeeper 概覽中,我們介紹到使用其通常被用於實現諸如數據發布/訂閱、負載均衡、命名服務、分布式協調/通知、集群管理、Master 選舉、分布式鎖和分布式隊列等功能。

下面選 3 個典型的應用場景來專門說說:

  1. 分布式鎖 : 通過創建唯一節點獲得分布式鎖,當獲得鎖的一方執行完相關代碼或者是掛掉之後就釋放鎖。
  2. 命名服務 :可以通過 ZooKeeper 的順序節點生成全局唯一 ID
  3. 數據發布/訂閱 :通過 Watcher 機制 可以很方便地實現數據發布/訂閱。當你將數據發布到 ZooKeeper 被監聽的節點上,其他機器可通過監聽 ZooKeeper 上節點的變化來實現配置的動態更新。

實際上,這些功能的實現基本都得益於 ZooKeeper 可以保存數據的功能,但是 ZooKeeper 不適合保存大量數據,這一點需要注意。

2.5. 有哪些著名的開源項目用到了 ZooKeeper?

  1. Kafka : ZooKeeper 主要為 Kafka 提供 Broker 和 Topic 的注册以及多個 Partition 的負載均衡等功能。
  2. Hbase : ZooKeeper 為 Hbase 提供確保整個集群只有一個 Master 以及保存和提供 regionserver 狀態信息(是否在線)等功能。
  3. Hadoop : ZooKeeper 為 Namenode 提供高可用支持。

3. ZooKeeper 重要概念解讀

破音:拿出小本本,下面的內容非常重要哦!

3.1. Data model(數據模型)

ZooKeeper 數據模型采用層次化的多叉樹形結構,每個節點上都可以存儲數據,這些數據可以是數字、字符串或者是二級制序列。並且。每個節點還可以擁有 N 個子節點,最上層是根節點以“/”來代錶。每個數據節點在 ZooKeeper 中被稱為 znode,它是 ZooKeeper 中數據的最小單元。並且,每個 znode 都一個唯一的路徑標識。

强調一句:ZooKeeper 主要是用來協調服務的,而不是用來存儲業務數據的,所以不要放比較大的數據在 znode 上,ZooKeeper 給出的上限是每個結點的數據大小最大是 1M。

從下圖可以更直觀地看出:ZooKeeper 節點路徑標識方式和 Unix 文件系統路徑非常相似,都是由一系列使用斜杠"/"進行分割的路徑錶示,開發人員可以向這個節點中寫人數據,也可以在節點下面創建子節點。這些操作我們後面都會介紹到。

華為Java面試題目,騰訊Java開發面試記錄,_後端

3.2. znode(數據節點)

介紹了 ZooKeeper 樹形數據模型之後,我們知道每個數據節點在 ZooKeeper 中被稱為 znode,它是 ZooKeeper 中數據的最小單元。你要存放的數據就放在上面,是你使用 ZooKeeper 過程中經常需要接觸到的一個概念。

3.2.1. znode 4種類型

我們通常是將 znode 分為 4 大類:

  • 持久(PERSISTENT)節點 :一旦創建就一直存在即使 ZooKeeper 集群宕機,直到將其删除。
  • 臨時(EPHEMERAL)節點 :臨時節點的生命周期是與 客戶端會話(session) 綁定的,會話消失則節點消失 。並且,臨時節點只能做葉子節點 ,不能創建子節點。
  • 持久順序(PERSISTENT_SEQUENTIAL)節點 :除了具有持久(PERSISTENT)節點的特性之外, 子節點的名稱還具有順序性。比如 /node1/app0000000001/node1/app0000000002
  • 臨時順序(EPHEMERAL_SEQUENTIAL)節點 :除了具備臨時(EPHEMERAL)節點的特性之外,子節點的名稱還具有順序性。

3.2.2. znode 數據結構

每個 znode 由 2 部分組成:

  • stat :狀態信息
  • data : 節點存放的數據的具體內容

最後

這份《“java高分面試指南”-25分類227頁1000+題50w+字解析》同樣可分享給有需要的朋友,感興趣的夥伴們可挑戰一下自我,在不看答案解析的情况,測試測試自己的解題水平,這樣也能達到事半功倍的效果!(好東西要大家一起看才香)

 CodeChina開源項目:【一線大廠Java面試題解析+核心總結學習筆記+最新講解視頻】

華為Java面試題目,騰訊Java開發面試記錄,_Java_02

華為Java面試題目,騰訊Java開發面試記錄,_後端_03

版权声明
本文为[程序員小明星]所创,转载请带上原文链接,感谢
https://javamana.com/2021/09/20210915062927535z.html

  1. Vous apprendrez à construire un serveur d'applet Wechat (https) à la main
  2. 作为一名程序员我不忘初心,Java最新实习面试经验总结,
  3. 作为一名Java面试者你应该知道的,2021最新Java常用开源库总结,
  4. 作为一个程序员,你觉得最大的悲哀是什么,2021年大厂Java岗面试必问,
  5. Configuration de l'environnement Java du système win10
  6. 作為一個程序員,你覺得最大的悲哀是什麼,2021年大廠Java崗面試必問,
  7. En tant que programmeur, quelle est la plus grande tristesse que vous ressentez? L'entrevue d'emploi Java de 2021 dans une grande usine vous demandera:
  8. Comme vous devriez le savoir en tant qu'intervieweur Java, 2021 dernier résumé des bibliothèques open source couramment utilisées pour Java,
  9. En tant que programmeur, je n'oublie pas le dernier résumé de mon expérience d'entrevue de stage en Java.
  10. 作為一名Java面試者你應該知道的,2021最新Java常用開源庫總結,
  11. New feature of Java 8. Stream (). Map (general programming method: collect. Groupingby)
  12. Computer graduation project java + SSM hospital registration system
  13. 作為一名程序員我不忘初心,Java最新實習面試經驗總結,
  14. 使用Docker部署Spring-Boot项目,论程序员成长的正确姿势,
  15. Conseils pour améliorer l'efficacité du Code Java mille fois
  16. 全网首发,我在华为做Java外包的真实经历!
  17. 全套Java视频百度云,终于找到一个看得懂的JVM内存模型了,
  18. 入职3个月的Java程序员面临转正,字节跳动 京东 360 网易面试题整理,
  19. Docker tutorial series (I) introduction to docker tutorial spring cloud mybatis distributed microservice Cloud Architecture
  20. 全網首發,我在華為做Java外包的真實經曆!
  21. Lancement de l'ensemble du réseau, je fais l'expérience réelle de l'externalisation Java à Huawei!
  22. Run around with money? Li Weijia fell into the storm of endorsement! In the face of collective hot discussion, personal attitude has become the focus of attention
  23. 全套Java視頻百度雲,終於找到一個看得懂的JVM內存模型了,
  24. Un ensemble complet de vidéos Java Baidu Cloud a finalement trouvé un modèle de mémoire JVM compréhensible.
  25. Déployez le projet Spring Boot avec docker, et parlez de la bonne posture pour que les programmeurs grandissent.
  26. 关于网络优化你必须要知道的重点,GC 堆排 Tomcat 算法题,
  27. 关于电商秒杀系统中防超卖处理方案简述,Java开发热门前沿知识,
  28. Les programmeurs Java qui sont entrés dans l'entreprise pendant trois mois ont dû faire face à une correction d'échelle, et les octets ont sauté dans le traitement des questions d'entrevue de JD 360 Netease.
  29. What is the new syntax of XX ≠ null in Java?
  30. Spring scheduled task cron expression (@ scheduled)
  31. Une brève description du plan de traitement anti - surproduction dans le système d'arrêt du commerce électronique et les connaissances de pointe du développement Java.
  32. Ce que vous devez savoir sur l'optimisation du réseau, c'est que le problème de l'algorithme Tomcat de gerbage GC,
  33. 凭借这份Java面试题集,成体系化的神级Java进阶笔记,
  34. 凭借这份Java面试题集,BAT大厂面试基础题集合,
  35. Docker Knowledge point collation
  36. Redis sur la réalisation élégante des tâches retardées
  37. 憑借這份Java面試題集,BAT大廠面試基礎題集合,
  38. Avec cet ensemble de questions d'entrevue Java, l'ensemble de questions de base d'entrevue de bat,
  39. Avec cet ensemble de questions d'entrevue Java, les notes avancées Java de niveau divin sont systématisées,
  40. Opérateurs arithmétiques et opérateurs de comparaison pour JavaScript, Introduction classique au développement web
  41. MySQL + +: slow query log analysis (I)
  42. Android Architect path 21 Responsive Programming RX Java thread transformation Principles
  43. Explorer le cadre open source Android - 1. Okhttp Source Analysis
  44. 分布式宝典:限流 缓存 通讯,Java开发中常见的一些问题面试专题,
  45. 分享面试经历的网站,腾讯大牛教你自己写Java框架!
  46. Expliquer les six principes de base du modèle de conception par des exemples réels
  47. Site Web pour partager vos expériences d'entrevue, Tencent Bull vous apprend à écrire votre propre cadre Java!
  48. Dictionnaire distribué: communication de cache limitée par le courant, sujets d'entrevue pour certaines questions courantes dans le développement Java,
  49. Another uncle circle man is angry! The high-quality acting skills make people admire and achieve the highlight of the ending of spring in Jade House
  50. 10. MySQL database import, export and authorization
  51. 9. MySQL data query
  52. 8. MySQL data operation DML
  53. 7. MySQL database table engine and character set
  54. 分享面試經曆的網站,騰訊大牛教你自己寫Java框架!
  55. Les points de connaissance de Java Real - time Video Download, Byte Jumping Java R & D post ont été divulgués à l'intérieur.
  56. Introduction au JavaScript chapitre 15 (objets, clairvoyance)
  57. 前方高能,Java程序员最大的悲哀是什么?
  58. Tencent private cloud MySQL solution tdsql
  59. 前方高能,Java程序員最大的悲哀是什麼?
  60. Quelle est la plus grande tristesse des programmeurs Java à l'avenir?