分布式实时搜索系统及方法技术方案

技术编号:37322978 阅读:8 留言:0更新日期:2023-04-21 23:02
本发明专利技术公开了一种分布式实时搜索系统及方法,属于分布式数据收集处理技术领域,本发明专利技术要解决的技术问题为如何实现数据同步高可用,减少业务耦合和代码入侵,轻松完成数据检索,采用的技术方案为:该系统包括服务注册端、服务端、消息端及客户端。该方法具体如下:开启MySQL的binary log日志记录;修改MySQL的binary log模式为ROW;canal

【技术实现步骤摘要】
分布式实时搜索系统及方法


[0001]本专利技术涉及分布式数据收集分析处理
,具体地说是一种分布式实时搜索系统及方法。

技术介绍

[0002]一个系统最重要的是数据,数据是保存在数据库里。但是很多时候不单止要保存在数据库中,还要同步保存到Elastic Search、HBase、Redis等等。拿ES举例,由于Mysql对全文检索或模糊查询支持的能力不强,需要将数据发送到搜索引擎(如ES)上,由搜索引擎来提供专业的服务。在实践中常用的方式具体有:
[0003]①
、同步双写:将数据写到Mysql的同时也将数据写到ES;
[0004]②
、异步双写:引入MQ异步将数据写入ES;
[0005]同步双写和异步双写这两种方案存在硬编码,业务耦合性强,也就是有任何对Mysql进行增删改查的地方要么植入ES代码,要么替换为MQ代码,代码的侵入性太强,双写存在数据丢失的风险,本来Mysql的性能不是很高,再加一个ES,系统的性能必然会下降,系统中增加了MQ的代码,也增加了复杂度。如果实时性要求不高的话也可以采用定时器来处理:数据库的相关表中增加一个字段为timestamp的字段,任何crud操作都会导致该字段的时间发生变化,加一个定时器程序,让该程序按一定的时间周期扫描指定的表,把该时间段内发生变化的数据提取出来,逐条写入到ES中。这样虽然解决了上面两种方案的问题但是时效性较差,定时器工作周期不可能设置到秒级,对数据库的轮询也有一定压力。
[0006]分布式系统中会对一些业务数据进行大量的查询和筛选,面对读多写少的情况,显然只通过DB来支撑大量的查询是不可取的,同时对于复杂的查询Mysql等数据库支持的不够友好,所以需要一套完整的系统来承载数据查询的主要压力。故如何实现数据同步高可用,减少业务耦合和代码入侵,轻松完成数据检索是目前亟待解决的技术问题。

技术实现思路

[0007]本专利技术的技术任务是提供一种分布式实时搜索系统及方法,来解决针对大量数据查询和筛选的环境,现有系统承载能力不足的问题。
[0008]本专利技术的技术任务是按以下方式实现的,一种分布式实时搜索系统,该系统包括服务注册端、服务端、消息端及客户端;其中,服务注册端用于实现集群统一管理;服务端用于监听收集数据变动信息;消息端用于推送数据信息到客户端;客户端用于统一消费对接业务处理。
[0009]作为优选,所述服务注册端通过canal

server和canal

adapter采用多节点部署的方式提高可用性,使用ZooKeeper进行集群管理。
[0010]更优地,canal

server的安装具体如下:
[0011]直接下载安装包或者下载源码自己打包,将下载好的文件移动到自定义的安装路径,修改配置文件vi/opt/app/canal/canal_server/conf/canal.prop erties,配置多个
destination,并在conf下创建对应的目录,在对应的目录下边编写配置文件instance.properties,进入到路径bin下边,有几个脚本,运行./startup.sh即可启动。
[0012]更优地,canal

server配置说明具体如下:
[0013]canal.instance.master.journal.name+canal.instance.master.posit ion:精确指定一个binlog位点,进行启动;
[0014]canal.instance.master.timestamp:指定一个时间戳,canal自动遍历mysql binlog,找到对应时间戳的binlog位点后,进行启动;
[0015]不指定任何信息:默认从当前数据库的位点,进行启动;
[0016]instance.xml配置文件;
[0017]memory

instance.xml:所有的组件(parser,sink,store)均选择内存版模式,记录位点均选择memory模式,重启后又会回到初始位点进行解析;
[0018]default

instance.xml:store选择内存模式,其余的parser/sink依赖的位点管理选择了持久化模式,目前持久化的方式是写入zookeeper,保证数据集群共享;
[0019]group

