数据库实时转移之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.
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

上面两段话翻译过了就是:

Confluent是用来管理和组织不同数据源的流媒体平台,可以实时地把不同源和位置的数据集成到一个中心的事件流平台。而且还强调了这个平台很可靠、性能很高,总之就是很好用,很强大。

下面的图形象说明了Confluent可以实现的功能。


数据流

2.2 Confluent Platform组成

Confluent目前提供了社区版和商业版两个版本,社区版永久免费,商业版面向企业收费。

社区版提供了Connectors、REST Proxy、KSQL、Schema-Registry等基础服务。

商业版为企业提供了控制面板、负载均衡,跨中心数据备份、安全防护等高级特性。

2.3 社区版功能介绍

通过对两个版本功能的比对,发现社区版已经能满足我们的要求,因此本文后面都以社区版来进行研究。

下载链接:https://www.confluent.io/download/

解压下载的社区版本包,包含以下文件夹:


安装包结构

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


目录功能

通过查看bin和etc目录发现每个组件都互相独立,都有各自的启动/停止脚本以及相应的配置文件,可以对各项服务进行灵活的配置。

2.4 confluent命令

Confluent提供了多种命令来对confluent平台进行管理监控,命令列表及描述如下:


命令列表

上面的命令介绍都比较简单,相信大家基本都能看懂,此处也不再一一介绍。

这里主要提一下我们最可能最常用到confluent start <service>,confluent stop <service>两个命令,这两个命令分别用来启动和停止相应的服务以及依赖的所有服务项。

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.
https://docs.confluent.io/current/zookeeper/deployment.html

Kafka使用ZooKeeper对集群元数据进行持久化存储,是Confluent平台部署的关键组件。

如果ZooKeeper丢失了Kafka数据,集群的副本映射关系以及topic等配置信息都会丢失,最终导致Kafka集群不再正常工作,造成数据丢失的后果。

想要了解更多Zookeeper信息,可以查看官方链接:https://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.
http://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.
https://docs.confluent.io/current/kafka-rest/docs/index.html

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.
https://docs.confluent.io/current/schema-registry/docs/index.html

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.
https://docs.confluent.io/current/connect/index.html

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.
https://docs.confluent.io/current/streams-ksql.html

KSQL是使用SQL语句对Apache Kafka执行流处理任务的流式SQL引擎。

Confluent 使用KSQL对Kafka的数据提供查询服务.

4. 小结

以上主要对Confluent的起源,Confluent Platform的功能、组成以及相关服务进行了介绍。相信大家通过本文对Confluent有了初步的认识与了解,这也为后面的实践打下了基础。

因为Confluent Platform功能庞大,服务众多,刚开始用起来也可能比较迷惑。但好在官网各种文档比较详细,也有相应的博客供大家交流,如果有本文还未说明的地方,大家也可以到官网进一步查阅。

最后尽请期待接下来的实践篇,下篇将一步步介绍如何搭建出一套高性能的数据转移系统。

如果想获得更多,欢迎关注公众号:七分熟pizza

公众号里我会分享更多技术以及职场方面的经验,大家有什么问题也可以直接在公众号向我提问交流。

qrcode.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350