您的位置 首页 java

如何吃透一个java项目

见字如面,我是威哥,一个从普通二本院校毕业,从未曾接触分布式、微服务、高并发到通过 技术分享 实现职场蜕变,成长为RocketMQ社区优秀 布道师 、大厂资深架构师,出版《RocketMQ技术内幕》一书,欢迎大家关注我,随时可私信我,一起交流进步。

我在尝试学习RocketMQ之前未曾接触过消息中间件,通过自己提炼的学习方法,最终出版《RocketMQ技术内幕》一书,并且成为RocketMQ社区优秀布道师,让我有了一个非常亮眼的标签,极大了提高的我的职场竞争力,在这里和大家分享一下我的方法。

我根据多年的阅读经验,整理了这么一套方法:

  • 了解这款软件的使用场景、以及 架构设计 中将承担的责任。
  • 寻找官方文档,从整体上把握这款软件的设计理念。
  • 搭建自己的开发调试环境,运行官方提供Demo示例,为后续深入研究打下基础。
  • 先主干流程再分支流程,注意切割,逐个击破。

接下来分享一下我在阅读 RocketMQ 源码时的一些经历,尽量让上述理论具有画面感。

1、了解 RocketMQ的应用场景

MQ的使用场景是比较清晰的,它的两大基本职责是 解耦 与削峰填谷。

举一个最简单的场景:新用户注册送积分、送优惠券场景,其原始架构设计通常如下:

如何吃透一个java项目

可以看出用户注册和发优惠券,送积分是紧耦合的, 随着业务不断发展,活动部门提出在春节期间用户注册不送积分,发优惠券,而是赠送一个新春礼包,如果基于上述架构的话,需要去改动用户注册的主流程, 违背了设计模式中的对修改关闭、对扩展开放的设计理念

MQ的出现,可以很好地解决上面的问题:

如何吃透一个java项目

通过引入MQ,用户注册主流程只需要完成注册逻辑,并向MQ发送一条消息,然后活动模块(送积分、送优惠券、送礼包)只需要订阅MQ中的消息,进行对应的处理。

这样消息注册主流程会非常的简单,不管活动种类如何变化,注册流程无需更改,这样就实现了解耦。

2 通读官方文档,从全局把握其设计理念

了解使用场景以后,接下我们可以去查阅官方文档,主要包括用户设计文档(架构设计),用户使用手册等,从全局了解其设计理念。

如何吃透一个java项目

通过通读官方文档,不仅可以得出MQ的整体脉络(例如NameServer路由发现、消息发送、消息存储、消息消费、消息过滤),也能对顺序消费, 零拷贝 、同步刷盘、异步刷盘等“高端大气上档次”的高级特性产生兴趣与好奇,驱动我们去阅读其源码,探究其实现细节,使得我们在阅读源码中进行一定的自我思考成为了可能。

3 先主干,再分支

在搭建好本地开发环境后,切忌直接用Debug去跟踪消息发送的整体流程,因为这个流程实在是太长了,从比较粗粒度来看其流程如下图所示:

如何吃透一个java项目

如果大家想一次性将上述流程的源码全部看一遍,几乎是不可能的。 因为消息发送高可用设计、消息存储、刷盘、同步等机制,每个点详细展开的工作都是海量的,我们没有这么多连续的时间,所以适当的拆分非常有必要。

经过这样一分解,就能专注理解其某一块的设计原理,所需要的连续时间也能大大减少,一口一口“吃”,最终完成整个体系的理解。

最后分享笔者一个硬核的RocketMQ电子书,您将获得千亿级消息流转的 运维 经验。

如何吃透一个java项目

获取方式:私信回复RMQPDF即可获取。


私信回复【 rmqpdf 】:可获取千亿级消息流转的RocketMQ集群线上故障分析、运维经验

私信回复【技术群】:可以加入技术交流群,不求活跃,只求有问题能得到群友的互动交流

私信回复【专栏】:可以获取12个Java主流 中间件 源码分析专栏。

收藏是点赞的20几倍,希望大家在收藏的时候,也顺手点个赞,感谢。

文章来源:智云一二三科技

文章标题:如何吃透一个java项目

文章地址:https://www.zhihuclub.com/196590.shtml

关于作者: 智云科技

热门文章

网站地图