instance.xml:针对需要进行多库合并时,将多个物理instance合并为一个逻辑instance,提供客户端访问;
[0020]多个destination配置;
[0021]在canal.properties里边配置canal.destinations,用英文逗号分隔;
[0022]在conf路径下创建对应的路径并添加对应的instance.properties。
[0023]更优地,canal

adapter的安装具体如下:
[0024]下载安装包并解压,修改conf/application.yml,在conf/es/路径下添加配置文件example_01.yml和example_02.yml,一份数据被多个group同时消费,多个group之间会是一个并行执行,一个group内部是一个串行执行多个outerAdapters,进入到路径bin下边,有几个脚本,运行./startup.sh即可启动。
[0025]作为优选,所述服务端的工作过程具体如下:
[0026](1)、配置Mysql开启MySQL的binary log日志记录,并选择模式为Row;
[0027]MySQL master将数据变更写入二进制日志(binary log,其中记录叫做二进制日binary log events,可以通过show binlog events进行查看);
[0028](2)、MySQL slave将master的binary log events拷贝到对应的中继日志relay log;
[0029](3)、MySQL slave重放relay log中事件,将数据变更反映自己的数据;
[0030](4)、canal

server充当MySQL集群的一个slave,获取master的binary log信息;
[0031](5)、canal模拟MySQL slave的交互协议,伪装自己为MySQL slave,向MySQL master发送dump协议;
[0032](6)、MySQL master收到dump请求,开始推送binary log给slave,即canal;
[0033](7)、canal解析binary log对象(原始为byte流);
[0034](8)、canal

本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式实时搜索系统,其特征在于,该系统包括服务注册端、服务端、消息端及客户端;其中,服务注册端用于实现集群统一管理;服务端用于监听收集数据变动信息;消息端用于推送数据信息到客户端;客户端用于统一消费对接业务处理。2.根据权利要求1所述的分布式实时搜索系统,其特征在于,所述服务注册端通过canal

server和canal

adapter采用多节点部署的方式提高可用性,使用ZooKeeper进行集群管理。3.根据权利要求2所述的分布式实时搜索系统,其特征在于,canal

server的安装具体如下:直接下载安装包或者下载源码自己打包,将下载好的文件移动到自定义的安装路径,修改配置文件vi/opt/app/canal/canal_server/conf/canal.prop erties,配置多个destination,并在conf下创建对应的目录,在对应的目录下边编写配置文件instance.properties,进入到路径bin下边,运行./start up.sh即可启动。4.根据权利要求2或3所述的分布式实时搜索系统,其特征在于,canal

server配置说明具体如下:canal.instance.master.journal.name+canal.instance.master.posit ion:精确指定一个binlog位点,进行启动;canal.instance.master.timestamp:指定一个时间戳,canal自动遍历m ysql binlog,找到对应时间戳的binlog位点后,进行启动;不指定任何信息:默认从当前数据库的位点,进行启动;instance.xml配置文件;memory

instance.xml:所有的组件均选择内存版模式,记录位点均选择memory模式,重启后又会回到初始位点进行解析;default

instance.xml:store选择内存模式,其余的parser/sink依赖的位点管理选择了持久化模式,目前持久化的方式是写入zookeeper,保证数据集群共享;group

instance.xml:针对需要进行多库合并时,将多个物理instance合并为一个逻辑instance,提供客户端访问;多个destination配置;在canal.properties里边配置canal.destinations,用英文逗号分隔;在conf路径下创建对应的路径并添加对应的instance.properties。5.根据权利要求2所述的分布式实时搜索系统,其特征在于,canal

adapter的安装具体如下:下载安装包并解压,修改conf/application.yml,在conf/es/路径下添加配置文件example_01.yml和example_02.yml,一份数据被多个group同时消费,多个group之间会是一个并行执行,一个group内部是一个串行执行多个outerAdapters,进入到路径bin下边,运行./startup.sh即可启动。6.根据权利要求1所述的分布式实时搜索系统,其特征在于,所述服务端的工作过程具体如下:(1)、配置Mysql开启MySQL的binarylog日志记录,并选择模式为Row;MySQL master将数据变更写入二进制日志;
(2)、MySQL slave将master的binary log events拷贝到对应的中继日志relay log;(3)、MySQL slave重放relaylog中事件,将数据变更反映自己的数据;(4)、canal

server充当MySQL集群的一个slave,获取master的binary log信息;(5)、canal模拟MySQL slave的交互协议,伪装自己为MySQL slav...

【专利技术属性】
技术研发人员:孙志强左鹏王禹博徐士强
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1