Canal 是阿里巴巴开源的一款分布式增量数据同步工具,主要用于基于 MySQL 数据库的增量日志 Binlog 解析,提供增量数据的订阅和消费。
Canal github 地址:https://github.com/alibaba/canal,目前最新版本为 1.1.8,当前的 canal 支持源端 MySQL 版本包括 5.1.x、5.5.x 、5.6.x、5.7.x、8.0.x。
More »Java, Spring Boot, Microservice, Cloud, Architecture and DevOps Tutorials
分布式 ID 的生成是分布式系统中的一个核心问题,需要确保生成的 ID 全局唯一、性能高效,并且能够适应高并发和大规模的场景。以下是一些常见的分布式 ID 生成方案:
原理:NanoID 是一个轻量级、安全、URL 友好的唯一字符串 ID 生成器。它使用加密安全的随机数生成器,确保生成的 ID 足够随机和安全。
More »以下是一个基于本地缓存 + Redis ZSet + 定时任务的榜单方案,适用于高并发场景:
全局前 1000 名榜单存储在 Redis 中
More »在互联网领域,限流是指对进入系统的请求数量或频率进行控制的一种机制,以防止系统因流量暴增而过载,从而保障系统的稳定性和可用性。
当请求超过限流阈值时,系统可以采取不同的拒绝策略:
More »在实际项目中,区分偶发性超时和频繁超时的重试策略非常重要。偶发性超时可能是由于网络抖动或临时负载过高引起的,适合立即重试;而频繁超时则可能是系统过载或下游服务不可用,此时应避免重试,以免加剧问题。
在实际面试的过程中,经常会遇到类似的面试题目,这时候可以这样回答:
在处理大量请求时,我们经常会遇到超时的情况。为了合理控制重试行为,避免所谓的“重试风暴”,我设计了一个基于时间窗口的算法。在这个算法中,我们维护了一个滑动窗口,窗口内记录了每个请求的时间戳以及该请求是否超时。每当一个请求超时后,我们会统计窗口内超时的请求数量。如果超时请求的数量超过了设定的阈值,我们就认为当前系统压力较大,不适合进行重试;否则,我们认为可以安全地进行重试。
然而,随着并发量的增加,普通版的滑动窗口算法暴露出了一些问题。特别是在高并发场景下,窗口内需要维护的请求数量可能非常大,这不仅占用了大量内存,而且在判定是否需要重试时还需要遍历整个窗口,这大大增加了算法的时间复杂度。
为了解决这个问题,我们进一步设计了进阶版的算法。在这个版本中,我们引入了ring buffer 来优化滑动窗口的实现。具体来说,我们不再以时间为窗口大小,而是使用固定数量的比特位来记录请求的超时信息。每个比特位对应一个请求,用1表示超时,用0表示未超时。当所有比特位都被标记后,我们从头开始再次标记。
这种设计极大地降低了内存占用,因为无论并发量多高,我们只需要固定数量的比特位来记录请求的超时状态。同时,在判定是否需要重试时,我们只需要统计ring buffer中为1的比特数量,这大大简化了算法的实现并提高了效率。
More »
2024 年的付费软件:
TablePlus:
Typora:
ICloud:每月 6 元
B 站大会员:每月 15 元
More »今天我做了什么?
更新文章 我的VPS服务部署记录
将 memos 中的书签导入 hoarder,并将 memos 版本退回到 0.21.0 ,因为 0.21.0 之后的版本去掉了分享功能。同时需要修改 memos api,同步修改 fetch_memos.py 文件,将 https://memos.chensoul.cc/api/v1/memos 改为 https://memos.chensoul.cc/api/v2/memos
More »ThingsBoard 源码地址:https://github.com/thingsboard/thingsboard,其 .github/workflows 目录下面有两个文件:
check-configuration-files.yml
:使用 python 脚本校验 yaml 文件license-header-format.yml
:是给文件添加 license 并提交代码到 git 仓库check-configuration-files.yml
More »ThingsBoard 源码地址:https://github.com/thingsboard/thingsboard,启动成功之后,使用系统管理员: [email protected] / sysadmin 进行登陆。
登陆系统之后,点击左边的设置和安全菜单,进行相应的配置。
设置 -> 基本设置、发送邮件、通知
More »sdk install quarkus
quarkus create && cd code-with-quarkus
出现异常:
More »