數(shù)據(jù)庫(kù)實(shí)時(shí)轉(zhuǎn)移之Confluent介紹(一)

1.背景

最近研究了數(shù)據(jù)庫(kù)實(shí)時(shí)轉(zhuǎn)移的方案,目的是要把數(shù)據(jù)庫(kù)中某些表的指定數(shù)據(jù)實(shí)時(shí)的轉(zhuǎn)移到別的數(shù)據(jù)庫(kù)中穷绵。

這與平時(shí)了解的數(shù)據(jù)庫(kù)備份概念不同轿塔,數(shù)據(jù)庫(kù)備份是對(duì)全庫(kù)數(shù)據(jù)進(jìn)行復(fù)制,永許有一定的延時(shí)。而本次研究的是對(duì)數(shù)據(jù)過(guò)濾后實(shí)時(shí)的轉(zhuǎn)移勾缭,延遲時(shí)間要控制到毫秒級(jí)揍障。

在調(diào)研的過(guò)程中了解到Confluent平臺(tái)可以很好的實(shí)現(xiàn)這個(gè)功能,于是開始逐步深入探究其使用方法和工作原理俩由。

但在實(shí)踐的過(guò)程中發(fā)現(xiàn)國(guó)內(nèi)用此平臺(tái)的不多毒嫡,這方面的資料非常之少,都是些只言片語(yǔ)的介紹幻梯,并沒(méi)有一個(gè)實(shí)踐的教程兜畸。

各種資料搜索下來(lái),發(fā)現(xiàn)唯一的途徑只能通過(guò)官網(wǎng)去學(xué)習(xí)碘梢,但是官網(wǎng)都是英文文檔咬摇,對(duì)于英語(yǔ)不好的人學(xué)習(xí)起來(lái)更是吃力。

最后本人通過(guò)對(duì)官網(wǎng)文檔的翻譯痘系,以及一些源碼的閱讀菲嘴,最終成功搭建了一套實(shí)時(shí)數(shù)據(jù)轉(zhuǎn)移系統(tǒng),運(yùn)行結(jié)果也比較穩(wěn)定汰翠,滿足了實(shí)際需求龄坪。

在此我也把這次的學(xué)習(xí)、實(shí)踐成果分享出來(lái)复唤,供需要的人參考健田,避免后來(lái)人走一些彎路。

2.Confluent初探

Confluent 官網(wǎng)資料很多佛纫,本章主要對(duì)一些必要的概念或者是和本實(shí)驗(yàn)有關(guān)的東西進(jìn)行重點(diǎn)講解妓局。

2.1 Confluent Platform功能

說(shuō)起Kafka相信大家很多人都知道,知道是一個(gè)高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)呈宇,國(guó)內(nèi)很多公司也在用好爬,但對(duì)于Confluent大家可能相對(duì)了解的較少。

Confluent是一家創(chuàng)業(yè)公司甥啄,由當(dāng)時(shí)編寫Kafka的幾位程序員從Linked In公司離職后創(chuàng)立的存炮,Confluent Platform 就是Confluent公司的主要產(chǎn)品,其平臺(tái)實(shí)現(xiàn)主要依賴的就是Kafka蜈漓。

以下是截取的兩段官方文字介紹:

The Confluent Platform is a streaming platform that enables you to
organize and manage data from many different sources with one
reliable, high performance system.
https://docs.confluent.io/current/getting-started.html

Confluent Platform makes it easy build real-time data pipelines and
streaming applications. By integrating data from multiple sources and
locations into a single, central Event Streaming Platform for your
company.
https://docs.confluent.io/current/platform.html

上面兩段話翻譯過(guò)了就是:

Confluent是用來(lái)管理和組織不同數(shù)據(jù)源的流媒體平臺(tái)穆桂,可以實(shí)時(shí)地把不同源和位置的數(shù)據(jù)集成到一個(gè)中心的事件流平臺(tái)。而且還強(qiáng)調(diào)了這個(gè)平臺(tái)很可靠融虽、性能很高享完,總之就是很好用,很強(qiáng)大有额。

下面的圖形象說(shuō)明了Confluent可以實(shí)現(xiàn)的功能般又。


