自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 1597 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 403

原创 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 724

原创 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 121

原创 RocketMQ Consumer 顺序消费

版本:4.2.0RocketMQ消费可以分为并发消费和顺序消费。顺序消费顾名思义就是按照发送的顺序消费消息,一般的业务需求用MessageListenerConcurrently就可以了。有些特殊的业务需求可能需要保证消息的消费是有序的,比如binlog同步等等,那么就用到MessageListenerOrderly,仅仅用MessageListenerOrderly就能保证顺序消费吗?可能也许应该能吧?其实只需要写个单元测试就能测试出来,多试几次。既然不能保证那为啥要搞个Message

2021-01-22 10:11:17 940

原创 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 867

原创 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 434

原创 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 726

原创 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 1193

原创 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 471

原创 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 268

原创 简简单单服务间的灰度

服务间的灰度发布基于springboot+restTmplate实现1.客户端依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dep

2020-09-26 23:57:54 308

原创 超简单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 434

原创 eureka client source

1.EurekaClientAutoConfiguration实例化ManagementMetadataProviderDefaultManagementMetadataProvider的主要功能是获取ManagementMetadata,ManagementMetadata包含这几个信息// 健康检查的url /actuator/healthprivate final String healthCheckUrl;// actuator监控的信息 /actuator/infoprivate f

2020-09-19 22:46:46 125

原创 eureka server source

注册、心跳、下线、剔除、获取注册表、集群同步1.EurekaServerAutoConfiguration实例化EurekaServerConfigBean@Configuration(proxyBeanMethods = false)protected static class EurekaServerConfigBeanConfiguration { @Bean @ConditionalOnMissingBean public EurekaServerConfig eur

2020-09-19 22:46:11 87

原创 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 124

原创 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 332

原创 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 75

原创 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 201

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除