- 博客(456)
- 收藏
- 关注
原创 03 Maxwell
Maxwell是由美国Zendesk开源,使用Java编写的MySQL实时抓取工具,可以实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。它设计的初衷是实时采集Mysql数据到Kafka。支持全表load数据,支持自动断点还原,支持按照列将数据发送到Kafka不同分区。
2024-08-08 18:09:13 660
原创 03 Canal HA原理及安装
Canal一般用于实时同步数据场景,那么对于实时场景HA显得尤为重要,Canal支持HA搭建,canal的HA分为两部分,canal server和canal client分别有对应的HA实现。将Canal安装包上传到node3,node4,并解压到“/software/canal”目录下,修改“/software/canal/conf”下的canal.properties文件,加上zookeeper配置。zookeeper地址:node3:2181,node4:2181,node5:2181。
2024-08-08 17:45:17 1017
原创 02 Canal的安装&使用
首先需要在Canal中配置CanalServer 对应的canal.properties,这个文件中主要配置Canal对应的同步数据实例(Canal Instance)位置信息及数据导出的模式,例如:我们需要将某个mysql中的数据同步到Kafka中,那么就可以创建一个“数据同步实例”,导出到Kafka就是一种模式。基于get获取的batchId进行提交,避免误操作。data:最新的数据,为JSON数组,如果是插入则表示最新插入的数据,如果是更新,则表示更新后的最新数据,如果是删除,则表示被删除的数据。
2024-08-08 17:00:05 1074
原创 01. 实时数据同步工具
Canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 触发器获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x。
2024-07-31 15:26:47 335
原创 8 排序&分页&高亮
search after方式: 分页时候需要排序,原理是从上一次的排序值开始。es默认情况下,只返回top10条数据,而如果需要查询更多的数据就需要设置分页参数,from,size。es的查询限制,是10000条,如果需要大于10000,实际生产环境会从业务上限制在10000条数据.scroll: 滚动读取,读的数据是快照方式,意味着读取的数据不是最新的,官方不推荐。高亮查询的时候,肯定不是match_all。注意: 分页并不是es所擅长的。
2024-06-24 00:43:55 190
原创 6 DSL_03地理信息查询&相关性算分
复合查询:将简单查询进行组合,实现更复杂的搜索逻辑,例如:function score: 算分函数查询,可以控制文档相关性算分,控制文档排名,例如百度竞价。使用,function score query,修改文档的相关性算分,根据新得到的算分排序。
2024-06-23 16:03:20 205
原创 4. DSL入门_01
之前在定义mappings的时候,定义了多个字段检索的条件all,因此使用brand检索,也是可以检索出数据的。搜出结果,建议使用all的方式,不建议使用multi_match的方式。分词检索,将搜索词进行分词,然后查询出2条数据。(2.1)重新导入数据,整合地理坐标。
2024-06-23 14:58:54 424
原创 2. 数据结构分析即索引库的crud
put /hotel//id需要进行crud操作,但是不需要分词"id":{},//需要进行检索,也需要进行分词"name":{},//地址不需要检索},//需要参与检索"price":{},//需要参与检索"score":{},//需要参与检索"brand":{},"city":{},},},//需要参与检索,地理信息类型的数据},"pic":{},"all":{
2024-06-23 12:38:30 279
原创 10 Hadoop的安全模式及权限介绍
到达block的末端时,DFSInputSream关闭与该datanode的连接,然后寻找下一个block的最佳datanode。列表中的datanode会形成管线,DataStreamer将数据包发送给管线中的第一个datanode,第一个datanode将接收到的数据发送给第二个datanode,第二个发送给第三个。b)为存储在另一正常datanode的当前数据块指定一个新的标志,并将该标志传送给namenode,以便故障datanode在恢复后可以删除存储的部分数据块。
2024-01-21 11:10:14 1130
原创 48 分布式id的生成策略
这种方式在单个数据库的场景中是可以这样做的,但如果是在分库分表的环境下。因为ID要唯一,但是分表分库后只能保证一个表中的ID的唯一,而不能保证整体的ID唯一。UUID 是由一组32位数的16进制数字所构成,以连字号分隔的五组来显示,形式为 8-4-4-4-12,总共有 36个字符(即三十二个英数字母和四个连字号)。单点数据库方式存在明显的性能问题,可以对数据库进行优化,担心一个主节点挂掉没法使用,可以选择做双主模式集群,也就是两个MySQL实例都能单独生产自增的ID。在高并发情况下无能为力。
2024-01-16 10:34:29 703
原创 3 Mycat读写分离实现
基于Mysql主从复制,我们通过Mycat,能够实现读写分离,即master主服务器实现写操作(insert,update,delete等),salve从服务器实现读操作(select等)主服务器一旦有写入操作,从服务器通过读取binlog,来实现数据同步;Mycat也时时发送心跳包来检测mysql服务器是否可用;
2023-12-12 15:58:32 130
原创 2 Mycat2 安装与启动
优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)。以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。
2023-12-12 10:54:32 327
原创 1. Mycat2应用与实战
1、mycat介绍Mycat 是一个开源的分布式数据库系统,但是由于真正的数据库需要存储引擎,而 Mycat 并没有存 储引擎,所以并不是完全意义的分布式数据库系统。MyCat是目前最流行的基于Java语言编写的数据库中间件,也可以理解为是数据库代理。在架构体系中是位于数据库和应用层之间的一个组件,并且对于应用层是透明的,即数据库 感受不到mycat的存在,认为是直接连接的mysql数据库(实际上是连接的mycat,mycat实现了mysql的原生协议)。MyCat是基于阿里开源的Cobar产品而
2023-12-11 20:01:12 265
原创 20 Redis进阶 - 运维监控
redis_exporter在新窗口打开为Prometheus提供了redis指标的exporter,支持Redis 2.x, 3.x, 4.x, 5.x, and 6.x,配合Prometheus以及grafana的Prometheus Redis插件,可以在grafana进行可视化及监控。是一个比较有名的redis指标可视化的监控工具,采用ruby开发,基于redis的info和monitor命令来统计,不影响redis性能。采用python开发的redis的可视化及查询分析工具。
2023-12-10 17:44:43 280
原创 19 redis缓存数据同步问题
由于缓存不命中,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,缓存就没有意义了。的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。,而查询数据量巨大,引起数据库压力过大甚至down机。
2023-12-10 11:18:06 110
原创 17 redis集群方案
Redis Cluster在以下场景下集群总是可用:大部分master节点可用,并且对少部分不可用的master,每一个master至少有一个当前可用的slave。更进一步,通过使用 replicas migration 技术,当前没有slave的master会从当前拥有多个slave的master接受到一个新slave来确保可用性。而在(网络)分区故障下,对少数派master的写入,发生写丢失的时间窗会很大。为了解决单机内存,并发等瓶颈,可使用此方案解决问题.这里的集群是指多主多从,不是一主多从。
2023-11-24 16:00:15 261
原创 14 redis全量复制与部分复制
执行复制的双方,主从节点,分别会维护一个复制偏移量offset: 主节点每次向从节点同步了N字节数据后,将修改自己的复制偏移量offset+N 从节点每次从主节点同步了N字节数据后,将修改自己的复制偏移量offset+N。在数据同步之后,由于主节点不断的接受到写入命令,主从节点进入命令传播阶段,主节点将自己执行的写命令发送给从节点,从节点接收命令并执行,从而保证主从节点数据的一致性。在主节点进行命令传播时,不仅会将写命令同步到从节点,还会将写命令写入复制积压缓冲区。主从复制的开启,完全是在从节点发起的。
2023-11-23 22:42:13 430
原创 10 Redis的持久化
bgsave: 一般情况下不会阻塞主线程,原因是会创建一个子进程,单独取创建一个RDB的dump文件,save: 使用save的方式会阻塞主线程,影响redis的性能。上图中的配置,后台使用的bgsave命令,save只是一个摆设。配置文件中开启aof。
2023-11-20 21:33:47 266
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人