數(shù)據(jù)流

2.2 Confluent Platform組成

Confluent目前提供了社區(qū)版和商業(yè)版兩個(gè)版本彼绷,社區(qū)版永久免費(fèi),商業(yè)版面向企業(yè)收費(fèi)倒源。

社區(qū)版提供了Connectors苛预、REST Proxy、KSQL笋熬、Schema-Registry等基礎(chǔ)服務(wù)热某。

商業(yè)版為企業(yè)提供了控制面板、負(fù)載均衡胳螟,跨中心數(shù)據(jù)備份昔馋、安全防護(hù)等高級(jí)特性。

2.3 社區(qū)版功能介紹

通過(guò)對(duì)兩個(gè)版本功能的比對(duì)糖耸,發(fā)現(xiàn)社區(qū)版已經(jīng)能滿足我們的要求秘遏,因此本文后面都以社區(qū)版來(lái)進(jìn)行研究。

下載鏈接:https://www.confluent.io/download/

解壓下載的社區(qū)版本包嘉竟,包含以下文件夾:


安裝包結(jié)構(gòu)

各文件目錄功能描述如下:


目錄功能

通過(guò)查看bin和etc目錄發(fā)現(xiàn)每個(gè)組件都互相獨(dú)立邦危,都有各自的啟動(dòng)/停止腳本以及相應(yīng)的配置文件,可以對(duì)各項(xiàng)服務(wù)進(jìn)行靈活的配置舍扰。

2.4 confluent命令

Confluent提供了多種命令來(lái)對(duì)confluent平臺(tái)進(jìn)行管理監(jiān)控倦蚪,命令列表及描述如下:


命令列表

上面的命令介紹都比較簡(jiǎn)單,相信大家基本都能看懂边苹,此處也不再一一介紹陵且。

這里主要提一下我們最可能最常用到confluent start <service>,confluent stop <service>兩個(gè)命令个束,這兩個(gè)命令分別用來(lái)啟動(dòng)和停止相應(yīng)的服務(wù)以及依賴的所有服務(wù)項(xiàng)慕购。

start命令如果不帶參數(shù)會(huì)把相關(guān)服務(wù)按順序啟動(dòng),stop會(huì)逆序把各服務(wù)停止茬底。

執(zhí)行start命令:

confluent start

結(jié)果如下沪悲,[UP]表示該服務(wù)啟動(dòng)成功:

Startingzookeeper
zookeeper is[UP]
Startingkafka
kafka is[UP]
Startingschema-registry
schema-registry is[UP]
Startingkafka-rest
kafka-rest is[UP]
Startingconnect
connect is[UP]
Startingksql-server
ksql-server is[UP]

執(zhí)行stop命令:

confluent stop 

結(jié)果如下,[DOWN]表示該服務(wù)停止成功:

Stoppingksql-server
ksql-server is [DOWN]
Stopping connect
connect is [DOWN]
Stopping kafka-rest
kafka-rest is [DOWN]
Stopping schema-registry
schema-registry is [DOWN]
Stopping kafka
kafka is [DOWN]
Stopping zookeeper
zookeeper is [DOWN]

從上面命令可以看到服務(wù)的啟動(dòng)關(guān)閉都有一定的順序性阱表,不能隨意顛倒可训。

3. 服務(wù)功能介紹

3.1 Zookeeper

Zookeeper是一個(gè)開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個(gè)開源的實(shí)現(xiàn)捶枢,是Hadoop、Hbase飞崖、Storm的重要組件烂叔。

Zookeeper主要功能包含:維護(hù)配置信息、命名固歪、提供分布式同步蒜鸡、組管理等集中式服務(wù) 胯努。

Kafka uses ZooKeeper to store persistent cluster metadata and is a critical component of the Confluent Platform deployment.
https://docs.confluent.io/current/zookeeper/deployment.html

Kafka使用ZooKeeper對(duì)集群元數(shù)據(jù)進(jìn)行持久化存儲(chǔ),是Confluent平臺(tái)部署的關(guān)鍵組件逢防。

