架构修炼之道--笔记
-
网关之道
API网关专注于安全/流量/路由。
网关和代理的区别:代理纯粹是数据透传,协议不会发生变化。网关会有协议的转换。
基本功能:统一接入,协议适配,流量管控与容错,以及安全防护。
API网关基石--泛化调用,返回值都是Map来表示。
管道技术和责任链模式的区别在于管道更加灵活。责任链使用受限于方法,而管道完全可以自由定义。
同步/异步是数据通信的方式,阻塞和非阻塞是一种状态。
NIO是一种I/O的模型,与传统的BIO相比,它可以利用较少的线程处理更多的连接从而增加机器的吞吐量。
多级缓存,必须重视穿透率,穿透率大了说明缓存效果不好,因为缓存使用率低了。将缓存持久化,意味着不设置过期时间,但是需要注意数据更新的问题。 -
开发之道
OAuth是让第三方应用不需要用户名密码即可读取用户数据的一种认证过程。
降级/限流/熔断是API网关的基本功能。
SPI的概念是:service provider interface。平台制定接口,第三方去实现。SPI可以认为是API的反向调用。
水平越权是因为没有做数据的归属判断。(不属于当前用户的访问权限,还能继续访问)。垂直越权:没有权限控制或者攻击者绕过了前端验证。 -
分布式之道
分布式系统在满足分区容错性前提下,一致性和可用性只能选择一个。互联网最核心的需求是什么?高可用。
zookeeper的安全性较高,因为zookeeper可持久化,可靠性高。
redis适合高并发场景且效率高,缺点内存大小不足。
令牌桶:桶的容量,放入令牌的速度,消耗令牌的速度。可以限制传输速度还允许数据的突发传输。
漏桶算法:强行限制数据的传输速度。 -
MQ之道
空间解耦:生产者不需要知道消费者的存在。
时间解耦:不关心消费者什么时候去消费。
与观察者模式区别在于:MQ在发布者和订阅者之间加了队列,让他们解耦。 -
消息推送之道
半推半拉方式:服务端通知已经在其注册的设备,有新消息可以接受,将这个短小消息发给客户端,客户端收到后,需要接收的话,就带上刚服务端发给他的“门卡”去拉去实体消息。这种方式极大程度上减少了资源的浪费。
Http1.1增加了长链接,http2优化了传输性能,多路复用请求,压缩http头部技术等。 -
RPC之道
动态代理,反射,序列化,网络编程。 -
I/O之道
I/O多路复用,多个TCP连接,复用一个线程。 -
微服务之道
单机,分布式,微服务。 -
容错之道
线程池隔离的缺点是增加CPU的开销,每个业务在执行的时候,会涉及请求排队/调度/上下文的切换。
系统在运行过程中定时向对应的熔断器报告成功/失败/超时和拒绝状态。熔断器不能替代应用程序中业务逻辑的异常处理。
对于不依赖与网络访问的服务,不适用使用线程池隔离技术,而是采用信号量隔离。
