自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

念念不忘,必有回响

微信:weihubeats。个人公众号:小奏技术,专注于技术分享

  • 博客(585)
  • 收藏
  • 关注

原创 记一次RocketMQ线上broker内存持续升高问题排查

进程在申请内存的时候,不是直接分配物理内存,分配一块虚拟空间,等到堆真正使用这块虚拟空间才会发生缺页去分配物理内存。

2023-11-25 21:13:34 1467

原创 记一次spring cloud gateway Netty线程性能优化(附带压测)

可以看到增加线程数配置 可以明显减少error错误,即减少。目前是在mac测试数据,预计至少有20%左右的QPS提升其次还有一个可配置参数,默认为cpu核数,最大为4如果cpu核数够多也可以增加该线程数,由于本机线程数有限,增加该线程数性能提升不明显。

2023-11-23 09:30:00 4732 1

原创 都dubbo3了,别再用xml了配置dubbo服务了

我们用基于和Zookeeper注册中心快速入门使用了dubbo3。可以看到dubbo3并不需要像以前那样配置xml比如这样-- 定义应用名 --> < dubbo: application name = " demo-provider " /> < dubbo: registry address = " zookeeper://127.0.0.1:2181 " />

2023-11-15 10:35:23 294

原创 Spring EL表达式原来都是配合这些类一起使用的

本次我们详细的分析了Spring EL表达式中的一些核心用法。以及实际使用中是如何结合和去使用的。简单实现了一个EL表达式的工具类,也结合模块的EL表达式进行了简单的源码分析。让大家对Spring EL表达式有全面的了解。

2023-11-14 09:55:35 265

原创 图文加多个测试带你彻底搞懂Netty ChannelPipeline的执行顺序(附源码)

从上面大量的用例我们可以看出如下规律是双向链表结构,包含和两种处理器.也有处理器既是又是,但是也属于这两种只会从当前的handler位置开始,往前找outbound执行与会从tail的位置开始,往前找outbound执行的执行顺序一般是从上到下的执行顺序一般是从下到上,

2023-11-10 09:50:19 618 1

原创 线上Kafka集群如何调整消息存储时间

总的来说Kafka的配置分broker级别和Topic级别。如果我们要修改消息的存储时间,最好是通过修改Topic的存储时间来修改,因为不用重启broker。不过在部署Kafka集群的时候我们也建议设置合理的消息存储时间,避免每个Topic都要定制化配置,才能最大化利用磁盘,避免磁盘浪费其次从Kafka的这种配置设计来说,我们后续做技术设计的时候也可以采用这种优秀的方式,提供全局+局部的配置,局部配置优先级高于全局,其实如果开源软件使用的多的话,我们会发现大多开源软件的配置都采用这种设计思路。

2023-11-04 09:40:01 1646

原创 RocketMQ sql92的使用及原理简单分析附源码

本次我们对RocketMQ sql92过滤消息进行了简单的使用以及少量的源码分析,并没有完整的从整个流程进行分析,因为本篇并不是源码分析偏。sql92在实际的项目中的相对来说较少,偶尔如果做RocketMQ消息的多册环境或者灰度,可能是一个方案,但不是最佳的。

2023-11-02 09:37:24 329

原创 聊聊RocketMQ中的broker的TPS和QPS为何相差巨大,是如何统计的

总的来说一般一条消息会被多个业务方消费,所以QPS都是会大于TPS的。TPS主要是统计写消息量QPS主要是统计读(消费)消息量主要注意的是官方目前的统计是有一个小bug的统计的一些QPS、TPS改成统计的是TPM。所以如果要修复这个bug可以参考这个pr相关讨论可以参考这个issues。

2023-10-21 10:20:56 1007

原创 RocketMQ读写分离实战

总的来说开启读写分离有明显的QPS性能提升,但是会耗费额外的内存,但是每条消息的平均耗时变高了。

2023-10-18 10:07:38 419

原创 结合源码聊一聊为何线上RocketMQ偶尔出现system busy

本次我们结合源码分析了出现的四种情况broker中消息发送线程池()处理任务超时OS page cache is busy,开始清理送线程池()中的queue任务消息发送线程池()队列容量满了(默认1w)如何缓解这几种异常呢?本质都是broker的压力太大了,处理不过来。最好的解决方式就是提升broker的处理速度,即RocketMQ的 QPS。有以下几种方式开启读写分离(即transientStorePoolEnable = true)扩容broker集群优化broker。

