栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

《架构设计2.0大型分布式系统架构方法论与实践》三高笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

《架构设计2.0大型分布式系统架构方法论与实践》三高笔记

目录
    • 前言
    • 高并发
      • 高并发读
        • 动静分离与CDN加速
        • 缓存
        • 并发读与Pipeline
        • 重写轻读
        • 读写分离
        • 批量
      • 高并发写
        • 数据分片
        • 任务分片
        • 异步化
        • 批量
    • 高可靠
      • 七板斧
    • 高可用
      • 高可用架构几个核心问题

前言
  • 因为本人没多少三高的实战经验,所以对《架构设计2.0大型分布式系统架构方法论与实践》这本书的三高比较感兴趣,在此做个记录,并加入一点自己的理解(如果有错误的地方请批评指出,感激不尽)。
  • 何为三高?
    • 高并发:高并发是为了让系统变得更有效率。
    • 高可靠:为了让系统变得更靠谱,尽可能减少故障发生次数。
    • 高可用:为了故障发生后,故障恢复时间尽可能的短。
高并发
  • 高并发:高并发是为了让系统变得更有效率。高并发又可以分为几种侧重类型:高并发读、高并发写、高并发读写。
高并发读 动静分离与CDN加速
  • 静态内容常用的处理策略就是CDN。
缓存
  • 本地缓存或集中式缓存(如Redis/Memcached)。
并发读与Pipeline
  • 并发读:串行改并行,可以使用FutureTask、CompleteService、CompletableFuture实现,FutureTask使用具体可参考拙作使用FutureTask优化业务代码。

  • Pipeline:多个Get操作一个个发出去,不等等返回结果,就像流入一个管道一样,结果从另一个管道流出。这块很像HTTP Pipeline。

重写轻读
  • 书中举例微博Feeds流,要查询用户Feeds流时,要先查询关注的用户列表,不利于高并发查询,所以为每个用户准备一个收件箱。某人发了条微博后,给粉丝的信箱都投递一条数据。这样把计算逻辑从“读”的一端移到了“写”的一端。
  • 宽表:其实就是冗余字段。
读写分离
  • 例如MySQL可以做集群,读写分离,读的节点可以多一些。
批量
  • 可以参考拙作高并发场景下请求合并(批量)。
高并发写 数据分片
  • 例如MySQL分库分表。
任务分片
  • 任务分片:例如把生产汽车的过程分成多道工序。虽然对每辆汽车来说依旧是串行的,但工序之间是并行的。对应代码与FutureTask的含义有所关联,FutureTask使用具体可参考拙作使用FutureTask优化业务代码。
异步化
  • 书中举例短信验证码的例子:请求发送验证码加入到消息队列,由另一个程序消费。
批量
  • 书中提到了广告计费系统的合并扣费,把用户分组,多个扣款的请求合并成一个,也就是说只需要调用一次数据库,减少了数据库压力,也提高了执行效率。虽然这是高并发写,但同样可以参考拙作高并发场景下请求合并(批量)。
高可靠
  • 高可靠:为了让系统变得更靠谱,尽可能减少故障发生次数。总结下面7个有效措施。
七板斧
  • 1、限流
  • 2、降级
  • 3、熔断
  • 4、超时与重试
  • 5、隔离
  • 6、灰度发布、滚动发布、备份、回滚
  • 7、监控体系和日志报警
高可用
  • 高可用:为了故障发生后,故障恢复时间尽可能的短。要想快速恢复,要避免单点。
高可用架构几个核心问题
  • 故障探测。
  • 脑裂问题。
  • 数据一致性。
  • 对客户端透明。
  • 高可用依赖的连环套问题。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1024097.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号