国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Kafka 集群如何實(shí)現(xiàn)數(shù)據(jù)同步?

這篇具有很好參考價(jià)值的文章主要介紹了Kafka 集群如何實(shí)現(xiàn)數(shù)據(jù)同步?。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

哈嘍大家好,我是咸魚

最近這段時(shí)間比較忙,將近一周沒更新文章,再不更新我那為數(shù)不多的粉絲量就要庫庫往下掉了 T﹏T

剛好最近在學(xué) Kafka,于是決定寫篇跟 Kafka 相關(guān)的文章(文中有不對的地方歡迎大家指出)

考慮到有些小伙伴可能是第一次接觸 Kafka ,所以先簡單介紹一下什么是 Kafka 吧!

Kafka 介紹

Kafka 是一個(gè)高吞吐的分布式消息系統(tǒng),不但像傳統(tǒng)消息隊(duì)列(RaabitMQ、RocketMQ等)那樣能夠【異步處理、流量消峰、服務(wù)解耦】

還能夠把消息持久化到磁盤上,用于批量消費(fèi)。除此之外由于 Kafka 被設(shè)計(jì)成分布式系統(tǒng),吞吐量和可用性大大提高

Kafka 角色

  • kafka 客戶端
    • 生產(chǎn)者(producer):也叫發(fā)布者,負(fù)責(zé)創(chuàng)建消息
    • 消費(fèi)者(consumer):也叫訂閱者,負(fù)責(zé)消費(fèi)(讀取)消息
  • Kafka 服務(wù)端(broker)
    • leader:對外提供讀寫服務(wù)
    • follower:不提供服務(wù),負(fù)責(zé)向 leader 同步數(shù)據(jù)

Topic(主題)和 partition(分區(qū))

topic 就是消息發(fā)布的地方,消費(fèi)者通過訂閱 topic 來消費(fèi)到對應(yīng)的消息

為了提高吞吐量,實(shí)現(xiàn) topic 的負(fù)載均衡,Kafka 在 topic 下又引用了分區(qū)(partition)的概念,每個(gè) topic 可以被劃分成多個(gè)分區(qū)

分區(qū)允許消息在 Topic 下水平分割和存儲(chǔ),每個(gè)分區(qū)都是一個(gè)有序且不可變的消息隊(duì)列,消費(fèi)者可以以并行的方式消費(fèi)同一個(gè) topic 中的消息

PS:topic 是邏輯上的概念,消息真正是存儲(chǔ)到 partition 中去的

Kafka 集群如何實(shí)現(xiàn)數(shù)據(jù)同步?

例如某個(gè) topic 下被劃分成 n 個(gè)分區(qū),那么這個(gè) topic 的并發(fā)度就提高 n,同時(shí)可以支持 n 個(gè) consumer 并行消費(fèi)該 topic 中的消息

log(日志)

對于每一個(gè) topic ,Kafka 都會(huì)維護(hù)一個(gè)分區(qū)日志
Kafka 集群如何實(shí)現(xiàn)數(shù)據(jù)同步?
每個(gè)分區(qū)都是一個(gè)有序的、不可變的消息隊(duì)列,且可以持續(xù)地添加消息。消息在分區(qū)中分配了唯一的序列號,被稱為偏移量(Offset)

offset 用來唯一的標(biāo)識分區(qū)中每一條記錄

Kafka 會(huì)保留所有分區(qū)中的消息,不會(huì)自動(dòng)刪除消息。消息的保留策略由 Kafka 配置參數(shù)控制,消息可以在一定時(shí)間或達(dá)到一定大小后過期,過期的消息會(huì)被刪除

消費(fèi)者在 Kafka 中只保留自己的 Offset,用于標(biāo)識它在分區(qū)中的位置。通常情況下,當(dāng) 消費(fèi)者消費(fèi)消息時(shí),它的 Offset 會(huì)線性增加,表示它已經(jīng)消費(fèi)了這些消息

消費(fèi)者可以選擇將 Offset 重置為更舊的值,從而重新開始讀取消息

每個(gè)消費(fèi)者實(shí)例唯一負(fù)責(zé)一個(gè)分區(qū),Kafka 只保證分區(qū)內(nèi)的記錄是有序的,而不保證主題中不同分區(qū)的順序

