
中间件
文章平均质量分 59
Linda L
这个作者很懒,什么都没留下…
展开
-
分库分表后,跨库查询和分布式事务解决方案
分库分表主要是为了解决单库单表的性能瓶颈,但拆分后数据分散在不同库和表中,这就导致了跨库查询和分布式事务的问题。原创 2025-03-23 23:40:12 · 921 阅读 · 0 评论 -
分区表的应用场景与优化实践
当表的数据量非常大,达到几千万甚至上亿行时,全表扫描会很慢,这时候分区可以帮助缩小扫描范围。比如,在一个电商系统中,订单表可能按月份分区,这样查询某个月的订单时,只需要扫描对应的分区,而不是整个表。或者在日志系统中,按天分区,方便归档和删除旧日志。另外,如果数据有明显的分区键,比如时间字段,按时间分区可以方便地管理历史数据,比如删除旧数据时直接删除整个分区,效率更高。当然,分区键的选择不当可能导致性能问题,或者分区过多带来的管理复杂性。分区表是将一个大表分成多个较小的、更易管理的部分,每个部分称为一个原创 2025-03-23 20:05:12 · 697 阅读 · 0 评论 -
Canal同步延迟和数据丢失优化方案
Canal是通过解析MySQL的binlog来获取数据变更事件的,然后将这些变更事件发送到下游,比如Redis。在同步的过程中需要解决实时性和一致性的问题。首先,实时性方面,可能涉及到Canal本身的处理速度,比如是否及时解析binlog,以及下游处理的速度,比如Redis写入是否够快。此外,网络延迟也是一个因素。一致性方面,可能需要确保数据变更的顺序正确,以及事务的原子性,比如一个事务内的多个操作是否被正确处理。原创 2025-03-23 17:29:05 · 1106 阅读 · 0 评论 -
雪花算法生成分布式唯一ID
雪花算法的结构是由时间戳、工作机器ID和序列号构成。要确保全局唯一,必须保证每个节点的机器ID唯一,并且同一毫秒内序列号不重复。在分库分表的环境下使用雪花算法,机器ID的分配是关键。常见的做法是通过分布式系统协调,比如使用ZooKeeper或者数据库来分配唯一的机器ID,在启动时从外部服务获取ID,并持久化存储,防止重启后ID变化。另外,时间戳部分需要保证各节点的时钟同步,否则可能出现时间不一致导致ID冲突。原创 2025-03-23 10:40:38 · 1176 阅读 · 0 评论 -
RabbitMQ Server 环境配置中的一些坑
RabbitMQ的服务端基于Erlang语言编写,要在机器上安装RabbitMQ必须先搞好Erlang环境。如果没配置好Erlang环境,直接运行RabbitMQ官网上的exe文件,会弹框提示你先装好Erlang环境。也就是如果机器上没配好Erlang环境,RabbitMQ的服务端是启动不起来的。除此之外,不同JDK版本对应的Erlang和RabbitMQ Server的版本也会有所不同。如果是JD原创 2017-02-19 16:41:33 · 11310 阅读 · 2 评论 -
RabbitMQ消息队列实现流程
首先通过ConnectionFactory配置消息队列服务端信息,mq server端涉及的配置信息主要有server端的地址、端口号、虚拟主机(安装完有个默认的是”/”)、用户名、密码(刚安装完有个默认的用户,用户名和密码都是guest)笔者的项目是用SpringBoot搭的,获取ConnectionFactory的方式为 @Bean public ConnectionFactory原创 2017-03-03 17:16:42 · 2577 阅读 · 1 评论 -
linux部署rocketmq
获取rocketmq二进制文件安装包wget https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.3.0/rocketmq-all-4.3.0-bin-release.zipunzip rocketmq-all-4.3.0-bin-release.zip添加环境变量 vi /etc/profile export NAMES...原创 2018-09-20 20:00:39 · 761 阅读 · 0 评论 -
RocketMQ开发环境部署
下载rocketmq源码包:https://github.com/apache/rocketmq/releases。目前最新的是4.3.0版本的,下载得到rocketmq-all-4.3.0-source-release.zip。unzip rocketmq-all-4.3.0-source-release.zipcd rocketmq-all-4.3.0/mvn -Prelease-al...原创 2018-09-20 20:00:51 · 959 阅读 · 0 评论 -
org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, mail-send
排查了几种情况最后确定是版本的问题,服务端部的是目前最新的4.8.0,而maven引的rocketmq-clients是4.3.0,升级工程依赖解决原创 2021-03-24 13:44:41 · 1179 阅读 · 0 评论 -
org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout
ff原创 2021-03-24 15:49:08 · 813 阅读 · 0 评论 -
org.apache.rocketmq.client.exception.MQBrokerException: CODE: 1 DESC: the producer group[] not exist
如果生产者发送完调用了producer.shutdown();,mq会移除生产者组,在控制台查看Producer列表,看到的提示找不到生产者组的报错本地测试可以注释调producer.shutdown();就可以在控制台正常看到如下生产者组,生产环境不能注释...原创 2021-03-24 16:05:35 · 11489 阅读 · 5 评论 -
Jedis使用示例
Jedis 是 Redis 官方首选的 Java 客户端开发包。工作过程总结的一个示例,贴出来,如下:Java代码 package com.wujintao.redis; import java.util.Date; import java.util.HashMap; import java.util.Iterator; i转载 2015-11-13 14:56:28 · 658 阅读 · 0 评论 -
redis jedis
本文转载自:http://blog.youkuaiyun.com/dzl84394/article/details/9213555,略有修改pom.xml添加jedis的包 redis.clients jedis 2.1.0 先来一段测试demopublic class TestJedis { //redis服务器主机 static Strin转载 2015-11-16 11:29:27 · 584 阅读 · 0 评论 -
Map key action.type contains dots but no replacement was configured! Make sure map keys don‘t contai
Map key action.type contains dots but no replacement was configured! Make sure map keys don’t contain dots in the first place or configure an appropriate replacement!网上资料说是Mongodb数据写入key包含“.”,debug出来还真的有。配置转化器import org.springframework.context.annotati原创 2021-01-18 14:41:52 · 482 阅读 · 0 评论 -
RocketMQ原理解读
RocketMQ整个中间件可以分两块,一块是NameServer,保存注册上来的Broker地址信息,另一块是Broker,保存队列消息,直接与发送端或消费者通信。NameServer是一个AP模型的架构。关键代码?Broker是一个CP模型的架构。关键代码?主要涉及3个物理文件commit_log,单个文件1G大小,顺序写入,保持实际消息内容consume_queue,保存消息ID和队列消息存储的offset地址index_file,辅助队列消息轨迹搜索。原创 2023-12-20 19:06:05 · 581 阅读 · 0 评论