自定义博客皮肤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。个人公众号:小奏技术,专注于技术分享

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

原创 kafka集群扩容实战

线上的`Kafka`集群采用的部署方式为`KRaft`模式,3个`KRaft`+2个`broker`。`Kafka`版本`kafka_2.13-3.5.0`

2024-06-26 09:15:00 455

原创 RocketMQ如何添加JVM监控

总的来说java应用都支持使用prometheus官方提供的这个agent来实现JVM的监控。我们只需要修改一下脚本把agent挂载上去即可。

2024-06-24 22:39:23 436

原创 Kafka消息能正常发送,但是无法消费问题排查

如果kafka能正常发送消息,但是消费异常,一般是消费位点出现了问题,即管理消费位点的这个toipc目前来看新增了3个brokerkafka并没有自动对进行分区迁移,需要手动进行迁移所以后续出现消费相关的问题可以优先检查这个topic的情况,毕竟kafka得消费位点都依赖于这个topic。

2024-06-15 10:03:44 855

原创 RocketMQ如何查询延时消息原始Topic

老版本的延时消息默认是存储在这个topic,直接去原始topic查询消息是查询不到的然后查询到延时消息想通过官方dashboard直接查看原始的topic也是不支持的如果我们想查看延时消息具体是哪个topic的。我们可以通过方法获取MessageExt对象,然后通过MessageExt对象获取propertiesproperties中就有原始的topic信息。

2024-06-06 09:15:00 406

原创 Docker compose 部署Grafana+Prometheus实现java应用JVM监控

本次我们使用agentgrafanaprometheus进行了JVM相关的监控。可以看出来相对来说还是比较轻量的。如果有grafanaprometheus。应用仅需接入agent即可,并且这个agent相对来说也是比较轻量。如果是一些中间件之类的监控可以使用这种方式来做监控,比如RocketMQ等比较麻烦的是grafana的dashboard有些维护没维护,需要手动去调整一些指标的key。想要完善好看的dashboard面板还是需要慢慢调整,然后报警自己也可以去慢慢添加。

2024-06-04 09:47:30 514

原创 java nio FileChannel堆内堆外数据读写全流程分析及使用(附详细流程图)

这里是小奏,觉得文章不错可以关注公众号小奏技术。

2024-05-27 09:36:49 429

原创 线上RocketMQ偶发sendDefaultImpl call timeout问题排查

首先我们可以确定的是发生是还没有发送消息就超时了导致的。发生超时主要应该是在获取topic元数据导致的那么导致超时的原因可能有哪些呢?topic第一发送消息多个线程获取topic元数据信息同步等待锁后又重新从Nameserver获取导致的超时topic第一发送消息获取topic元数据真正的网络延时导致的超时(这种情况可能比较少,因为一般RocketmQ和client都是在一个内网)JVM Full GC stop the world导致的超时。

2024-05-22 09:43:04 655

原创 java利用jdk11和jdk15新特性零依赖优雅调用GPT-4o,附golang实现对比

这里是小奏,觉得文章不错可以关注小奏技术公众号。

2024-05-16 09:45:00 327 1

原创 spring ai很好,但我现在还不推荐你线上使用

这里是小奏,觉得文章不错可以关注公众号小奏技术

2024-04-29 09:30:00 673

原创 不仅java要接入apollo,golang我也要接入apollo

这里是weihubeats,觉得文章不错可以关注公众号。

2024-04-25 09:45:00 405

原创 idea2024.1发布,lambda多语句的内联断点,增强spring图标等新特性,你没玩过的全新版本

总的来说一些比较简单实用的功能就是上面的这些了,还有一些就是比如ai、scala、性能方面的优化等等对详细更新内容感兴趣的可以自己查看idea官方的原文总的来说体验还是挺不错的,感兴趣的小伙伴快升级试试吧。

2024-04-20 10:10:34 962

原创 图文并茂分析Skywalking dubbo上下午传递源码

总的来说dubbo这一快的上下文传递还是很简单的。总结为如下几个步骤是否需要增强如果是则判断是Provider还是Consumer如果是Consumer则将上下文放入skywalking上下文中如果是如果是Provider则从dubbo上下文中获取Consumer的上下文恢复到skywalking上下文中如果我们看其他实现trace传递的dubbo增强也是类似的实现原理,比如Tlog,感兴趣可以去看看,这里就不分析了。

2024-04-13 18:25:32 373

原创 RocketMQ 5.x消息不丢失核心配置allAckInSyncStateSet详解

