Skip to main content

隔离

动静隔离

前端把静态文件都存放到OSS对象存储服务里, 使用CDN 优点:

  1. 减少API服务器压力
  2. 用户在访问时, CDN会根据用户所在的节点分配最近的节点, 带宽加速, 延迟低
  3. CDN可以回源

冷热隔离

区分热表与冷表, 即经常访问, 更新的表叫做热表, 反之则为冷表 热表的常见类型: 统计表, 统计各个数据, 例如点赞, 视频播放量, 访问数量 示例, 一个视频投稿的表:

  1. id
  2. name
  3. author
  4. classid
  5. tag
  6. state
  7. create_at
  8. modify_at
  9. paly 播放量
  10. like 喜欢数量
  11. favorite 收藏数量
  12. coin 投币

对于这张表, 比较频繁去更新和访问的就这些字段: 7. create_at 8. modify_at 9. paly 播放量 10. like 喜欢数量 11. favorite 收藏数量 12. coin 投币

那么对于MySQL或者Postgres数据库来说它们有一个BufferPool的DataPage, 可以理解为缓存的表的行, 如果频繁更新表的行, 那么DataPage也会不断置换, 导致命中率下降问题, 在设计时应该把频繁更新的字段单独存放一张表, 对于上表, 可以设计为如下, 就可以很好做到冷热分离, 减少数据库穿透, 直接访问磁盘数据: acrchive:

  1. id
  2. name
  3. author
  4. classid
  5. tag
  6. state
  7. create_at
  8. modify_at

acrchive_stat: 7. create_at 8. modify_at 9. paly 播放量 10. like 喜欢数量 11. favorite 收藏数量 12. coin 投币

虽然看起来这张加速表设计还不错, 但是微服务的技术都是分散的, 那么得进行冗余, 当访问到这个稿件时, 直接请求该表即可, 就不需要再访问其它的微服务了