- 博客(19)
- 收藏
- 关注
原创 RocketMQ重复消费问题排查历程
版本:4.2.0,源码:class文件问题描述:生产环境日志目录使用的默认配置,MQ启动用户的家目录可用空间设置的大小有限制,随着时间的推移可用空间不足,决定修改日志目录,MQ的logback_*.xml配置的默认路径${user.home}全局替换为/data,然后重启MQ,生产环境使用的双master,分别是19和20服务器,运维在重启的时候先停止的19号服务器的MQ一分二十秒之后启动MQ,五分钟之后停止20号服务器MQ,再启动20号服务器MQ。启动使用的命令:nohup sh mqna
2021-02-01 15:44:48
1821
1
原创 RocketMQ Broker 快速失败机制
版本:4.2.0,源码:class文件broker的快速失败机制是为了防止请求过载,导致broker处理请求效率变低,从而影响消息的消费broker启动的时候会初始化brokerFastFailurethis.brokerFastFailure = new BrokerFastFailure(this);this.brokerFastFailure.start();brokerFastFailurepublic void start() { this.sch...
2021-02-01 12:08:22
518
原创 RocketMQ Broker 消息拉取原理
版本:4.2.0,源码:class文件consumer拉取消息发送请求的RemotingCommand的code为11RemotingCommand request = RemotingCommand.createRequestCommand(11, requestHeader)broker启动时会注册一系列的processorBrokerControllerpublic boolean initialize() throws CloneNotSupportedException {
2021-02-01 11:12:41
848
原创 RocketMQ NameServer
版本:4.2.0,源码:class文件NameServer启动源码分析:NameServer通过main方法启动public static void main(String[] args) { main0(args);}public static NamesrvController main0(String[] args) { System.setProperty("rocketmq.remoting.version", Integer.toString(MQVersi...
2021-01-25 10:59:43
191
原创 RocketMQ Consumer 顺序消费
版本:4.2.0RocketMQ消费可以分为并发消费和顺序消费。顺序消费顾名思义就是按照发送的顺序消费消息,一般的业务需求用MessageListenerConcurrently就可以了。有些特殊的业务需求可能需要保证消息的消费是有序的,比如binlog同步等等,那么就用到MessageListenerOrderly,仅仅用MessageListenerOrderly就能保证顺序消费吗?可能也许应该能吧?其实只需要写个单元测试就能测试出来,多试几次。既然不能保证那为啥要搞个Message
2021-01-22 10:11:17
1119
原创 RocketMQ Consumer 消费流程
版本:4.2.0消息通过producer发送到broker,broker缓存到本地磁盘,consumer怎么得到消息?两种方法:1.broker将消息发送到consumer2.consumer请求broker得到消息这两种方式就是MQ的推模型和拉模型,RocketMQ选择的是拉模型,拉取消息的好处在于consumer清楚自己的消费能力,每次拉取的消息不会超出自己的消费能力,消费完再拉取下一批。Consumer启动之后就会自动的消费消息,作为coder,我们并没有写多余的代码去请求br
2021-01-21 15:08:33
958
原创 RocketMQ Producer 重试机制
版本:4.2.0producer的重试机制分两种情况:同步发送,异步发送同步发送:private SendResult sendDefaultImpl(Message msg, CommunicationMode communicationMode, SendCallback sendCallback, long timeout) throws MQClientException, RemotingException, MQBrokerException, InterruptedExcepti
2021-01-18 10:41:36
475
原创 RocketMQ Producer 发送消息时如何选择broker - 故障篇
版本:4.2.0producer在发送消息之前并不知道broker的健康状态,如果broker正在繁忙的处理消息,大量的发送请求会增加broker的负担,MQ为了缓解这个问题增加了broker故障机制,利用发送的时长来预测broker的可用时间默认是关闭的,可以通过这个是打开:defaultMQProducer.setSendLatencyFaultEnable(true);先来看看如何预测broker的不用时间的private SendResult sendDefaultImpl(
2021-01-18 09:57:28
821
原创 RocketMQ Producer 发送消息时如何选择broker
版本:4.2.0broker多台的时候producer如何选择一台发送消息呢?producer在发送消息的时候,会选择一个messageQueue,然后会将消息发送到messageQueue所在的brokerprivate SendResult sendDefaultImpl(Message msg, CommunicationMode communicationMode, SendCallback sendCallback, long timeout) throws MQClientExce
2021-01-15 17:04:20
1320
原创 RocketMQ Producer 和NameServer建立连接主要做了什么
版本:4.2.0producer与nameServer建立连接主要是拉取topic路由信息MQClientInstance启动的时候会启动一个定时任务this.scheduledExecutorService.scheduleAtFixedRate(new Runnable() { public void run() { try { MQClientInstance.this.updateTopicRouteInfoFromNameServer(...
2021-01-15 16:26:43
539
原创 RocketMQ Producer 启动时干了哪些事
版本:4.2.0producer启动代码public void start(boolean startFactory) throws MQClientException { switch(this.serviceState) { case CREATE_JUST: this.serviceState = ServiceState.START_FAILED; //检查producerGroup thi...
2021-01-15 16:25:13
336
原创 简简单单服务间的灰度
服务间的灰度发布基于springboot+restTmplate实现1.客户端依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dep
2020-09-26 23:57:54
364
原创 超简单zuul灰度发布
超简单灰度发布基于springboot+zuul实现灰度发布1.网关引入依赖<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependenc
2020-09-26 18:01:38
513
原创 eureka client source
1.EurekaClientAutoConfiguration实例化ManagementMetadataProviderDefaultManagementMetadataProvider的主要功能是获取ManagementMetadata,ManagementMetadata包含这几个信息// 健康检查的url /actuator/healthprivate final String healthCheckUrl;// actuator监控的信息 /actuator/infoprivate f
2020-09-19 22:46:46
164
原创 eureka server source
注册、心跳、下线、剔除、获取注册表、集群同步1.EurekaServerAutoConfiguration实例化EurekaServerConfigBean@Configuration(proxyBeanMethods = false)protected static class EurekaServerConfigBeanConfiguration { @Bean @ConditionalOnMissingBean public EurekaServerConfig eur
2020-09-19 22:46:11
124
原创 JDK安装 - 简易版
linux安装JDKhttps://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html1.下载:jdk-8u261-linux-x64.tar.gz2.登录linux3.cd /usr/local4.mkdir java5.cd java6.通过sftp将下载的压缩包上传到/usr/local/java目录下7.tar -zxvf jdk-8u261-linux-x64.tar.gz8.配
2020-08-08 14:56:47
182
原创 mysql安装到吐血
linux安装mysqlhttps://dev.mysql.com/downloads/mysql/5.7.html#downloads1.查看是否安装过mysqlrpm -qa | grep mysql如果安装过就删除 rpm -e --nodeps …查看mysql的文件夹:whereis mysqlfind / -name mysql如果有则全部删除 rm -rf …2.下载安装包wget https://dev.mysql.com/get/Downloads/MySQL-5.
2020-08-08 14:55:28
401
原创 Docker小小白
Docker1.三要素容器镜像仓库2.安装yum updateyum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centoyum list docker-ce --showduplicates | sort -ryum install -y docker-ce-18.03.1
2020-08-04 14:35:53
110
原创 linux萌新
1.虚拟机和linux安装vmware14注册码:YA18K-0WY8P-H85DY-L4NZG-X7RADctrl+alt 切换windows和虚拟机的鼠标vi命令:打开文件:vi ifcfg-ens33按i进入编辑模式编辑完按esc,:wq退出dhcp 动态获取网址切换网络配置目录 cd /etc/sysconfig/network-scripts删除HDADDR和UUID(方便克隆)设置 网络 IPADDR:192.168.150.130netmask:255.255
2020-08-03 23:30:19
261
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人