如果ZooKeeper丟失了Kafka數(shù)據(jù)叶沛,集群的副本映射關(guān)系以及topic等配置信息都會(huì)丟失,最終導(dǎo)致Kafka集群不再正常工作忘朝,造成數(shù)據(jù)丟失的后果灰署。

想要了解更多Zookeeper信息,可以查看官方鏈接:https://zookeeper.apache.org/

3.2 Kafka

Kafka是一個(gè)分布式流處理平臺(tái)局嘁,最初由Linkedin公司開發(fā)溉箕,是一個(gè)基于zookeeper協(xié)調(diào)并支持分區(qū)和多副本的分布式消息系統(tǒng)。

Kafka最大的特性就是可以實(shí)時(shí)的處理大量數(shù)據(jù)以滿足各種需求場(chǎng)景:比如基于hadoop的批處理系統(tǒng)悦昵、低延遲的實(shí)時(shí)系統(tǒng)肴茄、storm/Spark流式處理引擎、web/nginx日志但指、訪問(wèn)日志寡痰、消息服務(wù)等等。

Kafka用Java和Scala語(yǔ)言編寫棋凳,Linkedin于2010年貢獻(xiàn)給了Apache基金會(huì)并成為頂級(jí)開源項(xiàng)目拦坠。

Apache Kafka? is a distributed streaming platform.
Publish and subscribe to streams of records, similar to a message queue or enterprise messaging system.
Store streams of records in a fault-tolerant durable way.
Process streams of records as they occur.
http://kafka.apache.org/intro

Kafka工作原理是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),消息隊(duì)列中間件贫橙,主要功能是負(fù)責(zé)消息傳輸贪婉,Confluent就是依賴Kafka來(lái)進(jìn)行消息傳輸。

3.3 Kafka-rest

The Confluent REST Proxy provides a RESTful interface to a Kafka cluster, making it easy to produce and consume messages, view the state of thecluster, and perform administrative actions without using the native Kafka protocol or clients.
https://docs.confluent.io/current/kafka-rest/docs/index.html

Confluent提供的Kafka RESTful接口服務(wù)組件卢肃。

可以通過(guò)Restful接口而不是本機(jī)Kafka協(xié)議或客戶端的情況下疲迂,很容易的生成和使用消息,而且還可以查看集群狀態(tài)以及執(zhí)行管理操作。

3.4 Schema-Registry

Schema Registry provides a serving layer for your metadata. Itprovides a RESTful interface for storing and retrieving Avro schemas. It storesa versioned history of all schemas, provides multiple compatibility settingsand allows evolution of schemas according to the configured compatibilitysettings and expanded Avro support.
https://docs.confluent.io/current/schema-registry/docs/index.html

Schema-Registry是為元數(shù)據(jù)管理提供的服務(wù)莫湘,同樣提供了RESTful接口用來(lái)存儲(chǔ)和獲取schemas尤蒿,它能夠保存數(shù)據(jù)格式變化的所有版本,并可以做到向下兼容幅垮。

Schema-Registry還為Kafka提供了Avro格式的序列化插件來(lái)傳輸消息腰池。

Confluent主要用Schema-Registry來(lái)對(duì)數(shù)據(jù)schema進(jìn)行管理和序列化操作。

3.5 Connect

Kafka Connect is a framework for connecting Kafka with external systems such as databases,key-value stores, search indexes, and file systems.Using Kafka Connect you canuse existing connector implementations for common data sources and sinks to move data into and out of Kafka.
https://docs.confluent.io/current/connect/index.html

Kafka Connect是 Kafka的一個(gè)開源組件忙芒,是用來(lái)將Kafka與數(shù)據(jù)庫(kù)示弓、key-value存儲(chǔ)系統(tǒng)、搜索系統(tǒng)呵萨、文件系統(tǒng)等外部系統(tǒng)連接起來(lái)的基礎(chǔ)框架奏属。

通過(guò)使用Kafka Connect框架以及現(xiàn)有的連接器可以實(shí)現(xiàn)從源數(shù)據(jù)讀入消息到Kafka,再?gòu)腒afka讀出消息到目的地的功能潮峦。

