Loading

随笔分类 -  架构设计

架构设计
摘要:前提 在很早很早之前,写过一篇文章介绍过Redis中的red lock的实现,但是在生产环境中,笔者所负责的项目使用的分布式锁组件一直是Redisson。Redisson是具备多种内存数据网格特性的基于Java编写的Redis客户端框架(Redis Java Client with features 阅读全文
posted @ 2021-01-11 22:40 throwable 阅读(3495) 评论(5) 推荐(5) 编辑
摘要:前提 半年前(2020-06)左右,疫情触底反弹,公司的业务量不断提升,运营部门为了方便短信、模板消息推送等渠道的投放,提出了一个把长链接压缩为短链接的功能需求。当时为了快速推广,使用了一些比较知名的第三方短链压缩平台,存在一些问题: 收费贵 一些情况下,短链域名在部分第三方平台例如微信会被封杀 回 阅读全文
posted @ 2020-12-27 22:38 throwable 阅读(1624) 评论(0) 推荐(3) 编辑
摘要:前提 笔者之前在查找Sentinel相关资料的时候,偶然中找到了Martin Fowler大神的一篇文章《CircuitBreaker》。于是花了点时间仔细阅读,顺便温习一下断路器CircuitBreaker的原理与实现。 CircuitBreaker的原理 现实生活中的熔断器(更多时候被称为保险丝 阅读全文
posted @ 2020-10-31 16:49 throwable 阅读(5541) 评论(4) 推荐(8) 编辑
摘要:前提 在某一次用户标签服务中大量用到异步流程,使用了RabbitMQ进行解耦。其中,为了提高消费者的处理效率针对了不同节点任务的消费者线程数和prefetch_count参数都做了调整和测试,得到一个相对合理的组合。这里深入分析一下prefetch_count参数在RabbitMQ中的作用。 pre 阅读全文
posted @ 2020-10-18 12:28 throwable 阅读(15820) 评论(4) 推荐(2) 编辑
摘要:前提 这是一篇憋了很久的文章,一直想写,却又一直忘记了写。整篇文章可能会有点流水账,相对详细地介绍怎么写一个小型的"框架"。这个精悍的胶水层已经在生产环境服役超过半年,这里尝试把耦合业务的代码去掉,提炼出一个相对简洁的版本。 之前写的几篇文章里面其中一篇曾经提到过Canal解析MySQL的binlo 阅读全文
posted @ 2020-10-07 11:51 throwable 阅读(1558) 评论(5) 推荐(0) 编辑
摘要:前提 笔者做小数据和零号提数工具人已经有一段时间,服务的对象是运营和商务的大佬,一般要求导出的数据是Excel文件,考虑到初创团队机器资源十分有限的前提下,选用了阿里出品的Excel工具EasyExcel。这里简单分享一下EasyExcel的使用心得。EasyExcel从其依赖树来看是对apache 阅读全文
posted @ 2020-09-12 10:53 throwable 阅读(16652) 评论(1) 推荐(7) 编辑
摘要:前提 Canal上一个正式版是于2019-9-2发布的v1.1.4,笔者几个月前把这个版本的Canal推上了生产环境,部署了HA集群。过程中虽然遇到不少的坑,但是在不出问题的前提下,Canal的作用还是非常明显的。上周的一次改造上线之后,去掉了原来对业务系统订单数据通过RabbitMQ实时推送的依赖 阅读全文
posted @ 2020-09-05 11:27 throwable 阅读(2795) 评论(0) 推荐(0) 编辑
摘要:前提 在忍耐了很久之后,忍不住爆发了,在掘金发了条沸点(下班时发的): 这是一个令人悲伤的故事,这条情感爆发的沸点好像被屏蔽了,另外小水渠(Canal意为水道、管道)上线一段时间,不出坑的时候风平浪静,一旦出坑令人想屎。重点吐槽几点: 目前最新的RELEASE版本为v1.1.4,发布于2019-9- 阅读全文
posted @ 2020-08-07 00:10 throwable 阅读(4387) 评论(7) 推荐(2) 编辑
摘要:前提 最近,工作中要为现在的老系统做拆分和升级,刚好遇到了分布式事务、幂等控制、异步消息乱序和补偿方案等问题,刚好基于实践结合个人的看法记录一下一些方案和思路。 分布式事务 首先,做系统拆分的时候几乎都会遇到分布式事务的问题,一个仿真的案例如下: 项目初期,由于用户体量不大,订单模块和钱包模块共库共 阅读全文
posted @ 2020-07-07 21:57 throwable 阅读(2937) 评论(7) 推荐(3) 编辑

点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题