总的来说开启最多会在master宕机后15s内集群写入不可用,等异常的broker被移出后就可以继续正常写入了。实际比如有三个集群broker-abroker-bbroker-c一个集群比如broker-a在15s内不可写入也是可以接受的,因为还有两个集群可以写入,product也是有消息重试的。所以如果不开启。一条消息写入master后还没来得及同步给slave就宕机,消息丢失的风险还是太大,线上还是推荐开启。

2024-04-10 09:45:00 739

原创 从面到点俯瞰RocketMQ存储模型

RocketMQ的消息文件主要存储在commitLog,为了保证高性能的读写,commitLog采用顺序写入,文件名按偏移量命名,这样通过二分查找消息的效率非常高。由于订阅模型是基于topic的所以为了提高性能又引入了类似commitLog的索引,并不会直接存储消息,只存储了消息的物理偏移量,这样可以很方便的通过定位到commitLog为了支持按key查找,RocketMQ又引入了索引文件IndexFile,用来支持按key的查询。索引文件主要是利用hash,通过对。

2024-04-03 09:30:00 700

原创 结合idea聊聊System.getProperty和System.getenv()的区别

总的来说主要还是用的多。主要用于启动参数的获取。当然也可以通过获取到一些系统的参数比如等但是如果是利用kubernetes进行环境变量标签传递就需要额外处理,单独使用是获取不到的。

2024-03-13 09:45:00 521

原创 PostgreSQL数组查询是否存在某个值

【代码】PostgreSQL数组查询是否存在某个值。

2024-03-11 20:45:43 548

原创 图文+源码分析实现dubbo 3.x灰度(附源码)

总得来说dubbo实现流量灰度还是非常简单的,官方提供了原生的扩展我们直接使用就好。如果需要实现dubbo服务的动态标签就需要结合使用。

2024-03-07 09:30:00 1179

原创 apisix实现http流量灰度方案的演进

总的来说基于apisix实现灰度发布还是比较简单的,实现方式有多种,区别主要还是kubernetes中是多个service还是单个service相对来说多service是apisix更推荐的做法,也能更精准控制流量。但是相对于java传统的比如和dubbo这些服务发现框架来说都是单service的元数据管理不太一样所以后续要实现全链路灰度可能会有比较大的不同。

2024-03-05 09:45:00 1015

原创 你们团队是否有RocketMQ创建Topic、GID创建规范呢

早期在使用RocketMQ的时候,系统和开发人员不算多。所以topic的创建会非常随意,各种千奇百怪的topic

2024-03-02 20:27:16 402

原创 BitSet在阿里面试和RocketMQ中的应用

简单理解就是位图,类似BitMap。用来存储二进制位的类总的来说BitSet在一些特定场景使用还是非常节省内存高效的。

2024-03-02 09:45:00 261

原创 PostgreSQL解决序列(自增id)自动增长冲突

但是如果我们在插入一些数据的时候手动指定id,那么自增序列不会跟随我们手动设置的id增长。就会出现下次不设置id的时候自增到我们手动指定的id导致主键冲突bug。如果我们插入数据不指定id。自动生成的id就还是4,从而导致主键冲突。xiaozou_id_seq是序列名,xiaozou是表名。一般表的id主键我们都是设置为自增序列。如果不知道序列名可以通过如下方式查询。实际我们的id自增序列还停留在3。设置自增序列为当前id的最大值+1。现在我们手动插入数据比如。这时候我们的数据变成。

2024-02-04 16:51:16 987

原创 Linux定时删除log

【代码】Linux定时删除log。

2024-02-01 17:31:23 301

原创 基于Javassist字节码增强实现本地公参传递

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

2024-01-30 21:04:19 394

原创 用Go写一个小玩意-git定时push、commit

总得来说使用goland写一些工具类啥的还是很方便的,api和打包非常轻量。比如文件的读取写入只需要一行代码搞定。

2024-01-30 20:45:00 594

原创 RocketMQ源码分析之消息重试(真相竟然是延时消息)

普通消息重试默认是16次,顺序消息默认是,消息消费失败会以延时消息的方式投递到broker,超过延时消息的最大值则以2小时为重试间隔。现在提供了不同的重试策略,默认是如果broker投递失败则会在本地再次消费该消息.重试次数的元数据存储在重试次数的增加有两种发送到broker后在broker进行+1(broker重试)如果发送broker失败则在本地消费进行+1(client重试)

2024-01-27 10:15:58 693

原创 RocketMQ 5.x pop消费详解

popRebalance在broker实现,方便多语言client实现维护.更符合云原生单个客户端消费所有queue,避免单个client假死造成消息堆积避免出现因为queue不足导致的扩展consumer提升消费能力异常避免消息队列数量与consumer数量比例不均衡时导致的某些consumer承担过多的消息后续有机会再分析下pop消费时间的源码以及更多细节。

