如何吃透一个java项目

网友投稿 687 2022-05-28

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

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

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

了解这款软件的使用场景、以及架构设计中将承担的责任。

寻找官方文档,从整体上把握这款软件的设计理念。

搭建自己的开发调试环境,运行官方提供Demo示例,为后续深入研究打下基础。

先主干流程再分支流程,注意切割,逐个击破。

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

1、了解 RocketMQ的应用场景

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

如何吃透一个java项目

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

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

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

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

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

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

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

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

3、搭建开发调试环境

不同的系统搭建方式也不同,我这里有一篇文章,手把手教你搭建RocketMQ调试环境,这里就不细说了。

4 先主干,再分支

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

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

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

好了,本文就介绍到这里了,您的一键三连是对我最大的鼓励,当然可以加笔者微信:dingwpmz,备注CSDN,共同交流探讨。

Java 架构设计

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:浅谈云上可靠性测试
下一篇:FTP指的是什么协议?由什么组成?有什么作用?
相关文章