隔离
动静隔离
前端把静态文件都存放到OSS对象存储服务里, 使用CDN 优点:
- 减少API服务器压力
- 用户在访问时, CDN会根据用户所在的节点分配最近的节点, 带宽加速, 延迟低
- CDN可以回源
冷热隔离
区分热表与冷表, 即经常访问, 更新的表叫做热表, 反之则为冷表 热表的常见类型: 统计表, 统计各个数据, 例如点赞, 视频播放量, 访问数量 示例, 一个视频投稿的表:
- id
- name
- author
- classid
- tag
- state
- create_at
- modify_at
- paly 播放量
- like 喜欢数量
- favorite 收藏数量
- coin 投币
对于这张表, 比较频繁去更新和访问的就这些字段: 7. create_at 8. modify_at 9. paly 播放量 10. like 喜欢数量 11. favorite 收藏数量 12. coin 投币
那么对于MySQL或者Postgres数据库来说它们有一个BufferPool的DataPage, 可以理解为缓存的表的行, 如果频繁更新表的行, 那么DataPage也会不断置换, 导致命中率下降问题, 在设计时应该把频繁更新的字段单独存放一张表, 对于上表, 可以设计为如下, 就可以很好做到冷热分离, 减少数据库穿透, 直接访问磁盘数据: acrchive:
- id
- name
- author
- classid
- tag
- state
- create_at
- modify_at
acrchive_stat: 7. create_at 8. modify_at 9. paly 播放量 10. like 喜欢数量 11. favorite 收藏数量 12. coin 投币
虽然看起来这张加速表设计还不错, 但是微服务的技术都是分散的, 那么得进行冗余, 当访问到这个稿件时, 直接请求该表即可, 就不需要再访问其它的微服务了