如何保证RocketMQ消息不丢失

前言

随着业务的发展,系统功能也越来也复杂。渐渐的我们会遇到这样的问题。例如,系统和多个外部系统交互对接耗时耗力、系统某个模块流程处理时间过长业务越来越接受不了、某个模块在某个时间点流量太大系统时刻有宕机的风险等等。对于这些问题要想解决,系统此时引入消息队列或许是一个不错的选择。我们都知道消息队列有三大技能:解耦、异步、削峰。看起来可以完美的解决上面提到的问题,但是你们的系统真的适合消息队列么?

Read More

分布式锁实现方案到底有哪些

前言

前面几篇文章从系统架构方式的演进,谈到了单体架构、分布式架构的优缺点,其中特意说到了分布式架构由于功能的拆分,导致系统出现了不能保证数据一致性的问题,即分布式事务问题,从而引出了几种分布式事务的解决方案。文章的篇幅大都在说分布式事务,其实分布式系统中还有一个重要角色–分布式锁,一直没有提及。今天这篇文章我们就将目光移到分布式锁的身上,来说说分布式锁的那些事吧!

Read More

孔乙己“茴”字四种写法引起我对策略模式实现的思考

关于策略模式的文章,其实网上实在是太多了,自己的又没有啥文采,肯定也是写不出来什么花!但是我突然想起了孔乙己,对没错就是那个知道“茴”字有四种写法的孔乙己。当时,语文老师说这个场景是为了表现孔乙己的一种迂腐封建的性格。可是我对孔乙己的“茴”字有四种写法,一直有着不同的看法。我倒是觉得从某种意思上知道四种写法反倒是好事,比如你老板安排你做一件事情,你有四种不同的方案可以解决,这难道不是一件好事情嘛!于是,我还是觉得这篇文章还是有写的必要,让大家看看“茴”字有不同的写法。

Read More

分布式事务解决方案到底有哪些

在系统是单体架构时,系统是和单个数据库进行交互,所以如果有多表操作的时候,可以使用数据库的事务实现数据的一致性,这种事务可以称之为本地事务。随着业务的发展,系统的压力越来越大,单体数据库的性能也达到了瓶颈,不可避免的进行数据库的拆分,还有系统模块的拆分,跨服务、跨数据库的事务场景就越来越多,这样解决分布式的事务的需求就出现了。

Read More

船新版本的策略模式,你一定没有见过

我在之前的文章设计模式学习之策略模式 一文中介绍了策略模式的优点、缺点、实现方法和具体的使用场景。策略类有策略类会增多,造成类膨胀的缺点,这个缺点我还是比较在意的。因为在实际开发中发现,有时策略的实现没有多少代码,这样的定义成一个策略类反而真的有点浪费,确实造成了类膨胀。自从发现了这个问题,我一直在思考如何解决这种问题,经过思考解决问题的方法已经想出来了,但是一直没有去尝试做出来看看是否真的能解决策略模式 类膨胀的问题,终于在这周我忙里偷闲用代码实现了我的想法,我自认为利用 Lambda表达式 + 反射 + 注解 组合解决了类膨胀的问题,这种船新版本实现方案,容我细细道来!

Read More

UML类图

UML

UML(Unified Modeling Language,统一建模语言)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。

Read More

RocketMQ的消费模式

RocketMQ 是基于发布订阅模型的消息中间件。所谓的发布订阅就是说,consumer 订阅了 broker 上的某个 topic,当 producer 发布消息到 broker 上的该 topic 时,consumer 就能收到该条消息。RocketMQ默认支持两种消费模式,分别是集群消费模式和广播消费模式,默认集群消费模式。

Read More