2023-10-13 09:58:43 524

原创 Kafka KRaft线上集群部署实战(broker、controller分离部署)

这里是,觉得文章不错可以关注公众号,文章首发。拒绝营销号,拒绝标题党。

2023-10-09 09:57:24 518 1

转载 Dapper,大规模分布式系统的跟踪系统

当代的互联网的服务,通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具。Dapper–Google生产环境下的分布式跟踪系统,应运而生。那么我们就来介绍一个大规模集群的跟踪系统,它是如何满足一个低损耗、应用透明的、大范围部署这三个需求的。

2023-09-27 16:41:53 224

原创 Spring boot整合Skywalking实现线程池无侵入Tid传递及简单源码分析

总的来说如果线程池我们要支持无缝tid传递,需要将中的插件移动到我们的agent中,才会生效。但是仅仅支持线程池,即。

2023-09-27 10:06:21 1767

原创 Spring cloud gateway整合sentinel实现熔断

本次我们演示了集成sentinel实现熔断。实际使用还是比较简单,但是不推荐在生产使用,因为现在的熔断规则都是直接存储在内存中,然后推送到业务系统,没有持久化,如果需要持久化我们需要更多对Sentinel进行改造。

2023-09-26 10:06:23 485

原创 Skywalking出现[TID:Ignored_Trace]问题解决方案及源码定位

追踪的时候发现配置好像都没问题,但是打印log的时候会出现。所以可以检查自己地址有没有写错、这种情况一般是我们配置的。

2023-09-21 13:59:52 3199

原创 Spring cloud gateway+apollo=bug?

我们在使用Apollo配置文件的时候一定要注意这个坑,就是@ConfigurationProperties注解导致类型从Integer转为String。

2023-09-19 12:37:53 221

原创 聊聊Kafka如何基于JMX监控

总的来说kafka的监控支持有两种一种是Jmx,一种是http.各种需要监控的指标也是应有尽有,非常齐全。

2023-09-16 11:51:34 1111

原创 RocketMQ5.0 线上集群部署一定要注意这个OOM问题

目前来看5.1.0之前的版本可能都有这个问题。所以大家在实际使用的时候一定要注意自己的RocketMQ这个bug是否修复了.不过影响说大不大,说小不小。因为master和slave频繁建立连接本身也有问题。

2023-09-15 10:26:54 424

原创 docker执行apt-get update报错 Err http://security.debian.org jessie/updates/main amd64 Packages

这里因为docker没有vim。可以看到404了,所以就是。

2023-09-11 17:50:21 1530 1

转载 使用 SkyWalking & Arthas 优化微服务性能

大家在自定义 Feign 的编解码器时,如果用到了,应避免的重复初始化。如果不需要使用那些默认的,可以在初始化时将第一个入参设置为 false,从而不初始化那些默认的。另外,应该了解不同的部署方式在类加载器频繁查找和加载资源时是存在性能差异的。我们在写代码时,也应该要避免重复初始化,以及反复查找和加载不存在的资源。

2023-09-08 10:26:07 894

原创 Linux Kafka 3.5 KRaft模式集群部署

KRaft是kafka用来取代zookeeper的分布式协调管理组件。

2023-09-07 13:43:41 709 1

原创 RocketMQ集群突发大量超时问题排查及优化

这里真相水落石出了,主要是还是线程池被打满堆积了太多任务导致的如何处理呢增大线程池减少对线程池的请求线程池添加监控broker添加相关的请求限流。

2023-09-04 09:52:53 833

原创 从RocketMQ通信模块聊聊EpollEventLoopGroup和NioEventLoopGroup

总的来说网上大多说明在linux性能是更高于,但暂时没有找到相关的基准测试数据。总的来说在linux上面使用似乎是更优的选择,所以我们在部署RocketMQ的时候我们可以将参数配置为true。

2023-08-28 10:10:11 351

原创 如何使用VisualVM进行性能分析本地java项目和远程java项目

总的来说VisualVM可以为我们统计到一些内存、jvm gc信息。远程接入的方式有两种jmxjstatdjmx需要项目启动的时候添加启动参数,而jstatd不用,但是启动的时候有一个端口是随机的,这样每次可能需要运维帮忙配置打开不同的端口有点麻烦实际线上的环境往往更复杂,VisualVM并不一定能查看到我们排查问题的所有指标。

2023-08-18 09:29:08 1063

原创 RocketMQ消息轨迹产生的背景以及使用方式

