架构训练营 week5 课程总结
多级缓存架构
缓存的本质是用空间换时间,缓存架构实际上是一个高性能的计算架构,而非存储架构。因为缓存架构并非需要持久化。
缓存架构里的缓存分为:
本地缓存、CDN、Web 容器缓存、应用缓存和分布式缓存(redis、memcached)
一般缓存架构是 5 级缓存架构,但是也可以去掉最贵的 CDN 变成 4 级缓存架构,而在 4 级的基础上如果还想去掉一层,则可以去掉实现最复杂的应用缓存架构。
分布式缓存架构
分布式缓存架构主要有两种模式:数据缓存和结果缓存
数据缓存就是直接将数据缓存在缓存服务器里,来避免大量请求直接访问数据库。这类情况往往是读多写少,并且实时性要求较高。那么就必须解决一致性问题,而一致性问题要解决,就有三个方案:1. 容忍不一致。2.用关系数据库的本地事务重试。3. 用消息队列异步重试删除。
结果缓存就是把一些复杂的计算结果缓存下来,以免用户访问时要不断重新计算。这类缓存往往对于数据的实时性要求不是很高。
缓存架构一般会遇到三类问题:缓存穿透,缓存雪崩和缓存热点(有些地方叫缓存击穿)
负载均衡的架构设计
负载均衡的架构里主要有 4 级
app/Browser --> F5/LVS (路由到机房)
F5/LVS --> nginx (机房内部分发)
nginx --> 服务网关集群 (反向代理到服务集群)
服务网关集群 --> 服务集群(负载均衡到具体服务器)
如果要减少一级,那么可以去掉最贵的 F5/LVS,单个价格可以达到 30 万~100 万
如果还要减少一级,那么可以去掉 nginx,让服务网关的 ip 直接通过 NDS 暴露出去。这种架构往往适合请求量较小的系统。
负载均衡架构技巧
负载均衡的算法有:轮询 &随机,加权轮询,负载优先,性能优先,Hash 算法
实际情况里,还是轮询以及随机用的最为广泛,因为有时候简单的就是好的,如果简单方案不能支持的场景,可以用其他的方案来解决。
负载均衡可以基于以下几种结构来进行:1. Cookie 2.X-Header 3. Http query string
接口高可用
接口高可用的架构设计要解决两个效应:雪崩效应和链式效应
链式效应主要是为了应对接口故障,主要的处理方案有降级和熔断两种。降级主要是人工控制,直接禁用接口或者 url,而熔断可以配置规则(基于请求响应时间、成功率等),让系统进行自我保护。
雪崩效应主要是因为请求量太大,当请求量达到一个阈值的时候,系统性能会螺旋式下降,所以对应的措施就是限流和排队。限流可以使用三种方案:1.客户端限流 2.接入端限流 3.微服务限流。 而限流的算法有:1.时间窗算法,分为固定时间窗和滑动时间窗;2.漏桶算法,控制接受请求的总量 3.令牌桶算法,控制处理的速度
版权声明: 本文为 InfoQ 作者【红莲疾风】的原创文章。
原文链接:【http://xie.infoq.cn/article/e08b9096a79c468fc258f2a15】。未经作者许可,禁止转载。
评论