MingJunDuan的博客
热爱可抵一切,探索未知之境
全站访问量

日志脱敏:从注解到自动化的完整实现

线上日志里打印了用户手机号、身份证号、银行卡号——这是每个后端工程师的噩梦。GDPR、《个人信息保护法》之下,日志脱敏已经从”最佳实践”变成了”合规红线”。 但现实中,大部分系统的脱敏策略是这样的: // 方式 1: 手动拼字段(字段多了要命) logger.info("user: name={}, phone={}, email={}", user.getName(), maskPhone(user.getPhone()),...

SLF4J 原理深度剖析 —— 从日志门面到绑定机制

每个 Java 工程师都写过 LoggerFactory.getLogger(Xxx.class),也见过 log.info("hello {}", name)。但当线上同时引入了 log4j 和 logback 的 jar...

Elastic-Job 分布式定时任务深度剖析 —— 从概念到原理

定时任务是后端开发中最常见的需求之一。单机时代,一个 cron 表达式加上 @Scheduled 就能解决问题。但当服务集群部署后,问题立刻复杂起来:谁执行?执行几次?执行节点宕机了怎么办? Elastic-Job 是当当网开源(现为 Apache ShardingSphere 生态)的分布式任务调度框架,Lite 模式以去中心化 +...

Dubbo 与 SOFA RPC 的 ZooKeeper 断连容灾机制深度对比

ZooKeeper 挂了怎么办?这是每个用 ZK 做注册中心的团队必须回答的问题。Dubbo 和 SOFA RPC 作为国内最主流的两大 RPC 框架,都用 ZK 做服务发现,但它们的容灾策略有本质差异。...

ZooKeeper 3.4.10 集群深度剖析(下)—— Leader 选举、数据同步、Java 客户端与运维实践

上篇讲透了 ZAB 协议,中篇深入了数据模型、Session 和 Watcher。下篇聚焦四个团队高频话题:Leader 选举到底怎么选、数据同步的三种策略、Java 客户端底层 NIO 通信的每一步、以及生产环境的运维最佳实践。 七、Leader 选举 ——...