2024-01-24 20:40:11 501

原创 APISIX限流实战

总的来说apisix提供的插件功能给我提供了非常丰富的扩展组件。我们在对每个路由进行配置的时候只需要启动这些插件即可,非常简单。

2024-01-23 20:04:55 792

原创 RocketMQ源码分析之消费进度查询(附带pop消费进度查询坑处理)

总得来说官方dashboard对于pop的消息查询存在bug。因为获取broker的地址信息是通过查询重试topic的路由信息获取到的,如果没有重试topic就查询不到broker消费进度。因为pop的重试队列规则修改了。旧版本的dashboard没有兼容所有会查询不到。

2024-01-23 09:45:00 1355

原创 如何实现一个好用的全链路多测试环境(HTTP篇)

总得来说我们基于服务编排、流量染色、动态自定义路由实现了http的多测试环境。如果我们要实现全链路,还需要实现MQxxl-job等三方中间件的多测试环境隔离。

2024-01-15 15:10:02 921

原创 github action初体验实现maven项目自动ci test

GitHub Actions是GitHub提供的一种持续集成/持续交付(CI/CD)工具,它可以帮助开发者自动化软件开发流程中的各种任务,如构建、测试、部署等。通过在代码仓库中配置和定义工作流程(Workflow),GitHub Actions可以在特定的事件触发时执行一系列的操作这么解释有点官方。最简单只直观的解释就是我们每次提交一些大型开源项目的时候,就会有一个这个玩意就是你定义一些规则,比如在给master 提交代码或者pr的时候就触发一些单元测试之类的ci等。

2023-12-27 09:45:00 1177

原创 linux Systemd为裸机goLand应用保驾护航

总的来说使用systemctl去部署一些简单服务还是比较不错的,挂了可以自动拉取,也可以配置log信息等。

2023-12-25 21:39:40 470

原创 聊聊kafka client性能调优及kafka最佳实践

其实可以看到producer的batch.size和linger.ms就是借鉴了tcp/ip的网络发送算法。tcp/ip的Nagle算法大致的规则如下如果包长度达到MSS,则允许发送如果包含FIN,则允许发送如果设置了TCP_NODELAY,则允许发送未设置TCP_CORK选项时,若所有发出去的小数据包(包长度小于MSS)均被确认,则允许发送上述条件都未满足,但发生了超时(一般为200ms),则立即发送。elseelseend ifend ifend if总得来说主要是四个参数。

2023-12-23 09:30:00 1089

原创 Kakka dashboard技术选型及实战Know Streaming

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

2023-12-22 09:00:00 1013

原创 手把手教你skywalking二开之扩展logback日志%tid

接下来真正的实现当然是放在agent里面去做的首先去继承/*** issue.* *//***/@Override/***/@Override/***/@Override@Override@Override@Override这里主要定义agent要增强哪个类、哪个方法。比如这里就通过定义增强类,定义增强的方法之后再配置类中添加这个类拦截class就是配置我们下面要写的也就是真正的实现类。

2023-12-20 09:56:35 1410 2

原创 RocketMQ消息消费中长轮训的应用

总的来说消息拉取这一块的源码还是非常复杂的,我们只能走马观花查看整体流程。没办法一一俱到分析所有的细节,不然我们会迷失在复杂的源码海洋中。我们先理清整理逻辑即可。这里我们再总结下我们分析到的流程client向broker发送消息拉取请求broker如果没有消息则会将请求挂起挂起的请求有几个处理机会a. 默认会有定时5s去轮训处理这些暂存的请求b.会每隔1毫秒去检查是否有消息到来,如果有则分发新的消息到来,其中就包括处理hold住的请求。

2023-12-18 09:00:00 910

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

所以总结来说JKD8 G1在经历一次Full GC后就会归还内存给操作系统的前提是-Xms和-Xmx参数设置大小不一致才会归还。如果设置一样大即使经历Full GC也不会归还给到操作系统至于验证下次有机会在线上再验证下吧,网上也有很多人都验证了,这里就不验证了。

2023-12-15 21:51:00 660

原创 RocketMQ如何像德芙那样丝滑缩容

总的来说缩容还是比较简单的,就是broker停写,然后等broker上面的消息都消费完成后即可下线。下线的时候先下线slave,然后是master。避免出现主从自动切换。

2023-12-13 21:38:49 430

原创 spring data Redis整合spring cache实战(附源码及源码分析)

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

2023-12-06 09:58:17 499

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

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

2023-11-25 21:13:34 1280

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

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

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

空空如也

空空如也

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

TA关注的人

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