- 博客(8)
- 资源 (1)
- 收藏
- 关注
原创 为什么选择RocketMQ,而不是Kafka
一个复杂的分布式系统,必然会考虑使用MQ来解决通讯解耦等问题,市面上开源的MQ越来越多,也让选择变得越来越难,比如Kafka,RabbitMQ,RocketMQ,让人看得眼花缭乱,好像每个MQ都很强大,究竟使用哪个真是无从下手;而在一次技术选型中,我们落地了RocketMQ,而不是Kafka或者其他,以下也对这次选择做一次总结,讲述以下RocketMQ和Kafka的比较。性能在性能方面,Kafka是优于RocketMQ的,可以达到几十万的TPS,而RocketMQ很难超过10W TPS,但是这是有提前的
2020-11-27 13:18:15 1775 2
原创 一次分布式任务幂等处理的探索
当设计一个分布式任务系统的时候,往往会遇到任务幂等的处理,比如同一个任务一天只能执行一次,或者同一个任务实例只能执行一次,否则会造成数据混乱;而这时需要怎么做呢,有几种做法呢?分析假设任务中有以下伪代码//业务处理, 获取结果数据data = business.do();//将业务数据插入至数据库//开启事务Transaction.start()dao.insertOrUpdate(data)//提交事务Transaction.commit()假设以上任务一天只能执行一次的话,那如果
2020-11-27 13:15:56 192
原创 如何基于已有的SpringBoot Starter定制自己的Starter
使用SpringBoot开发应用程序,在架构设计或封装代码时免不了要自定义自己的SpringBoot Starter,而有的时候并不会从零开始,则会基于第三方的Starter重新封装为满足技术需求的Starter,这时就必须了解如何基于已有的SpringBoot Starter定制自己的Starter,此篇将介绍其中做法。分类SpringBoot Starter的实现由于Coder水平的不同,一般会分为容易扩展的和不容易扩展的;容易扩展的Starter在XXXAutoConfiguration类中使用了
2020-11-27 13:13:37 187
原创 Java代码性能优化小技巧
简单总结,工作中遇到的问题,仅供参考,如出现任何问题,不接受任何投诉与反驳,哈哈。双层循环组合数据篇业务开发中经常会遇到两个ListList<Demo1> demo1List;List<Demo2> demo2List;for (Demo1 demo1 : demo1List) { for (Demo2 demo2 : demo2List) { if (demo1.getName.equals(demo2.getName())) {
2020-11-27 12:57:41 152
原创 设计模式之适配器—我要给iPhone充个电
定义将一个类的接口转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以相互合作。如何使用适配器模式同样来自于我们生活中,如手机的电源适配器,同样笔记本电脑/Pad等都需要电源适配器,原因就是电子设备需要的电源接口不是220V,是需要使用适配器进行转换的(5V等),那对应成代码是怎么样的呢(适配器模式如何落地呢)?首先有一个220V电源的接口和实现public interface V220Power { /** * * @return 电源电压 */
2020-05-26 21:36:08 248
原创 设计模式之装饰者—大宝剑的传说
定义装饰者模式又名包装(Wrapper)模式。装饰者模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰者模式动态地将责任附加到对象身上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。如何使用还记得在大学时候玩过一个游戏叫《海盗王》,玩家可以在自己的武器等装备上镶嵌各种宝石来增加属性,如增加攻击力,增加防御,血量等等,这就是一个典型的可以应用装饰者的场景。首先应该有个装备的接口public interface Equipment { /** * 攻击力
2020-05-24 11:31:00 192
原创 设计模式之单例
单例模式是一种简单且最常用的设计模式,有人可能会说我也没有用过单例模式,那如果你是一枚可爱的Java程序猿/媛,那你肯定用过Spring吧,而Spring Bean默认的构建模式都是单例的,而Spring为什么会这么做呢,显然这和单例的优势有关。什么是单例模式?属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文内使用同一个实例)(引用自百度百科)为什么使用单例模式在应用或者服务运行过程中,有些类的实例是没有
2020-05-17 15:18:51 125 1
原创 分布式事务分享一点相关经验
在传统的单体应用(包含单体应用的多份部署,比如使用反向代理等方式),业务code集中在一起,可以轻松保证事务的ACID;然而到了现在的微服务时代或者服务网格时代,单体应用被按照业务进行水平拆分,以前在一个事务内的业务代码被分散到了多个进程之中,随之带来了令人烦恼的分布式事务问题,如何保证进程之间事务完整性成为了微服务带来的难题,此篇将分享之前对分布式事务的研究,包含对几个业界知名框架的研究。知名的CAP理论CAP理论:指的是在一个分布式系统中, Consistency(一致性)、 Availabili
2020-05-16 11:23:44 800
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人