数据库实时转移之Confluent介绍(一)
1.背景
最近研究了數據庫實時轉移的方案,目的是要把數據庫中某些表的指定數據實時的轉移到別的數據庫中。
這與平時了解的數據庫備份概念不同,數據庫備份是對全庫數據進行復制,永許有一定的延時。而本次研究的是對數據過濾后實時的轉移,延遲時間要控制到毫秒級。
在調研的過程中了解到Confluent平臺可以很好的實現這個功能,于是開始逐步深入探究其使用方法和工作原理。
但在實踐的過程中發現國內用此平臺的不多,這方面的資料非常之少,都是些只言片語的介紹,并沒有一個實踐的教程。
各種資料搜索下來,發現唯一的途徑只能通過官網去學習,但是官網都是英文文檔,對于英語不好的人學習起來更是吃力。
最后本人通過對官網文檔的翻譯,以及一些源碼的閱讀,最終成功搭建了一套實時數據轉移系統,運行結果也比較穩定,滿足了實際需求。
在此我也把這次的學習、實踐成果分享出來,供需要的人參考,避免后來人走一些彎路。
2.Confluent初探
Confluent 官網資料很多,本章主要對一些必要的概念或者是和本實驗有關的東西進行重點講解。
2.1 Confluent Platform功能
說起Kafka相信大家很多人都知道,知道是一個高吞吐量的分布式發布訂閱消息系統,國內很多公司也在用,但對于Confluent大家可能相對了解的較少。
Confluent是一家創業公司,由當時編寫Kafka的幾位程序員從Linked In公司離職后創立的,Confluent Platform 就是Confluent公司的主要產品,其平臺實現主要依賴的就是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. docs.confluent.io/current/get…
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. docs.confluent.io/current/pla…
上面兩段話翻譯過了就是:
Confluent是用來管理和組織不同數據源的流媒體平臺,可以實時地把不同源和位置的數據集成到一個中心的事件流平臺。而且還強調了這個平臺很可靠、性能很高,總之就是很好用,很強大。
下面的圖形象說明了Confluent可以實現的功能。
2.2 Confluent Platform組成
Confluent目前提供了社區版和商業版兩個版本,社區版永久免費,商業版面向企業收費。
社區版提供了Connectors、REST Proxy、KSQL、Schema-Registry等基礎服務。
商業版為企業提供了控制面板、負載均衡,跨中心數據備份、安全防護等高級特性。
2.3 社區版功能介紹
通過對兩個版本功能的比對,發現社區版已經能滿足我們的要求,因此本文后面都以社區版來進行研究。
下載鏈接:www.confluent.io/download/
解壓下載的社區版本包,包含以下文件夾:
各文件目錄功能描述如下: 通過查看bin和etc目錄發現每個組件都互相獨立,都有各自的啟動/停止腳本以及相應的配置文件,可以對各項服務進行靈活的配置。2.4 confluent命令
Confluent提供了多種命令來對confluent平臺進行管理監控,命令列表及描述如下:
上面的命令介紹都比較簡單,相信大家基本都能看懂,此處也不再一一介紹。這里主要提一下我們最可能最常用到confluent start ,confluent stop 兩個命令,這兩個命令分別用來啟動和停止相應的服務以及依賴的所有服務項。
start命令如果不帶參數會把相關服務按順序啟動,stop會逆序把各服務停止。
執行start命令:
confluent start 復制代碼結果如下,[UP]表示該服務啟動成功:
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] 復制代碼執行stop命令:
confluent stop 復制代碼結果如下,[DOWN]表示該服務停止成功:
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] 復制代碼從上面命令可以看到服務的啟動關閉都有一定的順序性,不能隨意顛倒。
3. 服務功能介紹
3.1 Zookeeper
Zookeeper是一個開放源碼的分布式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop、Hbase、Storm的重要組件。
Zookeeper主要功能包含:維護配置信息、命名、提供分布式同步、組管理等集中式服務 。
Kafka uses ZooKeeper to store persistent cluster metadata and is a critical component of the Confluent Platform deployment. docs.confluent.io/current/zoo…
Kafka使用ZooKeeper對集群元數據進行持久化存儲,是Confluent平臺部署的關鍵組件。
如果ZooKeeper丟失了Kafka數據,集群的副本映射關系以及topic等配置信息都會丟失,最終導致Kafka集群不再正常工作,造成數據丟失的后果。
想要了解更多Zookeeper信息,可以查看官方鏈接:zookeeper.apache.org/
3.2 Kafka
Kafka是一個分布式流處理平臺,最初由Linkedin公司開發,是一個基于zookeeper協調并支持分區和多副本的分布式消息系統。
Kafka最大的特性就是可以實時的處理大量數據以滿足各種需求場景:比如基于hadoop的批處理系統、低延遲的實時系統、storm/Spark流式處理引擎、web/nginx日志、訪問日志、消息服務等等。
Kafka用Java和Scala語言編寫,Linkedin于2010年貢獻給了Apache基金會并成為頂級開源項目。
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. kafka.apache.org/intro
Kafka工作原理是一種高吞吐量的分布式發布訂閱消息系統,消息隊列中間件,主要功能是負責消息傳輸,Confluent就是依賴Kafka來進行消息傳輸。
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. docs.confluent.io/current/kaf…
Confluent提供的Kafka RESTful接口服務組件。
可以通過Restful接口而不是本機Kafka協議或客戶端的情況下,很容易的生成和使用消息,而且還可以查看集群狀態以及執行管理操作。
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. docs.confluent.io/current/sch…
Schema-Registry是為元數據管理提供的服務,同樣提供了RESTful接口用來存儲和獲取schemas,它能夠保存數據格式變化的所有版本,并可以做到向下兼容。
Schema-Registry還為Kafka提供了Avro格式的序列化插件來傳輸消息。
Confluent主要用Schema-Registry來對數據schema進行管理和序列化操作。
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. docs.confluent.io/current/con…
Kafka Connect是 Kafka的一個開源組件,是用來將Kafka與數據庫、key-value存儲系統、搜索系統、文件系統等外部系統連接起來的基礎框架。
通過使用Kafka Connect框架以及現有的連接器可以實現從源數據讀入消息到Kafka,再從Kafka讀出消息到目的地的功能。
Confluent 在Kafka connect基礎上實現了多種常用系統的connector免費讓大家使用,提供的列表如下:
- 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都可以拿來免費使用,而且Confluent 在GitHub上提供了源碼,可以根據自身業務需求進行修改。
3.6 ksql-server
KSQL is thestreaming SQL engine for Apache Kafka that you can use to perform streamprocessing tasks using SQL statements. docs.confluent.io/current/str…
KSQL是使用SQL語句對Apache Kafka執行流處理任務的流式SQL引擎。
Confluent 使用KSQL對Kafka的數據提供查詢服務.
4. 小結
以上主要對Confluent的起源,Confluent Platform的功能、組成以及相關服務進行了介紹。相信大家通過本文對Confluent有了初步的認識與了解,這也為后面的實踐打下了基礎。
因為Confluent Platform功能龐大,服務眾多,剛開始用起來也可能比較迷惑。但好在官網各種文檔比較詳細,也有相應的博客供大家交流,如果有本文還未說明的地方,大家也可以到官網進一步查閱。
最后盡請期待接下來的實踐篇,下篇將一步步介紹如何搭建出一套高性能的數據轉移系統。
想要了解更多,關注公眾號:七分熟pizza
總結
以上是生活随笔為你收集整理的数据库实时转移之Confluent介绍(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux基础命令---lpr
- 下一篇: Apache Kylin v2.6.1