mysql數據庫備份方式,跳槽大廠必看!

NO1:說說zookeeper是什么?

ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Google的Chubby一個開源的實現(Chubby是不開源的),它是集群的管理者,監視著集群中各個節點的狀態根據節點提交的反饋進行下一步合理操作。最終,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶 。

Zookeeper一個最常用的使用場景就是用于擔任服務生產者和服務消費者的注冊中心,服務生產者將自己提供的服務注冊到Zookeeper中心,服務的消費者在進行服務調用的時候先到Zookeeper中查找服務,獲取到服務生產者的詳細信息之后,再去調用服務生產者的內容與數據,簡單示例圖如下:

Zookeeper面試常見的11個連環炮

NO2:了解Zookeeper的系統架構嗎?

ZooKeeper 的架構圖中我們需要了解和掌握的主要有:

(1)ZooKeeper分為服務器端(Server) 和客戶端(Client),客戶端可以連接到整個 ZooKeeper服務的任意服務器上(除非 leaderServes 參數被顯式設置, leader 不允許接受客戶端連接)。

(2)客戶端使用并維護一個 TCP 連接,通過這個連接發送請求、接受響應、獲取觀察的事件以及發送信息。如果這個 TCP 連接中斷,客戶端將自動嘗試連接到另外的 ZooKeeper服務器。客戶端第一次連接到 ZooKeeper服務時,可以接受這個連接的 ZooKeeper服務器會為這個客戶端建立一個會話。當這個客戶端連接到另外的服務器時,這個會話會被新的服務器重新建立。

(3)上圖中每一個Server代表一個安裝Zookeeper服務的機器,即是整個提供Zookeeper服務的集群(或者是由偽集群組成);

(4)組成ZooKeeper服務的服務器必須彼此了解。它們維護一個內存中的狀態圖像,以及持久存儲中的事務日志和快照, 只要大多數服務器可用,ZooKeeper服務就可用;

(5)ZooKeeper 啟動時,將從實例中選舉一個 leader,Leader 負責處理數據更新等操作,一個更新操作成功的標志是當且僅當大多數Server在內存中成功修改數據。每個Server 在內存中存儲了一份數據。

(6)Zookeeper是可以集群復制的,集群間通過Zab協議(Zookeeper Atomic Broadcast)來保持數據的一致性;

(7)Zab協議包含兩個階段:leader election階段和Atomic Brodcast階段。

  • a) 集群中將選舉出一個leader,其他的機器則稱為follower,所有的寫操作都被傳送給leader,并通過brodcast將所有的更新告訴給follower。
  • b) 當leader崩潰或者leader失去大多數的follower時,需要重新選舉出一個新的leader,讓所有的服務器都恢復到一個正確的狀態。
  • c) 當leader被選舉出來,且大多數服務器完成了 和leader的狀態同步后,leadder election 的過程就結束了,就將會進入到Atomic brodcast的過程。
  • d) Atomic Brodcast同步leader和follower之間的信息,保證leader和follower具有形同的系統狀態。

NO3:能說說Zookeeper的工作原理?

Zookeeper的核心是原子廣播,這個機制保證了各個Server之間的同步。實現這個機制的協議叫做Zab協議。

Zab協議有兩種模式,它們 分別是恢復模式(選主)和廣播模式(同步)。

Zab協議 的全稱是 Zookeeper Atomic Broadcast** (Zookeeper原子廣播)。Zookeeper 是通過 Zab 協議來保證分布式事務的最終一致性。Zab協議要求每個 Leader 都要經歷三個階段:發現,同步,廣播。

當服務啟動或者在領導者崩潰后,Zab就進入了恢復模式,當領導者被選舉出來,且大多數Server完成了和 leader的狀態同步以后,恢復模式就結束了。狀態同步保證了leader和Server具有相同的系統狀態。

為了保證事務的順序一致性,zookeeper采用了遞增的事務id號(zxid)來標識事務。所有的提議(proposal)都在被提出的時候加 上了zxid。實現中zxid是一個64位的數字,它高32位是epoch用來標識leader關系是否改變,每次一個leader被選出來,它都會有一 個新的epoch,標識當前屬于那個leader的統治時期。第32位用于遞增計數。

epoch:可以理解為皇帝的年號,當新的皇帝leader產生后,將有一個新的epoch年號。

每個Server在工作過程中有三種狀態:

  • LOOKING:當前Server不知道leader是誰,正在搜尋。
  • LEADING:當前Server即為選舉出來的leader。
  • FOLLOWING:leader已經選舉出來,當前Server與之同步。

NO4:Zookeeper為什么要這么設計?

ZooKeeper設計的目的是提供高性能、高可用、順序一致性的分布式協調服務、保證數據最終一致性。

高性能(簡單的數據模型)

  1. 采用樹形結構組織數據節點;
  2. 全量數據節點,都存儲在內存中;
  3. Follower 和 Observer 直接處理非事務請求;

