随笔分类 - 心情文字
摘要:在笔者心中,消息队列,缓存,分库分表是高并发解决方案三剑客。 在职业生涯中,笔者曾经使用过 ActiveMQ 、RabbitMQ 、Kafka 、RocketMQ 这些知名的消息队列 。 这篇文章,笔者结合自己的真实经历,和大家分享消息队列的七种经典应用场景。 1 异步&解耦 笔者曾经负责某电商公司
阅读全文
摘要:在笔者心中,消息队列,缓存,分库分表是高并发解决方案三剑客。 分库分表之所以被广泛使用,因为工程相对简单,但分库分表并不仅仅是分片,还是需要考虑如何扩缩容(全量同步、增量同步、数据校验等)。 因此笔者做了一个教学型分库分表示例项目 ,计划将分库分表的技术体系都实际演示一遍。 https://gith
阅读全文
摘要:两年前,朋友想知道 Boss 直聘上关于自动驾驶的岗位有哪些 ,于是,笔者写了一个简单的爬虫 crawler-boss ,将岗位的信息收集起来。 这篇文章,笔者想分享爬虫 crawler-boss 的设计思路。 1 基本原理 Selenium + chromedriver 对于很多动态渲染的网页而言
阅读全文
摘要:人工智能时代,最需要学习的编程语言是:python 。笔者是个 python 小白,昨天花了两个小时,第一次成功运行起来 python 项目 。 项目是 powerpoint-extractor ,可以将 ppt 文件中的图片提取出来,并输出到固定的目录。 1 安装 python 环境 首先打开终端
阅读全文
摘要:Github : https://github.com/makemyownlife/platform-sms 短信服务 platform-sms 0.5.0 发布 ,新的版本做了非常多的优化和改进。 1、支持发送任意时间延时短信; 2、优化三方渠道适配器加载逻辑; 3、支持 Docker 部署。 4
阅读全文
摘要:我们在美团 APP 下单,假如没有立即支付,进入订单详情会显示倒计时,如果超过支付时间,订单就会被自动取消。 这篇文章,笔者想以架构师的视角,深入剖析如何设计订单超时自动取消的功能。 1 定时任务 首先,我们非常自然的想到定时任务的方案。 方案流程: 每隔 30 秒查询数据库,取出最近的 N 条未支
阅读全文
摘要:我们经常讲:研发人员有两只眼睛,一只是监控平台,另一只是日志平台。在对性能和高可用讲究的场景里,监控平台的重要性再怎么强调也不过分。 这篇文章,我们聊聊开源实时监控告警系统 HertzBeat 赫兹跳动。 1 产品特色 HertzBeat 有两个非常鲜明的特色:强大的监控模版和无需 Agent 。
阅读全文
摘要:这篇文章,我们聊聊实现定时任务的六种策略。 1 自定义单线程 上图中,我们启动一个线程,该线程无限循环执行,每隔20毫秒执行业务代码。 这种方式非常简单易用,在很多中间件中得到广泛应用。 2 JDK ScheduleExecutorService ScheduledExecutorService 是
阅读全文
摘要:Guava Cache是一款非常优秀的本地缓存框架,提供简洁易用的 API 供开发者使用。 这篇文章,我们聊聊如何使用 Guava Cache 异步刷新技巧带飞系统性能 。 1 基本用法 首先,在 Java 应用中添加 maven 依赖: <dependency> <groupId>com.goog
阅读全文
摘要:这篇文章,我们聊聊消息队列中非常重要的最佳实践之一:消费幂等。 1 基础概念 消费幂等是指:当出现 RocketMQ 消费者对某条消息重复消费的情况时,重复消费的结果与消费一次的结果是相同的,并且多次消费并未对业务系统产生任何负面影响。 例如,在支付场景下,消费者消费扣款消息,对一笔订单执行扣款操作
阅读全文
摘要:在 Spring Boot 项目中,数据库连接池已经成为标配,然而,我曾经遇到过不少连接池异常导致业务错误的事故。很多经验丰富的工程师也可能不小心在这方面出现问题。 在这篇文章中,我们将探讨数据库连接池,深入解析其实现机制,以便更好地理解和规避潜在的风险。 1 为什么需要连接池 假如没有连接池,我们
阅读全文
摘要:1 初心 大家好,我是勇哥。花了三个月的时间,我手写了个短信平台服务 platform-sms,今天开源出来 Beta 版本。 写这个开源项目的初心其实很简单:"帮助初中级研发工程师入门架构设计,提升他们的技术认知"。 2018年,作为架构师,我参与一个短信平台的重构。发送短信的场景包括还款业务、C
阅读全文
摘要:很多业务场景里,我们都需要发送短信,比如登陆验证码、告警、营销通知、节日祝福等等。 这篇文章,我们聊聊 Java 应用中如何优雅的发送短信。 1 客户端/服务端两种模式 Java 应用中发送短信通常需要使用短信服务提供商提供的短信 API 。 我们经常使用的短信渠道有:阿里云、腾讯云、华为云、亿美等
阅读全文
摘要:这篇文章,我们聊一聊 RocketMQ 的消息轨迹设计思路。 查询消息轨迹可作为生产环境中排查问题强有力的数据支持 ,也是研发同学解决线上问题的重要武器之一。 1 基础概念 消息轨迹是指一条消息从生产者发送到 Broker , 再到消费者消费,整个过程中的各个相关节点的时间、状态等数据汇聚而成的完整
阅读全文
摘要:这篇文章,笔者想聊聊 RocketMQ 最佳实践之一:保证订阅关系一致。 订阅关系一致指的是同一个消费者 Group ID 下所有 Consumer 实例所订阅的 Topic 、Tag 必须完全一致。 如果订阅关系不一致,消息消费的逻辑就会混乱,甚至导致消息丢失。 1 订阅关系演示 首先我们展示正确
阅读全文
摘要:这篇文章我们聊聊广播消费,因为广播消费在某些场景下真的有奇效。笔者会从基础概念、实现机制、实战案例、注意事项四个方面一一展开,希望能帮助到大家。 1 基础概念 RocketMQ 支持两种消息模式:集群消费( Clustering )和广播消费( Broadcasting )。 集群消费: 同一 To
阅读全文
摘要:Disruptor 是英国外汇交易公司 LMAX 开发的一个高性能队列。很多知名开源项目里,比如 canal 、log4j2、 storm 都是用了 Disruptor 以提升系统性能 。 这篇文章,我们通过两个例子一步一个脚印帮助同学们入门 Disruptor 。 1 环形缓冲区 下图展示了 Di
阅读全文
摘要:canal 是阿里知名的开源项目,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。 这篇文章,我们手把手向同学们展示**使用 canal 将 MySQL 增量数据同步到 ES** 。  Elasticsearch 是一个分布式的、面向生产规模工作负载优化的搜索引擎。 Kibana 可以将 Elast
阅读全文
摘要:NameServer 是专为 RocketMQ 设计的**轻量级名字服务**,它的源码非常精简,八个类 ,少于1000行代码。 ![](https://img2023.cnblogs.com/blog/2487169/202308/2487169-20230806202929596-11982745
阅读全文
浙公网安备 33010602011771号