阿里云多种消息服务的差异及选型

背景:消息中间件日益在应用系统中必不可少,阿里云提供多种消息MessageQueue服务,有历史原因也有产品线不统一或尽可能提供用户更多选择的原因。笔者根据实际使用,总结下阿里云消息服务的历史、不同消息服务的差异、最后给出推荐选用原则。

缓存系统中面临的雪崩/穿透/一致性问题

There are only two hard things in Computer Science: cache invalidation and naming things.
计算机科学中有两件难事:缓存失效和命名
– Phil Karlton

From Martin Fowler : TwoHardThings

缓存系统一定程度上极大提升系统并发能力,但同样也增加额外技术考虑因素,下面针对缓存系统设计与使用中面临的常见问题展开。

  • 缓存应用的典型场景
  • 缓存雪崩
  • 缓存穿透
  • 缓存更新与数据一致性

不同网络拓扑下如何正确获取客户端ip?

先说结论:

  • 说明:一切抛开网络拓扑提准确获取用户ip的通用方案都是耍流氓。
  • 根据网络拓扑当服务器架构中的设备IP加入可信IP列表,成本:持续维护可信IP区、与拓扑相关、增加防火墙WAF调整可信IP
  • 剔除可信IP列表
  • 从XFF头部倒序获取首个非可信IP作为客户端真实IP,防伪造XFF、防代理、保正常请求
  • Laravel/Nginx-realip均按上述逻辑来处理的

网络拓扑模型


MySQL InnoDB在线调整表结构(online DDL)-新增字段篇

线上服务的表结构调整是业务需求扩展和系统设计拓宽的常见方式,但对线上服务而言,线上库表调整可能对线上服务产生影响。
本文以MySQL 5.6.16-log为例,结合InnoDB引擎特性,给出综合分析,几个核心问题:

  1. 线上库修改表结构操作是否会导致锁表、锁行?
  2. 线上改表结构可用的方案有哪些?各自成本和适用场景?
  3. 5.6+ InnoDB引擎的online DDL特性性能表现如何?