架构修炼之道读书笔记(1)

第一部分 网关 和 开放之道

  • API Gateway 出现的原因

​ 微服务化后,pc/移动端调用服务端,需要多个url,而微服务化后必须有统一的入口,这样情况下,API Gateway 作为统一入口出现,同时 网关内外还会发生协议的转化 ,可能从http转变为RPC协议,同时网关还需要有 统一接入、安全防护、流量管控和容错的等功能

  • API 网关的基石,泛化调用

    ​ API网关不需要再导入服务提供方的jar包,参数和返回值中的POJO都用 Map来表示

  • 传统网关的死法

    • 性能低的API占用 cpu ,线程数上升,耗尽cpu
    • 日志不合理 ,导致I/O 拖垮网关
    • 网络延迟,线程数上升,拖垮网关
    • 等等
  • Servlet 3.0 Aysnc 和 SpringMVC Async

    • Servlet 3.0 Aysnc 是Servlet3.0 支持异步处理 Servlet
  • SpringMVC Async 是在 Servlet 3异步基础上做的一层封装(Servlet 3.0 的非阻塞I/O 仅在Servlet 异步处理起作用!使I/O操作是非阻塞的)

  • API 和 SPI的区别

    • SPI 是一方指定接口,却不去实现,另一方去实现,平台制定接口,第三方去实现
    • 可以认为SPI是和 API 的 反向调用
  • 越权漏铜

    • 水平越权 :登录用户可以访问不属于他的数据
    • 垂直越权:又叫权限提升,主要原因是应用程序压根没有做权限限制

    第三章 分布式之道

    CAP 是分布式的基础理论,BASE 则是在CAP理论基础上在互联网行业的实具体实现

    • 基本可用:分布式系统出现故障时候,允许损失一部分可用性,拿响应时间和功能上损失来换取
    • 软状态:柔性状态,下单后可以显示正在支付中,等待数据同步完成,才显示支付完成
    • 最终一致性: 在允许出现中间状态情况下,经过一段时间后,最终达到一致性
  • 分布式锁的实现

    • zookeeper:不需要加入超时时间,客户端异常会自动释放锁;创建临时节点,需要磁盘读写,性能开销比较大,不适合高并发场景
    • redis:支持高并发且效率高;但是遇到内存不足,可能会丢失锁信息。必须加上超时时间,以防止出现死锁问题
  • 分布式限流(利用Redis作为公共存储计数器)

    • 单机限流 漏桶法(强制限流,不能应对突发流量) 和 令牌桶 算法
  • 衡量性能指标

    • QPS: 服务器每秒能响应的查询次数

    • TPS: 一台服务器每秒内处理的事务数目(整个完整的事务包括用户请求服务器,服务器内部处理,服务器返回信息),TPS类型QPS ,但是一般一次TPS会产生多次QPS,所以TPS<=QPS

    • RT: 响应时间,客户端从发送请求开始,到收到请求所经历的时间

    • 并发数:系统能够同时处理的查询请求数量或事务数量,当并发数为查询请求数量时候,QPS=并发数/平均响应时间;当并发数为事务处理数时,TPS= 并发数/平均响应时间

      (总pv0.8)/(每天秒数 *0.2) = 峰值QPS

      峰值QPS/单台机器QPS = 需要的机器数

你可能感兴趣的:(读书笔记)