Kafka 集群

Kafka 是分布式架構(gòu),有集群(cluster)的概念

Kafka 中的一個(gè)實(shí)例被稱為 broker,它接收生產(chǎn)者的消息并存入磁盤,消費(fèi)者連接 broker 消費(fèi)消息

多個(gè) broker 組成一個(gè) Kafka cluster,集群內(nèi)某個(gè) broker 會(huì)成為集群控制器(cluster controller),負(fù)責(zé)管理整個(gè) Kafka 集群,包括分配分區(qū)給 broker,監(jiān)控 broker 等

分區(qū)被復(fù)制成了多個(gè)副本(replica)然后均分在不同的 broker 上 ,其中一個(gè)副本 Leader,其他的是 Follower

創(chuàng)建副本的單位是 topic 的 分區(qū)

正常情況下,每個(gè)分區(qū)都有一個(gè) leader 和零或多個(gè) followers 。這樣即使某個(gè) broker 發(fā)生故障,其他 broker上的副本仍然可以繼續(xù)提供服務(wù)
Kafka 集群如何實(shí)現(xiàn)數(shù)據(jù)同步?
那如何將所有的副本均勻分布在不同 broker 上呢?

分配副本的算法如下:

  • 將所有 broker(假設(shè)共 n 個(gè) broker)和待分配的分區(qū)排序
  • 將第 i 個(gè)分區(qū)分配到第(i mod n)個(gè) broker上
  • 將第 i 個(gè)分區(qū)的第 j 個(gè)副本分配到第((i + j) mode n)個(gè) broker 上

如何實(shí)現(xiàn)數(shù)據(jù)同步?

我們先來看下 Kafka 中的 ISR(In-Sync Replicas) 機(jī)制

既然每個(gè) leader 下面都有至少一個(gè) follower,于是便有了 ISR,ISR 就是 Kafka 動(dòng)態(tài)維護(hù)的一組同步副本集合

ISR 中所有的 follower 都與 leader 保持同步狀態(tài),而且 leader 也在 ISR 列表中,只有在自己 ISR 列表中的副本才能參與 leader 競選

當(dāng)生產(chǎn)者寫入數(shù)據(jù)時(shí),leader 更新數(shù)據(jù),follower 是怎么知道 leader 更新然后去同步數(shù)據(jù)的呢?

follower 會(huì)通過定期向 leader 發(fā)送 fetch 請求來實(shí)現(xiàn)數(shù)據(jù)同步,這個(gè)是由 fetcher 線程來負(fù)責(zé)的

當(dāng)一個(gè)副本被選舉成為 follower 后,會(huì)啟動(dòng)副本的 fetcher 線程,隨后 Follower 會(huì)定期向 Leader 發(fā)送心跳請求,以保持連接,并發(fā)送 fetch 請求來獲取最新的數(shù)據(jù)。

如果 follower 發(fā)現(xiàn)自己的 LEO(Log End Offset,日志結(jié)束偏移量)與 Leader 的 LEO 有差距時(shí),會(huì)觸發(fā)同步數(shù)據(jù)請求,以便將自身日志同步至 Leader 的對應(yīng)位置,確保與 Leader 的數(shù)據(jù)保持一致

如果一個(gè) follower 在指定時(shí)間內(nèi)(配置字段為 replica.lag.time.max.ms)沒有發(fā)送 fecth 請求或者沒有追上 leader 的 LEO,就會(huì)從 ISR 中移除

最后總結(jié)一下:文章來源地址http://www.zghlxwxcb.cn/news/detail-746408.html

  • Kafka 中的 topic 是邏輯概念,每個(gè) topic 可以被劃分為多個(gè)分區(qū),而分區(qū)才是存儲(chǔ)消息的實(shí)體
  • 每一個(gè)分區(qū)會(huì)被復(fù)制成多個(gè)副本,然后選取其中一個(gè)副本當(dāng)作 leader,剩下的則是 follower
  • follower 會(huì)定期去向 leader 發(fā)送 fetch 請求來保證數(shù)據(jù)的同步
  • leader 不會(huì)關(guān)心 follower 的數(shù)據(jù)是不是同步好了的,只要你在指定時(shí)間內(nèi)沒有找我來 fetch ,我就把你從 ISR 中剔除出來

