数据库中间件
文章平均质量分 92
数据库中间件
猎户星座。
花有重开日,人无再少年。
展开
-
异地多活场景下的数据同步之道
在当今互联网行业,大多数人互联网从业者对"单元化"、"异地多活"这些词汇已经耳熟能详。而数据同步是异地多活的基础,所有具备数据存储能力的组件如:数据库、缓存、MQ等,数据都可以进行同步,形成一个庞大而复杂的数据同步拓扑。本文将先从概念上介绍单元化、异地多活、就近访问等基本概念。之后,将以数据库为例,讲解在数据同步的情况下,如何解决数据回环、数据冲突、数据重复等典型问题。1 什么是单元化如果仅仅从"单元化”这个词汇的角度来说,我们可以理解为将数据划分到多个单元进行存储。"单元"是一个抽象的概念,.转载 2022-01-25 11:09:35 · 1732 阅读 · 0 评论 -
Canal源码分析之driver模块
7.0 driver模块2018-11-10 22:30:19 5,948 4 driver,顾名思义为驱动。熟悉jdbc编程的同学都知道,当项目中需要操作数据库(oracle、sqlserver、mysql等)时,都需要在项目中引入对应的数据库的驱动。以mysql为例,我们需要引入的是mysql-connector-java这个jar包,通过这个驱动包来与数据库进行通信。那么为什么canal不使用mysql官方提供的驱动包,而要自己编写一个driver模块?原因在于mysql-connect转载 2022-01-25 11:06:47 · 423 阅读 · 0 评论 -
Canal源码分析之filter模块
1 Filter模块简介 filter模块用于对binlog进行过滤。在实际开发中,一个mysql实例中可能会有多个库,每个库里面又会有多个表,可能我们只是想订阅某个库中的部分表,这个时候就需要进行过滤。也就是说,parser模块解析出来binlog之后,会进行一次过滤之后,才会存储到store模块中。 过滤规则的配置既可以在canal服务端进行,也可以在客户端进行。1.1 服务端配置 我们在配置一个canal instance时,在instance...转载 2022-01-25 11:05:24 · 6599 阅读 · 0 评论 -
Cannal掩码分析之store模块
1 store模块简介 store模块用于binlog事件的存储 ,目前开源的版本中仅实现了Memory内存模式。官方文档中提到"后续计划增加本地file存储,mixed混合模式”,这句话大家不必当真,从笔者最开始接触canal到现在已经几年了,依然没有动静,好在Memory内存模式已经可以满足绝大部分场景。 store模块目录结构如下,该模块的核心接口为CanalEventStore:以下是相关类图:其中MemoryEventStoreWithBuff...转载 2022-01-25 11:03:46 · 466 阅读 · 0 评论 -
Canal源码分析之instance模块
在上一节server模块源码分析中,我们提到CanalServerWithNetty封装了一层网络请求协议,将请求委派给CanalServerWithEmbedded处理。CanalServerWithEmbedded会根据请求携带的destination参数,选择对应的CanalInstance来真正的处理请求。这正是一步一步抽丝剥茧的过程,在本节中,我们将要分析CanalInstance的源码。1 CanalInstance源码概览CanalInstance相关代码位于canal源码的insta转载 2022-01-25 10:57:19 · 662 阅读 · 0 评论 -
Canal源码分析之server模块
server模块的核心接口是CanalServer,其有2个实现类CanalServerWithNetty、CanalServerWithEmbeded。关于CanalServer,官方文档中有有以下描述: 下图是笔者对官方文档的进一步描述:左边的图表示的是Canal独立部署。不同的应用通过canal client与canal server进行通信,所有的canal client的请求统一由CanalServerWithNetty接受,之后CanalServerWithNetty会将客.转载 2022-01-25 10:55:12 · 693 阅读 · 0 评论 -
Canal源码分析deployer模块
canal有两种使用方式:1、独立部署 2、内嵌到应用中。 deployer模块主要用于独立部署canal server。关于这两种方式的区别,请参见server模块源码分析。deployer模块源码目录结构如下所示:在独立部署canal时,需要首先对canal的源码进行打包mvncleaninstall-Dmaven.test.skip-Denv=release 以本教程使用1.0.24版本为例,打包后会在target目录生成一个以下两个文件:其中canal.deploy...转载 2022-01-25 10:52:29 · 1334 阅读 · 0 评论 -
Canal源码分析简介
canal是阿里巴巴开源的mysql数据库binlog的增量订阅&消费组件。项目github地址为:https://github.com/alibaba/canal。本教程是从源码的角度来分析canal,适用于对canal有一定基础的同学。本教程使用的版本是1.0.24,这也是笔者写这篇教程时的最新稳定版,关于canal的基础知识可以参考:https://github.com/alibaba/canal/wiki。下载项目源码下载gitclonehttps://github.co..转载 2022-01-25 10:46:28 · 887 阅读 · 0 评论 -
MyCat简介与实践
MyCat简介MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理(类似于Mysql Proxy),用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他...原创 2020-04-18 22:30:13 · 612 阅读 · 0 评论