高可用(構建集群)

  1. 半數以上機器存活,服務就能正常運行
  2. 自動進行 Leader 選舉

順序一致性(事務操作的順序)

  1. 每個事務請求,都會轉發給 Leader 處理
  2. 每個事務,會分配全局唯一的遞增id(zxid,64位:epoch + 自增 id)

最終一致性

  1. 通過提議投票方式,保證事務提交的可靠性
  2. 提議投票方式,只能保證 Client 收到事務提交成功后,半數以上節點能夠看到最新數據

NO5:你知道Zookeeper中有哪些角色?

系統模型:

領導者(leader)

Leader服務器為客戶端提供讀服務和寫服務。負責進行投票的發起和決議,更新系統狀態。

學習者(learner)

  • 跟隨者(follower) Follower服務器為客戶端提供讀服務,參與Leader選舉過程,參與寫操作“過半寫成功”策略。
  • 觀察者(observer) Observer服務器為客戶端提供讀服務,不參與Leader選舉過程,不參與寫操作“過半寫成功”策略。用于在不影響寫性能的前提下提升集群的讀性能。

客戶端(client):服務請求發起方。

NO6:你熟悉Zookeeper節點ZNode和相關屬性嗎?

節點有哪些類型?

Znode兩種類型:

持久的(persistent):客戶端和服務器端斷開連接后,創建的節點不刪除(默認)。

短暫的(ephemeral):客戶端和服務器端斷開連接后,創建的節點自己刪除。

Znode有四種形式:

  • 持久化目錄節點(PERSISTENT):客戶端與Zookeeper斷開連接后,該節點依舊存在持久化順序編號目錄節點(PERSISTENT_SEQUENTIAL)
  • 客戶端與Zookeeper斷開連接后,該節點依舊存在,只是Zookeeper給該節點名稱進行順序編號:臨時目錄節點(EPHEMERAL)
  • 客戶端與Zookeeper斷開連接后,該節點被刪除:臨時順序編號目錄節點(EPHEMERAL_SEQUENTIAL)
  • 客戶端與Zookeeper斷開連接后,該節點被刪除,只是Zookeeper給該節點名稱進行順序編號

「注意」:創建ZNode時設置順序標識,ZNode名稱后會附加一個值,順序號是一個單調遞增的計數器,由父節點維護。

總結

面試建議是,一定要自信,敢于表達,面試的時候我們對知識的掌握有時候很難面面俱到,把自己的思路說出來,而不是直接告訴面試官自己不懂,這也是可以加分的。

以上就是螞蟻技術四面和HR面試題目,以下最新總結的最全,范圍包含最全MySQL、Spring、Redis、JVM等最全面試題和答案,僅用于參考

一份還熱乎的螞蟻金服面經(已拿Offer)面試流程4輪技術面+1輪HR

以上就是螞蟻技術四面和HR面試題目,以下最新總結的最全,范圍包含最全MySQL、Spring、Redis、JVM等最全面試題和答案,僅用于參考

[外鏈圖片轉存中…(img-W1Wmc7Ea-1624341234085)]

如何獲取面試參考資料?戳這里免費領取

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385953.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385953.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385953.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python淺藍色對應的代碼_淺藍色Python模塊不在m上工作

我正在嘗試通過macosx10.7.2上的Python連接到wiimote。在為此我試著用淺藍色。運行時:import lightbluePython會給我這個錯誤。在>>> import lightblueTraceback (most recent call last):File "", line 1, in File "/Library/Frameworks/P…

mysql數據庫安裝教程32位,看這一篇就夠了!

字節跳動 ?試前?????結 ?試前 頭條的?試是三家?最專業的,每次?試前有專?的HR和你約時間,確定OK后再進??試。每次都是通過視頻?試,因為都是之前都是電話?或現場?,所以視頻?試還是有點不?然。也有?覺得視頻?試…

java cron工具類_Java工具類之:包裝類

我們都知道,JDK 其實給我們提供了很多很多 Java 開發者已經寫好的現成的類,他們其實都可以理解成工具類,比如我們常見的集合類,日期相關的類,數學相關的類等等,有了這些工具類,你會發現它能很大…

mysql數據庫安裝,真香!

Spring Security觀后感——手繪思維腦(供參考) 手繪的思維導圖,是我自己根據自身的情況讀完這套阿里出品的Spring Security王者晉級文檔之后所繪的,相當于是一個知識的總結與梳理,我將其分為“核心組件”與“工作原理/認證流程”。 Spring Se…

python列表代碼_8種高級的Python列表使用技巧,都給你整理好啦(附實操代碼)...

Python中的列表是我們很常見的數據結構之一,也是很強大的數據結構之一!Python列表功能非常豐富,并且具有很多隱藏的技巧沒有被發現。一、使用Python過濾列表1.使用Filter()函數filter()函數采用兩個參數:函數和可迭代項。 在這種情況下&#…

mysql數據庫實用教程答案