到了這里,關(guān)于Kafka 集群如何實(shí)現(xiàn)數(shù)據(jù)同步?的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 十萬字圖文詳解mysql、redis、kafka、elasticsearch(ES)多源異構(gòu)不同種類數(shù)據(jù)庫集成、數(shù)據(jù)共享、數(shù)據(jù)同步、不同中間件技術(shù)實(shí)現(xiàn)與方案,如何構(gòu)建數(shù)據(jù)倉庫、數(shù)據(jù)湖、數(shù)倉一體化?

    數(shù)據(jù)庫大數(shù)據(jù)量、高并發(fā)、高可用解決方案,十萬字圖文詳解mysql、redis、kafka、elasticsearch(ES)多源異構(gòu)不同種類數(shù)據(jù)庫集成、數(shù)據(jù)共享、數(shù)據(jù)同步、不同中間件技術(shù)實(shí)現(xiàn)與方案,如何構(gòu)建數(shù)據(jù)倉庫、數(shù)據(jù)湖、數(shù)倉一體化?Delta Lake、Apache Hudi和Apache Iceberg數(shù)倉一體化技術(shù)架構(gòu)

    2024年02月07日
    瀏覽(57)
  • 通過kafka connector實(shí)現(xiàn)mysql數(shù)據(jù)自動(dòng)同步es

    整體思路: 1、使用?io.debezium.connector.mysql.MySqlConnector 自動(dòng)同步數(shù)據(jù)到kafka消息隊(duì)列 2、通過listener監(jiān)聽消息隊(duì)列,代碼控制數(shù)據(jù)插入es ps:其實(shí)有更簡單的方式:在此基礎(chǔ)上使用ElasticsearchSinkConnector、ksql,完成數(shù)據(jù)的轉(zhuǎn)換與自動(dòng)同步es,全程無需代碼控制,后續(xù)本地跑通流程后

    2024年02月08日
    瀏覽(24)
  • 免登陸 同步腳本 zookeeper kafka集群詳細(xì)安裝步驟

    一.免登陸配置 二.集群同步

    2024年02月08日
    瀏覽(15)
  • Debezium vs OGG vs Tapdata:如何實(shí)時(shí)同步 Oracle 數(shù)據(jù)到 Kafka 消息隊(duì)列?

    Debezium vs OGG vs Tapdata:如何實(shí)時(shí)同步 Oracle 數(shù)據(jù)到 Kafka 消息隊(duì)列?

    隨著信息時(shí)代的蓬勃發(fā)展,企業(yè)對實(shí)時(shí)數(shù)據(jù)處理的需求逐漸成為推動(dòng)業(yè)務(wù)創(chuàng)新和發(fā)展的重要驅(qū)動(dòng)力。在這個(gè)快速變化的環(huán)境中,許多企業(yè)選擇將 Oracle 數(shù)據(jù)庫同步到 Kafka,以滿足日益增長的實(shí)時(shí)數(shù)據(jù)處理需求。本文將深入探討這一趨勢的背后原因,并通過一個(gè)真實(shí)的客戶案例

    2024年04月10日
    瀏覽(23)
  • 微服務(wù)---分布式多級緩存集群實(shí)現(xiàn)方案(Caffeine+redis+nginx本地緩存+Canal數(shù)據(jù)同步)

    微服務(wù)---分布式多級緩存集群實(shí)現(xiàn)方案(Caffeine+redis+nginx本地緩存+Canal數(shù)據(jù)同步)

    傳統(tǒng)的緩存策略一般是請求到達(dá)Tomcat后,先查詢Redis,如果未命中則查詢數(shù)據(jù)庫,如圖: 存在下面的問題: ?請求要經(jīng)過Tomcat處理,Tomcat的性能成為整個(gè)系統(tǒng)的瓶頸 ?Redis緩存失效時(shí),會(huì)對數(shù)據(jù)庫產(chǎn)生沖擊 多級緩存就是充分利用請求處理的每個(gè)環(huán)節(jié),分別添加緩存,減輕T

    2024年02月12日
    瀏覽(32)
  • 技術(shù)干貨|如何利用 ChunJun 實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)同步?

    技術(shù)干貨|如何利用 ChunJun 實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)同步?

    實(shí)時(shí)同步是 ChunJun 的?個(gè)重要特性,指在數(shù)據(jù)同步過程中,數(shù)據(jù)源與?標(biāo)系統(tǒng)之間的數(shù)據(jù)傳輸和更新?乎在同?時(shí)間進(jìn)?。 在實(shí)時(shí)同步場景中我們更加關(guān)注源端,當(dāng)源系統(tǒng)中的數(shù)據(jù)發(fā)?變化時(shí),這些變化會(huì)?即傳輸并應(yīng)?到?標(biāo)系統(tǒng),以保證兩個(gè)系統(tǒng)中的數(shù)據(jù)保持?致。這個(gè)

    2023年04月24日
    瀏覽(20)
  • 聊聊在集群環(huán)境中本地緩存如何進(jìn)行同步

    聊聊在集群環(huán)境中本地緩存如何進(jìn)行同步

    之前有發(fā)過一篇文章聊聊如何利用redis實(shí)現(xiàn)多級緩存同步。有個(gè)讀者就給我留言說,因?yàn)樗?xiàng)目的redis版本不是6.0+版本,因此他使用我文章介紹通過MQ來實(shí)現(xiàn)本地緩存同步,他的同步流程大概如下圖 他原來的業(yè)務(wù)流程是每天凌晨開啟定時(shí)器去爬取第三方的數(shù)據(jù),并持久化到r

    2024年02月12日
    瀏覽(21)
  • 技術(shù)干貨|如何利用 ChunJun 實(shí)現(xiàn)數(shù)據(jù)離線同步?

    技術(shù)干貨|如何利用 ChunJun 實(shí)現(xiàn)數(shù)據(jù)離線同步?

    ChunJun 是?款穩(wěn)定、易?、?效、批流?體的數(shù)據(jù)集成框架,基于計(jì)算引擎 Flink 實(shí)現(xiàn)多種異構(gòu)數(shù)據(jù)源之間的數(shù)據(jù)同步與計(jì)算。ChunJun 可以把不同來源、格式、特點(diǎn)性質(zhì)的數(shù)據(jù)在邏輯上或物理上有機(jī)地集中,從?為企業(yè)提供全?的數(shù)據(jù)共享,目前已在上千家公司部署且穩(wěn)定運(yùn)?

    2024年02月05日
    瀏覽(19)
  • Zookeeper 和 Kafka 工作原理及如何搭建 Zookeeper集群 + Kafka集群

    Zookeeper 和 Kafka 工作原理及如何搭建 Zookeeper集群 + Kafka集群

    目錄 1 Zookeeper 1.1 Zookeeper 定義 1.2 Zookeeper 工作機(jī)制 1.3 Zookeeper 特點(diǎn) 1.4 Zookeeper 數(shù)據(jù)結(jié)構(gòu) 1.5 Zookeeper 應(yīng)用場景 1.6 Zookeeper 選舉機(jī)制 2 部署 Zookeeper 集群 2.1 安裝前準(zhǔn)備 2.2 安裝 Zookeeper 3 Kafka 3.1 為什么需要消息隊(duì)列(MQ) 3.2 使用消息隊(duì)列的好處 3.3 消息隊(duì)列的兩種模式 3.4 Kafka 定義

    2024年02月08日
    瀏覽(50)
  • Kafka實(shí)時(shí)數(shù)據(jù)同步

    Kafka實(shí)時(shí)數(shù)據(jù)同步

    目錄 1 概述 2 捕獲Oracle數(shù)據(jù)到Kafka 2.1 數(shù)據(jù)捕獲設(shè)置 2.2 數(shù)據(jù)發(fā)布設(shè)置 2.3 捕獲到發(fā)布數(shù)據(jù)流映射 2.4 查看任務(wù)執(zhí)行日志 3 訂閱Kafka數(shù)據(jù)到ClickHouse 3.1 數(shù)據(jù)訂閱設(shè)置 3.2 數(shù)據(jù)加載設(shè)置 3.3 訂閱到加載數(shù)據(jù)流映射 3.4 查看任務(wù)執(zhí)行日志 ?4 校驗(yàn)數(shù)據(jù)一致性 BeeDI 支持實(shí)時(shí)捕獲業(yè)務(wù)系統(tǒng)變

    2024年02月07日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包