blademan
LV.1
这个用户很懒,还没有个人简介
声望 56
关注 0
粉丝 0
私信
主帖 20
回帖
视频
提问
回答
资源
专栏
本文主要介绍如何将RocketMQ集群从原先的主从同步升级到主从切换。本文首先介绍与DLedger多副本即RocketMQ主从切换相关的核心配置属性,然后尝试搭建一个主从同步集群,最后将原先的RocketMQ集群平滑升级到DLedger集群的示例,并简单测试一下主从切换功能。1、RocketMQ主从切换核心配置参数详解其主要的配置参数如下所示:enableDLegerCommitLog是否启用DLedger,即是否启用RocketMQ主从切换,默认值为false。如果需要开启主从...
2023-02-22 15:08:21 284浏览 0点赞 0回复 0收藏
本文将在​​RocketMQ消息发送systembusy、brokerbusy原因分析与解决方案​​的基础上,结合生产上的日志尝试再次理解brokerbusy以及探讨解决方案。首先,brokerbusy相关的日志关键字如下:[REJECTREQUEST]systembusytoomanyrequestsandsystemthreadpoolbusy[PCSYNCHRONIZED]brokerbusy[PCBUSYCLEANQUEUE]brokerbusy[TIMEOUTCLEANQUEUE]brokerbusy上述前面4个关键字在上篇文章中已详细介绍,本文先对出现上述错误进行一个总结,...
2023-02-22 15:01:17 281浏览 0点赞 0回复 0收藏
1、背景公司一个RocketMQ集群由4主4从组成,突然其中3台服务器“竟然”在同一时间下线,其监控显示如下:依次查看三台机器的监控图形,时间戳几乎完美“吻合”,不可思议吧。2、故障分析出现问题,先二话不说,马上重启各服务器,尽快恢复集群,降低对业务的影响,接下来开始对日志进行分析。Java进程自动退出(rocketmq本身就是一个java进程),一种最常见的问题是由于内存溢出或由于内存泄漏导致进程发送Crash等。由于我们的启...
2023-02-22 14:58:25 290浏览 0点赞 0回复 0收藏
温馨提示:整个KafkaClient专栏基于kafka2.3.0版本。1、KafkaProducer概述根据KafkaProducer类上的注释上来看KafkaProducer具有如下特征:KafkaProducer是线程安全的,可以被多个线程交叉使用。KafkaProducer内部包含一个缓存池,存放待发送消息,即ProducerRecord队列,与此同时会开启一个IO线程将ProducerRecord对象发送到Kafka集群。KafkaProducer的消息发送APIsend方法是异步,只负责将待发送消息ProducerRecord发送到缓存...
2023-02-22 14:57:38 1115浏览 0点赞 0回复 0收藏
温馨提示:本文基于Kafka2.2.1版本。本文主要是以源码的手段一步一步探究消息发送流程,如果对源码不感兴趣,可以直接跳到文末查看消息发送流程图与消息发送本地缓存存储结构图。从上文​​初识KafkaProducer生产者​​,可以通过KafkaProducer的send方法发送消息,send方法的声明如下:Future<RecordMetadata>send(ProducerRecord<K,V>record)Future<RecordMetadata>send(ProducerRecord<K,V>record,Callbackcallback)从上面的...
2023-02-22 14:56:08 342浏览 0点赞 0回复 0收藏
看到标题中的几个关键字系统自适应限流是不是觉得高大上,这个自适应又是如何实现的呢?1、Sentinel系统自适应概述从官方了解到Sentienl系统自适应限流是一个全局的概念,对应用入口流量统一进行统一控制,结合应用的机器负载、CPU使用率,总体平均响应时间、入口QPS和并发线程数等几个维度的监控指标从而决定是否调用进行限流操作。为了有一个直观的感受,我们可以从官方的运维平台看看其系统自适应限流的操作界面:RT、线程数...
2023-02-22 14:55:32 308浏览 0点赞 0回复 0收藏
本文行文思路:先抛出源码阅读方法,然后结合Sentinel创作过程谈谈具体是如何运用这些技巧,最后解答几个源码阅读的误区。Sentinel系列共包含15篇文章,主要以源码分析为手段,图文并茂的方式对Sentinel的架构设计理念、核心实现要点进行了一一剖析,并加以实战分析与思考。很多朋友都在咨询我是如何阅读源码的。对此可归纳为如下几个要点,然后结合Sentienl源码分析专栏对各个要点进行拆解,对源码阅读方法进行一次“实战”。...
2023-02-22 14:54:00 185浏览 0点赞 0回复 0收藏
源码分析Canal系列开始了,一个全新的系列,即能探讨canal本身的实现原理,也是笔者源码阅读技巧的展示。1、应用场景提到Canal,大家应该都能想到这是一个用于解析MySQLbinlog日志的工具,并将MySQL数据库中数据同步到其他存储介质中,例如Elasticsearch。即Canal一个非常常用的使用场景:数据异构,一种更高级别的数据读写分离架构设计方法。随着业务不断的发展,企业发展到一定阶段,发现单体的关系型数据库已无法支撑业务高...
2023-02-22 14:41:37 206浏览 0点赞 0回复 0收藏
从Canal系列的第一篇文章我们基本能了解到,Instance是Canal数据同步的核心,在一个Canal实例中只有启动Instace,才能实现数据的同步,那Instance到底是“何许人也”,本文将以源码为手段,试图揭开Instance的神秘面纱。1、CanalInstance类继承体系重要的类说明如下:CanalInstanceCanalInstance接口,即定义Instance的基本特征,主要定义如下方法:StringgetDestination()实例的目的地名称,在Canal中表示一个源实例名称,对应...
2023-02-22 14:41:02 87浏览 0点赞 0回复 0收藏
本文将从三个方面深度剖析EventParser组件。从官方文档看EventParser的设计思想从EventParser初始化了解内部的是可配置项从EventParser的启动窥探其工作实现原理温馨提示:本篇篇幅较长,如果耐心阅读一定会有不错的收获,为了提高阅读体验,本文所有源码都是通过截图方式,大家可以重点阅读对应的文字说明,并在文末进行了总结。1、官方文档看EventParser首先我们先从官方文档来看EventParser的整体设计,其架构设计图如下所示...
2023-02-22 14:39:36 184浏览 0点赞 0回复 0收藏
本节主要介绍NettyChannelHandler事件概述,并详细介绍各个事件方法的触发时机,为下篇关于事件传播机制打下坚实基础。NIO相关的核心类图如下:下面一一对上述类做一个简单的介绍,下文还会其进行更为详细的解读。ChannelHandlerNettyChannel事件的基础接口,只定义与Handler的管理接口相关,具体如下:voidhandlerAdded(ChannelHandlerContextctx)在调用DefaultChannelPipeline的addLast(add)将事件监听器添加到事件处理链条时...
2023-02-17 11:06:53 217浏览 0点赞 0回复 0收藏
本节将详细分析Netty事件传播机制,即事件链的实现机制。1、ChannelPipeline概述Netty4的事件链核心类如图所示:接下先详细介绍上述核心类的核心方法。"Channel流水线",即Channel管道(事件处理链),其主要核心方法包括如下三类。添加类操作ChannelPipelineaddFirst(Stringname,ChannelHandlerhandler)ChannelPipelineaddFirst(EventExecutorGroupgroup,Stringname,ChannelHandlerhandler)ChannelPipelineaddFirst(ChannelHan...
2023-02-17 11:05:11 247浏览 0点赞 0回复 0收藏
在技术职场中普遍存在如下几种现象:对待工作中所使用的技术不需要阅读源码,只需在开发过程中能够熟练运用就行看源码太费时间,而且容易忘记,如果从实际使用过程中出现的问题出发,针对性的阅读源码,其学习效率会更高效,所以平时无需看源码。对此我有着不同的理解,容我慢慢道来。本文将从如下4个角度进行剖析:源码阅读的必要性源码阅读技巧源码阅读的三种境界源码阅读的误区1、源码阅读必要性1.1通用型基础技术应该深入源...
2023-02-17 11:04:14 328浏览 0点赞 0回复 0收藏
笔者比较“悲催”,临近年末笔者维护的生产MQ集群中的一台物理机内存故障导致操作系统异常重启,在10分钟内众多的应用发送客户端出现消息发送超时,事故并定性为S1,笔者的“年终奖”。。。1、故障描述RocketMQ集群采取的部署架构为2主2从,其部署架构如下图所示:其部署架构中一个非常明显的特点是一台物理机上分别部署了nameserver,broker两个进程。其中一台机器(192.168.3.100)的内存出现故障,导致机器重启,但Linux操作系...
2023-02-17 10:57:25 286浏览 0点赞 0回复 0收藏
“我能熟练使用这个框架软件技术就行了,为什么要看源码?”“平时不用看源码,看源码太费时间,还容易忘记,工作中出现问题再针对性地阅读,效率更高。”“为了面试才需要看源码!”。。。。。。如果你也有类似的疑问,不妨接着往下看1、为什么要阅读源码?1.1在通用型基础技术中提高技术能力在JAVA领域中包含JAVA集合、Java并发(JUC)等,它们是项目中使用的高频技术,在各种复杂的场景中选用合适的数据结构、线程并发模型,合...
2023-02-17 10:56:50 242浏览 0点赞 0回复 0收藏
面试中一致性哈希算法被问到的概率非常大,本文将从如下三个方面探探一致性哈希算法,让大家轻松应对面试,并且说出与众不同的答案。一致性哈希算法经典实用场景一致性哈希算法通常不适合用于服务类负载均衡面试应对之策1、一致性哈希算法经典使用场景在数据库存储领域如果单表数据量很大,通常会采用分库分表,在缓存领域同样需要分库,下面以一个非常常见的Redis分库架构为例进行阐述。将上述3个Redis节点称之为分片,每一个...
2023-02-17 10:55:23 181浏览 0点赞 0回复 0收藏
Netty是一款非常优秀的网络编程框架,是对NIO的二次封装,本文将重点剖析Netty服务端的启动流程,深入底层了解如何使用NIO编程服务端。本文是笔者基于问题的启发式源码阅读技巧的展示,建议带着如下问题开始本文的阅读:ServerBootstrap的option与childOption分别有什么作用服务端IO通道如何绑定事件链。ServerBootstrap的handler方法与childHandler方法的区别又是什么?childHandler中的方法在服务端bind方法时会被调用吗?1、...
2023-02-17 10:54:45 288浏览 0点赞 0回复 0收藏
1、活动中心场景介绍在电商系统上线初期,往往会进行一些“拉新”活动,例如活动部门提出新用户注册送积分、送优惠券活动。基于分布式、微服务的设计理念,通常的架构设计(子系统交互)如下图所示:其核心系统介绍如下:账户中心提供用户登录、用户注册等服务,一个新用户注册时,向MQ服务器中的USERREGISTER主题发送一条消息,主流程结束,与送积分,送优惠券等过程解耦。优惠券(券系统)提供发放优惠券、使用优惠券等与券相...
2023-02-17 10:49:08 350浏览 0点赞 0回复 0收藏
该系列已分别介绍了服务端、客户端的启动流程,本文将重点剖析Netty是如何封装NIO的读事件。温馨提示:本文虽然是源码分析,但强烈建议精读,根据源码阐述其背后的设计哲学,也用黑体进行了标注,请特别留意。在阅读本篇文章之前,请稍微思考如下几个问题:NIO为什么不适合文件上传等场景NIO如何避免一个超大数据传送的连接对其他请求的影响NIO如何处理半关闭1、读事件概述关于Read事件在SocketChannel与ServerSocketChannel所...
2023-02-17 10:48:32 133浏览 0点赞 0回复 0收藏
好多粉丝朋友经常说威哥你分享了这么多技术类干货文章,也希望你能分享一些关于职场的故事、感悟,让我们少走一些弯路,想来也对,技术干货文章助大家获取优质机会,步入职场,职场经验让我们更好的巩固成果。威哥从现在开始,也尝试写写职场感悟类文章,希望对大家有所帮助。今天主要谈论的问题:如果遇到与领导意见相左时,我们该如何应付呢?可千万不能“干架”,而是要努力跟着领导一起干事业。我相信大家在职场过程中不可...
2023-02-17 10:47:12 151浏览 0点赞 0回复 0收藏