架构师训练营第五周总结

用户头像
王铭铭
关注
发布于: 2020 年 07 月 08 日

缓存:

1.把访问频繁的,相对稳定的数据结果,存在离用户相对近的地方,通过多层级缓存,过滤到大量的请求,可保护后端低速设备。

2.缓存无处不在,是一种性价比非常高的技术方案,从浏览器缓存、CDN、反向代理缓存、分布式数据缓存、本地缓存、数据库缓存等,调用链上任何环节都可以缓存。

3.缓存雪崩,是指在某一个时间段,缓存集中过期失效。

解决方案 :设置较长的过期时间。

4.缓存穿透。缓存穿透的场景是查询一个根本不存在的数据,缓存不存在,数据库也不存在,这种情况下缓存没什么作用,当请求量大的时候,所有的请求都到了数据库,假如有恶意攻击,就可以利用这个漏洞,对数据库造成压力,甚至压垮数据库。

消息中间件:

1.优势:

    a.可提高并发性能,屏蔽消费者和生产者之间处理能差异,通过消息中间件可以保护消费者,让消费者按自己节奏处理,持续而稳定,削峰填谷。

    b.可提高可用性,通过引入消息中间件,把消费者和生产者的同步调用,拆分成异步调用,任何一方短时间的故障,都不会影响到对方,同时异步可以提高系统的吞吐。在RPC调用者,一般通过超时、熔断来提高可用性。

    c.可提高可维护性,消息中间件是消费者和生产者之间“接口层”,只要通信协议不变化,任何一方都可以进行升级,而无需告知对方。

    d.可提高可扩展性,符合开闭原则,面向扩展是开放的,对修改是关闭的,尤其是对于订阅发布模式,发布者代码不用修改,通过扩展订阅者,就能扩展业务。

    e.可提高伸缩性的灵活性,生产者、消息中间件、消费者,通过消息中间件分割了,三者都可以根据自己的负载情况,按需伸缩。

    f.可提高内聚性和低耦合,系统之间通过实现定义的接口协议通信,除此之外没有耦合性。

g.消息中间件是企业的重要基础设施,在面向SOA架构中,ESB一般内置消息中间件,是分布式事务“可靠消息”的核心组件。

2.应用场景:

   1)异步通信

有些业务不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。

   2)解耦

降低工程间的强依赖程度,针对异构系统进行适配。在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。通过消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口,当应用发生变化时,可以独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。

   3)冗余

 

有些情况下,处理数据的过程会失败。除非数据被持久化,否则将造成丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消息队列所采用的”插入-获取-删除”范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用完毕。

4)扩展性

因为消息队列解耦了你的处理过程,所以增大消息入队和处理的频率是很容易的,只要另外增加处理过程即可。不需要改变代码、不需要调节参数。便于分布式扩容。

5)过载保护

在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量无法提取预知;如果以为了能处理这类瞬间峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。

6)可恢复性

系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。

7)顺序保证

在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。

    8)缓冲

在任何重要的系统中,都会有需要不同的处理时间的元素。消息队列通过一个缓冲层来帮助任务最高效率的执行,该缓冲有助于控制和优化数据流经过系统的速度。以调节系统响应时间。

   9)数据流处理

分布式系统产生的海量数据流,如:业务日志、监控数据、用户行为等,针对这些数据流进行实时或批量采集汇总,然后进行大数据分析是当前互联网的必备技术,通过消息队列完成此类数据收集是最好的选择。

负载均衡:

负载均衡算法可以分为两类:静态负载均衡算法和动态负载均衡算法。

1)静态负载均衡算法包括:轮询,比率,优先权

轮询(Round Robin):顺序循环将请求一次顺序循环地连接每个服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从顺序循环队列中拿出,不参加下一次的轮询,直到其恢复正常。

比率(Ratio):给每个服务器分配一个加权值为比例,根椐这个比例,把用户的请求分配到每个服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配, 直到其恢复正常。

优先权(Priority):给所有服务器分组,给每个组定义优先权,BIG-IP 用户的请求,分配给优先级最高的服务器组(在同一组内,采用轮询或比率算法,分配用户的请求);当最高优先级中所有服务器出现故障,BIG-IP 才将请求送给次优先级的服务器组。这种方式,实际为用户提供一种热备份的方式。

2)动态负载均衡算法包括: 最少连接数,最快响应速度,观察方法,预测法,动态性能分配,动态服务器补充,服务质量,服务类型,规则模式。

最少的连接方式(Least Connection):传递新的连接给那些进行最少连接处理的服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配, 直到其恢复正常。

最快模式(Fastest):传递连接给那些响应最快的服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。

观察模式(Observed):连接数目和响应时间以这两项的最佳平衡为依据为新的请求选择服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。

预测模式(Predictive):BIG-IP利用收集到的服务器当前的性能指标,进行预测分析,选择一台服务器在下一个时间片内,其性能将达到最佳的服务器相应用户的请求。(被BIG-IP 进行检测)

动态性能分配(Dynamic Ratio-APM):BIG-IP 收集到的应用程序和应用服务器的各项性能参数,动态调整流量分配。

动态服务器补充(Dynamic Server Act.):当主服务器群中因故障导致数量减少时,动态地将备份服务器补充至主服务器群。

服务质量(QoS):按不同的优先级对数据流进行分配。

服务类型(ToS):按不同的服务类型(在Type of Field中标识)负载均衡对数据流进行分配。

 

用户头像

王铭铭

关注

还未添加个人签名 2020.01.14 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第五周总结