总的来说消息轨迹开启后会非常方便我们定位问题,但是会增加额外的存储开支,如果消息量很大,推荐使用物理隔离的方式,单独使用一个broker存储消息轨迹。

2023-08-15 09:36:51 201

原创 RocketMQ 5.x如何使用GRPC方式发送消费消息

可以看到我们使用GRPC的方式消费和发送消息都成功了,但是需要注意的是目前还不是很稳定,有一些bug,生产使用还是需要谨慎。

2023-08-10 09:57:18 677

原创 RocketMQ 5.x broker注册到Nameserve源码分析

总的来说就是broker启动后会向所有的Nameserver注册自己的相关元数据信息,然后定时发送心跳。如果执行修改topic相关的信息,也会同时更新broker和`Nameserver·上面的元数据信息。

2023-08-08 10:49:33 211

原创 RocketMQ 5.x延时消息源码分析(不包含时间轮)

总的来说延时消息就是默认分为18个队列,然后启动18个线程一直去扫描这18个队列。如果没有消息就过100毫秒继续重复扫描,周而复始如果扫描到消息则将延时消息Topic中的消息取出来,然后重新转换为原始消息,包括原始消息的Topic和queueId,然后重新写入到commitLog中。

2023-08-02 09:49:54 165

原创 RocketMQ发送消息还有这种坑?遇到SYSTEM_BUSY不重试?

这里是,觉得文章不错可以关注公众号,文章首发。拒绝营销号,拒绝标题党。

2023-07-28 09:13:19 363

原创 RocketMQ broker停写功能源码分析

这里是,觉得文章不错可以关注公众号,文章首发。拒绝营销号,拒绝标题党。

2023-07-26 09:55:10 173

原创 从源码角度聊聊RocketMQ 消息(文件)删除机制

总的来说RocketMQ执行文件清理操作主要是在设置的凌晨4点(4:00-5:00),要清理的文件也是我们常见的CommitLogIndex清理的条件就是三个磁盘超过设置的默认85%到达设置的清理时间默认凌晨4点手动执行清理操作三个条件满足一个即可至于一些文件操作比如等不在本次探讨范围内,限于篇幅我们这次是看整理的逻辑。后续会基于单个点深入分析。

2023-07-23 09:13:39 875

原创 RocketMQ 5.0本地源码启动3Nameserve+2broker集群

我们本次以源码的方式启动了3个Nameserve+2个broker其中还包含3个controller+2个proxy后续我们需要debug观测RocketMQ集群的源代码就非常方便了。

2023-07-19 09:48:17 4541

原创 RocketMQ无损扩容实战

总的来说整体操作难度不大,但是如果认为的去扩容在线上遇到紧急流量我们可能操作不过来,所以可以考虑使用快照的方式扩容这样库容会更快。

2023-07-18 09:52:37 1001 1

原创 RocketMQ重置消费位点源码分析

总的来说RocketMQ的消费位点如果是客户端管理,重置消费位点是由客户端发起,发送到broker,最终还是由broker去通知所有broker去更新本地消费位点。

2023-07-09 09:57:57 697

原创 kafka入门安装及消息发送接受初体验(附源码)

这里是weihubeats,觉得文章不错可以关注公众号,文章首发。拒绝营销号,拒绝标题党。

2023-07-05 15:24:39 183

原创 Linux 安装maven两种方式(使用yum或手动安装)

【代码】Linux 安装maven两种方式(使用yum或手动安装)

2023-06-28 20:22:37 3372

原创 如果我们20年后仍然在讨论Kubernetes,那将是技术上悲哀的时刻

这里是weihubeats,觉得文章不错可以关注公众号,文章首发。拒绝营销号,拒绝标题党。

2023-06-21 20:41:39 304

原创 RocketMQ部署之动态设置JVM启动参数

这里是weihubeats,觉得文章不错可以关注公众号,文章首发。拒绝营销号,拒绝标题党。

2023-06-21 09:15:52 820

原创 signoz调研部署及log收集体验

其实可以看到功能是非常完善的,比较满足线上环境log的收集监控报警。

2023-06-17 10:09:25 932 1

原创 简单聊聊对象池及Apache Commons Pool的使用

本文我们主要学习了是什么,以及核心组件,还有如何使用,不涉及原理和源码的分析。在知道了如何使用后我们后面才会去分析源码。

2023-06-15 09:35:53 557 1

空空如也

空空如也

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

TA关注的人

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