Confluent 在Kafka connect基礎(chǔ)上實(shí)現(xiàn)了多種常用系統(tǒng)的connector免費(fèi)讓大家使用囱皿,提供的列表如下:

  • Kafka Connect ActiveMQ Connector
  • Kafka FileStream Connectors
  • Kafka Connect HDFS
  • Kafka Connect JDBC Connector
  • Confluent Kafka Replicator
  • Kafka Connect S3
  • Kafka Connect Elasticsearch Connector
  • Kafka Connect IBM MQ Connector
  • Kafka Connect JMS Connector

這些connector都可以拿來(lái)免費(fèi)使用勇婴,而且Confluent 在GitHub上提供了源碼,可以根據(jù)自身業(yè)務(wù)需求進(jìn)行修改嘱腥。

3.6 ksql-server

KSQL is thestreaming SQL engine for Apache Kafka that you can use to perform streamprocessing tasks using SQL statements.
https://docs.confluent.io/current/streams-ksql.html

KSQL是使用SQL語(yǔ)句對(duì)Apache Kafka執(zhí)行流處理任務(wù)的流式SQL引擎耕渴。

Confluent 使用KSQL對(duì)Kafka的數(shù)據(jù)提供查詢服務(wù).

4. 小結(jié)

以上主要對(duì)Confluent的起源,Confluent Platform的功能齿兔、組成以及相關(guān)服務(wù)進(jìn)行了介紹橱脸。相信大家通過(guò)本文對(duì)Confluent有了初步的認(rèn)識(shí)與了解,這也為后面的實(shí)踐打下了基礎(chǔ)愧驱。

因?yàn)镃onfluent Platform功能龐大慰技,服務(wù)眾多,剛開始用起來(lái)也可能比較迷惑组砚。但好在官網(wǎng)各種文檔比較詳細(xì)吻商,也有相應(yīng)的博客供大家交流,如果有本文還未說(shuō)明的地方糟红,大家也可以到官網(wǎng)進(jìn)一步查閱艾帐。

最后盡請(qǐng)期待接下來(lái)的實(shí)踐篇,下篇將一步步介紹如何搭建出一套高性能的數(shù)據(jù)轉(zhuǎn)移系統(tǒng)盆偿。

如果想獲得更多柒爸,歡迎關(guān)注公眾號(hào):七分熟pizza

公眾號(hào)里我會(huì)分享更多技術(shù)以及職場(chǎng)方面的經(jīng)驗(yàn),大家有什么問(wèn)題也可以直接在公眾號(hào)向我提問(wèn)交流事扭。

qrcode.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捎稚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子求橄,更是在濱河造成了極大的恐慌今野,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罐农,死亡現(xiàn)場(chǎng)離奇詭異条霜,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)涵亏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門宰睡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人气筋,你說(shuō)我怎么就攤上這事拆内。” “怎么了宠默?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵矛纹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我光稼,道長(zhǎng)或南,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任艾君,我火速辦了婚禮采够,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘冰垄。我一直安慰自己蹬癌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布虹茶。 她就那樣靜靜地躺著逝薪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蝴罪。 梳的紋絲不亂的頭發(fā)上董济,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音要门,去河邊找鬼虏肾。 笑死,一個(gè)胖子當(dāng)著我的面吹牛欢搜,可吹牛的內(nèi)容都是我干的封豪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼炒瘟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼吹埠!你這毒婦竟也來(lái)了干茉?” 一聲冷哼從身側(cè)響起毙驯,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤回右,失蹤者是張志新(化名)和其女友劉穎供璧,沒(méi)想到半個(gè)月后妇穴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熏迹,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡船响,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年膜宋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了受啥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片做个。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖滚局,靈堂內(nèi)的尸體忽然破棺而出居暖,到底是詐尸還是另有隱情,我是刑警寧澤藤肢,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布太闺,位于F島的核電站,受9級(jí)特大地震影響嘁圈,放射性物質(zhì)發(fā)生泄漏省骂。R本人自食惡果不足惜蟀淮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望钞澳。 院中可真熱鬧怠惶,春花似錦、人聲如沸轧粟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)兰吟。三九已至通惫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間混蔼,已是汗流浹背履腋。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拄丰,地道東北人府树。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像料按,于是被迫代替她去往敵國(guó)和親奄侠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355