这个用户很懒,还没有个人简介
私信
主帖 18
回帖
视频
提问
回答
资源
专栏
大家好,我是威哥,《RocketMQ技术内幕》作者、RocketMQ社区首席布道师、中通快递基础架构资深架构师,越努力越幸运,唯有坚持不懈,与大家共勉。前天发完版本好不容易休息一下,又遇到一个问题,项目组反馈说RocketMQ的一个消费组一条消息,消费了两次,但两者之间的间隔超过了10个小时,现象如下图所示:这是为什么呢?两者之间相差了差不多10个多小时,是不是这条消息重复消费了16次,但从日志中并没有打印出16次消息题,只...
7天前 80浏览 0点赞 0回复 0收藏
大家好,我是威哥,《RocketMQ技术内幕》作者、RocketMQ社区首席布道师、中通快递基础架构资深架构师,越努力越幸运,唯有坚持不懈,与大家共勉。最近公司日志Kafka集群出现了性能瓶颈,单节点还没达到60Wtps时消息发送就出现了很大延迟,甚至最高超过了10s,截图说明如下:虽说使用的机械磁盘,但这点压力对Kafka来说应该是小菜一碟,这引起了我的警觉,需要对其进行一番诊断了。通过监控平台观察Kafka集群中相关的监控节点,...
7天前 142浏览 0点赞 0回复 0收藏
大家好,我是威哥,《RocketMQ技术内幕》作者、RocketMQ社区首席布道师、中通快递基础架构资深架构师,越努力越幸运,唯有坚持不懈,与大家共勉。在微服务架构体系中远程RPC调用主要包括Dubbo与Http调用两个大类,由于Dubbo拥有服务注册中心,并且起服务的命名非常规范,使用包名.类名.方法名进行描述。而http调用通常都是使用httpclient等相关类库,这些在使用上并没有问题,但API都是分散在整个工程的各个地方,如果HTTP调用...
7天前 95浏览 0点赞 0回复 0收藏
3、实现签名校验上述只是简单实用Feign,接下来以实现签名校验为例展示Feign的扩展机制。签名验证是最常见的安全机制,首先在客户端定义一个签名拦截器,用于生成签名信息,示范代码如下图所示:publicclassAuthRequestInterceptorimplementsfeign.RequestInterceptor{privateTokenServicetokenService;publicAuthRequestInterceptor(TokenServicetokenService){this.tokenServicetokenService;}Overridepublicvoidapply(Request...
7天前 121浏览 0点赞 0回复 0收藏
4.2服务端实现公共API首先需要添加相应的maven依赖,代码如下:<dependency><groupId>org.springframework.boot<groupId><artifactId>springbootstarterweb<artifactId><dependency><dependency><groupId>com.vhicool<groupId><artifactId>feignapi<artifactId><version>1.0SNAPSHOT<version><scope>compile<scope><dependency>服务端采用继承方式实现,具体代码如下所示:ControllerRequestMappingpublicclassUserControllerim...
7天前 126浏览 0点赞 0回复 0收藏
2.3方案落地经过上面的分析,主要涉及如下5个改造点。2.3.1改造flinkjdbcconnection配置主要涉及url、tablename的改造:url:支持多个数据库配置,并在schema支持正则表达式动态匹配数据库中的schematablename:表名支持正则匹配,可同时匹配多个表具体代码如下:'url''jdbc:mysql:localhost:3306order([09]{1,}),jdbc:mysql:localhost:3306order([09]{1,})','tablename''order([09]{1,})',2.3.2解析URL、Table名称主要是根据配...
8天前 150浏览 0点赞 0回复 0收藏
大家好,我是威哥,《RocketMQ技术内幕》作者、RocketMQ社区首席布道师、中通快递基础架构资深架构师,越努力越幸运,唯有坚持不懈,与大家共勉。1、背景在flink提供的jdbcconnector中只支持单表的数据同步,但随着业务量的增大,单表记录数过多,会导致数据查询效率降低。为了解决单表存在的性能瓶颈,会采用分库分表。例如将订单表order拆分为1024张分表:order>order0000order1023。显然官方默认提供的flinkjdbc插件并不适用...
8天前 231浏览 0点赞 0回复 0收藏
大家好,我是威哥,《RocketMQ技术内幕》作者、RocketMQ社区首席布道师、中通快递基础架构资深架构师,越努力越幸运,唯有坚持不懈,与大家共勉。1、背景在项目中需要依赖其他第三方的jar包,但有时我们需要扩展第三方jar的功能,或者修复依赖中已知还未修复的bug,但碰到过很多种情况,第三方类库中并没有提供对应的扩展点导致无法优雅的使用继承等方法对代码进行改造。如果第三方类库并没有提供扩展点,我们通常会使用如下两...
8天前 122浏览 0点赞 0回复 0收藏
OverrideSuppressWarnings("unchecked")publicScanRuntimeProvidergetScanRuntimeProvider(ScanContextruntimeProviderContext){finalJdbcRowDataInputFormat.BuilderbuilderJdbcRowDataInputFormat.builder().setDrivername(options.getDriverName()).setDBUrl(options.getDbURL()).setUsername(options.getUsername().orElse(null)).setPassword(options.getPassword().orElse(null));if(readOptions.getFetchSize()!0){build...
8天前 141浏览 0点赞 0回复 0收藏
大家好,我是威哥,《RocketMQ技术内幕》作者、RocketMQ社区首席布道师、中通快递基础架构资深架构师,越努力越幸运,唯有坚持不懈,与大家共勉。1、背景上个月公司zk集群发生了一次故障,要求所有项目组自检有无使用Dubbo编程式泛化调用,强制使用Reference生成Consumer。平台部给出的故障原因:泛化调用时候,provider没启动,导致每次请求都在zk创建消费节点,导致在短时间大量访问zk并创建了240万+的节点,导致zk所有节点陆...
8天前 172浏览 0点赞 0回复 0收藏
情况一:启动provider服务,然后启动消费端泛化,请求此泛化方法,在zk只注册了一个consumer节点;停止provider,再请求此泛化方法,发现zk上此节点数量不变化。为什么呢?provider停止后,请求不再创建zk节点的原因是RegistryConfig的ref已经在启动时候生成了代理(由于启动时候provider服务存在,checktrue校验过通过),因此不再创建。情况二:不启动provider服务,直接启动消费端泛化,请求此泛化方法,发现每请求一次,在z...
8天前 192浏览 0点赞 0回复 0收藏
大家好,我是威哥,《RocketMQ技术内幕》作者、RocketMQ社区首席布道师、中通快递基础架构资深架构师,越努力越幸运,唯有坚持不懈,与大家共勉。我在使用Dubbo的过程中遇到了如下错误:Noprovideravailablefortheservice,本以为这个是服务提供者不存在,但经过我的排查,别的客户端是能够正确使用该服务的,原来背后蕴含Dubbo一个BUG。理论知识结合我对Dubbo的理解,通常dubbo调用出现Noprovideravailablefortheservicexxx,...
8天前 173浏览 0点赞 0回复 0收藏
大家好,我是威哥,《RocketMQ技术内幕》作者、RocketMQ社区首席布道师、中通快递基础架构资深架构师,越努力越幸运,唯有坚持不懈,与大家共勉。RocketMQ提供了基于Tag的消息过滤机制,但在使用过程中有很多朋友或多或少会有一些疑问,我不经意在RocketMQ官方钉钉群,我记得有好多朋友都有问到如下问题:今天我就与RocketMQTag几个值得关注的问题,和大家来做一个分享,看过后的朋友,如果觉得有帮助,期待你的点赞支持。消费...
8天前 93浏览 0点赞 0回复 0收藏
2.1消息拉取流程中的关键设计客户端向服务端拉取消息,连续1000W条消息都不符合条件,一次过滤查找这么多消息,肯定非常耗时,客户端也不能等待这么久,那服务端必须采取措施,必须触发一个停止查找的条件并向客户端返回NOMESSAGE,客户端在消息查找时会等待多久呢?核心关键点一:客户端在向服务端发起消息拉取请求时会设置超时时间,代码如下所示:其中与超时时间相关的两个变量,其含义分别:longbrokerSuspendMaxTimeMillis...
8天前 100浏览 0点赞 0回复 0收藏
2.2.2客户端没有拉取到合适的消息位点提交机制客户端如果没有拉取到合适的消息,例如全部被tag过滤了,在DefaultMqPushConsumerImpl的PullTask中定义了处理方式,具体如下所示:其关键代码在correctTasOffset中,具体代码请看:核心要点:如果此时处理队列中的消息为0时,则会将下一次拉取偏移量当成位点,而这个值在服务端进行消息查找时会向前驱动,代码在DefaultMessageStore的getMessage中:故从这里可以看到,就算消息全部...
8天前 95浏览 0点赞 0回复 0收藏
大家好,我是威哥,《RocketMQ技术内幕》作者、RocketMQ社区首席布道师、中通快递基础架构资深架构师,越努力越幸运,唯有坚持不懈,与大家共勉。由于笔者公司目前使用的kafka版本是2.2.1,故当下关于kafka的内核研究目前主要是基于该版本,当然该专栏还会继续关注Kafka3.0。我在使用kafka时发现客户端可以不依赖Zookeeper的情况下完成消息发送、消息消费,众所周知早期的Kafka,所有的元信息(topic、消费组、集群)等信息都存储...
8天前 86浏览 0点赞 0回复 0收藏
2、消费组存储在位点主题中在较低版本中,启动Kafka消费组需要指定zookeeper集群的地址,因为在低版本中消费组的元信息存储在zookeeper中,具体路径为consumers,但后续版本中消费端的启动已经不需指定zookeeper,而是指定broker的地址列表即可,那这个时候,消费组的信息是存储在哪呢?在前面介绍Kafka故障解决相关的文章中我们常常看到消费组组协调器,内部持有一个消费组元数据管理器GroupMetadataManager,相关的代码截图如...
8天前 102浏览 0点赞 0回复 0收藏
大家好,我是威哥,《RocketMQ技术内幕》作者、RocketMQ社区首席布道师、中通快递基础架构资深架构师,越努力越幸运,唯有坚持不懈,与大家共勉。想必大家都看过笔者Kafka集群故障的排查经验,并通过优化参数使得Kafka集群应对洪峰流量的能力提升N倍,网卡流量几乎打满,集群写入稳如泰山,无独有偶,菜鸟的一个故障导致集群单个topic从5Wtps直接飙升到50Wtps,但集群稳如狗,相当于做了一次“突然的压测”,让我们一起回顾一下...
8天前 98浏览 0点赞 0回复 0收藏