前言 數據庫相關的面試題早已成為了一線互聯網大廠面試的家常菜,如果你對數據庫不太熟悉,我勸你不要輕易面試大廠。那么,為什么數據庫成了大廠面試的家常菜呢?主要原因當然還是海量數據。 無論對于剛入行的小白還是有幾年Java開…

在idea中新建的text文件_開發屬于自己的第一款 IDEA 插件!

往期熱門文章:1、《往期精選優秀博文都在這里了!》2、又一個程序員跑路刪庫跑路被抓了,導致服務器癱瘓 36 個小時!3、恕我直言,有了這款 IDEA 插件,你可能只需要寫 30% 的代碼。。。4、Java8 的 Stream API 的確牛X&am…

mysql數據庫開發的36條軍規

前言 一般的小項目,比如幾百人左右訪問的項目,訪問量幾萬的項目,如果想用緩存,單機實例完全夠用。小黃圖就是用的阿里云256MB配置的Redis緩存,日幾千的訪問量是妥妥夠用的了。Redis號稱可以支撐10wqps,當然…

mysql 替換非中文_mysql中的正則操作 匹配手機號,匹配中文,替換

mysql中的正則操作 匹配手機號,匹配中文,替換正則匹配hy_user表內tel字段的電話號碼:SELECT * FROM hy_user WHERE tel REGEXP "[1][35678][0-9]{9}"SELECT tel FROM hy_user WHERE tel REGEXP "[1][35678][0-9]{9}"SELE…

mysql數據庫引擎怎么看,值得收藏!

什么是Service Mesh 作為Service Mesh技術探索和實踐的先行者,全球第一個真正的Service Mesh項目Linkerd負責人、Buoyant公司創始人兼CEO William Morgan第一次完整地闡述了Service Mesh。按照William Morgan的定義,Service Mesh是一個致力于解決服務間…

mysql error -1_【Mysql】SQLException:?Got?error?-1?from?storage?engine?問題解決!

錯誤信息:Caused by: java.sql.BatchUpdateException: Got error -1 from storageengineatcom.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.atcom.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.atorg.apache.spark.sql.…

Mysql 查詢blob數據很慢_blob存入數據庫很慢

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云數據庫專家保駕護航,為用戶…

mysql數據庫文件位置

01 前言 辛苦奮斗兩個月,秋招終于圓滿收官,拿到了頭條、字節、菜鳥、騰訊、網易的offer,這要多虧了意外得到的這份資料文檔,這么多面試全都靠它了,哈哈~~有好東西還是要分享出來給大家,一起學習呀 Java核心…

mysql的altertable_mysqlaltertable修改表命令詳細介紹

MySQL ALTER語法如下:ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]alter_specification:ADD [COLUMN] create_definition [FIRST | AFTER column_name ]or ADD INDEX [index_name] (index_col_name,...)or ADD PRIMARY KEY (index_col_name,...)or…

mysql數據庫連接失敗,挑戰大廠重燃激情!

一、阿里 (會員中臺) 1. Java 重寫hashcode()是否需要重寫equals(),不重寫會有什么后果 2. 并發 自旋鎖和阻塞鎖的區別公平鎖和非公平鎖的區別jdk中哪種數據結構或工具可以實現當多個線程到達某個狀態時執行一段代碼柵欄和閉鎖的區別如何…

mysql 鏈式查詢_MySQL的鏈接查詢

內連接 inner join ....on...../join ....on... :將兩個表中同時符合on條件的記錄查詢出來 inner可以省略select *from person inner join card on person.cardidcard.cardid;外連接 分為左連接、右連接,完全連接左連接:left join ....on…

大廠必備!不斷提升自己創造溢價的能力

前言: 金九銀十過了金三銀四還會遠嘛,本文后面分享面試題給正準備跳槽,準備找工作的你,這次面試字節跳動也是做了很多的準備,還好順利拿到了offer,特分享一下這次的4面技術面真題,可能有些記不全了&#x…

MySQL安裝板多少錢_MySQL安裝板怎么安裝

展開全部1首先,你需要個安裝包,自個去下0如何在官網下載MySQL 數據庫2第一步中,選擇32313133353236313431303231363533e58685e5aeb931333365666165I accept license term,然后Next3默認選第一項Developer Default ,然后Next4這一步中&#xf…

大廠必備!阿里、字節跳動、京東、騰訊、小米等名企高頻面試

一、前言 k8s全稱kubernetes,是目前大熱的一個可移植容器的編排管理工具,像AWS、Azure、Google、阿里云、騰訊云等主流的公有云提供的都是基于k8s的容器服務,很多其他廠商也在努力跟進中,所以說“kubernetes”是目前容器行業中最…

mysql myisam 鎖機制_MySQL--MyISAM之鎖機制

一、概述MySQL有三種鎖的級別:頁級、表級、行級。MyISAM存儲引擎采用的是表級鎖(table-level locking);MySQL這3種鎖的特性可大致歸納如下:表級鎖:開銷小,加鎖快;不會出現死鎖;鎖定粒度大&#…