架构冗余
参考:
wcf分布式构架集群案例解决方案 - 指尖流淌 - 博客园 --运行代码测试秒杀效果,再研究下代码
云区域(region),可用区(AZ),跨区域数据复制(Cross-region replication)与灾备(Disaster Recovery)(部分2)
冗余是什么:
单体
单体:是把系统部署到一台服务器上,所有的请求业务都由这台服务器处理
优点:适合小型系统,节省资源
缺点:安全性低,一旦有突发压力, 整个系统都会面临崩溃
集群
集群:把系统的各个功能拆分成不同的小系统,主要是分散能力
优点:资源利用率高,可以承担部分压力,降低耦合度,易于扩展
缺点:安全性低,如果其中一台服务器出现问题整个系统就会崩塌 忌:服务器架构单点,集成必须解决单点问题
冗余是什么
多余的重复或啰嗦内容(包括信息、语言、代码、结构、服务、软件、硬件等等)均称为冗余。冗余有两层含义,第一层含义是指多余的不需要的部分,第二层含义是指人为增加重复部分,其目的是用来对原本的单一部分进行备份,以达到增强其安全性的目的,这在信息通信系统当中有着较为广泛的应用。
我们可以从两方面理解:
第一层:表示多余的不需要的部分,举个例子:一个数据库可以存储100万条数据,但是我们可以设置最多存储80万条,剩余的20万就是冗余,这样就提高一定的读写性能。那如果达到80万之后还要增加数据怎么办?可以通过更换硬件、增加数据库数量、分库分表等方式来解决!
第二层:是说增加重复部分,上面所说的集群可以说是一种冗余
总结:集群是一种冗余,但是冗余可不一定是集群!
冗余能够给我们架构带来什么
解决服务器架构单点! ! ! 具体表现:实现架构的高并发[多客户场景],实现系统高可用[安全场景]
一个好的系统设计应该是分布式和集群的结合,先分布式再集群,设置适当的冗余, 具体实现就是业务拆分成很多子业务,然后针对每个子业务进行集群部署,这样某个子业务如果出了问题, 整个系统完全不会受影响。
冗余设计原则
1,平衡主节点故障允许时间T1和主备节点切换时间T2。 由于对于整个系统而言,需求被定位在节点的故障允许时间T。 当T1太长、T2太短时,系统用来监视主备节点运行状态的消耗就少些, 但对主备节点的切换性能要求高,这只有在主备节点间数据同步很充分的时候, 才能做到,所以就提高了对数据同步要求。
2,减少需要同步的数据量。一方面,对构件信息进行良好归类,分离出静态信息和可以自行获得的信息, 不需要对这些信息进行同步。另一方面,增大构件的尺寸,把内部联系紧密的构件聚合成较大的构件, 这样就减少了需要跟外部交换的信息,也可以减少需要同步的数据量。
被动式冗余架构
基于失败重试原理,在可用的服务提供者之间重试,直到找到一个可用的提供者。被动式冗余是简单的, 但也有很大的局限性,它要求冗余节点只是作为信息的处理者, 完全作为C/S架构中的S,而不可能作为信息的发起者。这类冗余在事务处理系统(MIS)中比较常见, 因为这类系统总是响应用户的操作,而很少会有自动收集信息并处理的业务。 经典场景:容灾机制
主动冗余架构
是主备节点间设有交换运行状态的通讯通道,由他们自行协商何时进行主备切换,可以称为自控方式。
另一种是基于一个中心的冗余控制器,冗余控制器分别与主备节点通讯,并决定何时进行主备切换,可以称为集控方式。 经典场景:负载均衡高可用
分布式—给我们架构带来什么
分布式,把系统的各个功能拆分成不同的小系统,主要是分散能力。
优点:资源利用率高,可以承担部分压力,降低耦合度,易于扩展
缺点:安全性低,如果其中一台服务器出现问题整个系统就会崩塌
分布式:
是一个集群,同一个业务,部署在多个服务器上。分布式:一个业务分拆成多个子业务,或者本身就是不同的业务,部署在不同的服务器上。简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。举例:就比如新浪网,访问的人多了,他可以做一个群集,前面放一个均衡服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成,并且一台服务器垮了,其它的服务器可以顶上来。分布式的每一个节点,都完成不同的业务,一个节点垮了,那这个业务可能就失败了。
分布式-高并发场景
wcf分布式集群,在实战中利用“索引”这个概念做出"海量数据“的秒杀。 源码分析见后面章节
反向代理-高可用发场景
上期作业回顾,普通的高可用场景 用nginx+haproxy+keepalived实现框架高可用
负载均衡-高可用发场景
概述
负载均衡通过设置虚拟服务地址,将添加的同一地域的多台ECS实例虚拟成一个高性能、高可用的后端服务池, 根据转发规则,将来自客户端的请求分发给后端服务器池中的ECS实例。
实现原理
负载均衡默认检查云服务器池中的ECS实例的健康状态,自动隔离异常状态的ECS实例,消除了单台ECS实例的单点故障,提高了应用的整体服务能力。此外,负载均衡还具备抗DDoS攻击的能力,增强了应用服务的防护能力。
负载均衡是怎么实现
负载均衡由以下三个部分组成:
- 负载均衡实例 (Server Load Balancer instances):一个负载均衡实例是一个运行的负载均衡服务,用来接收流量并将其分配给后端服务器。要使用负载均衡服务,您必须创建一个负载均衡实例,并至少添加一个监听和两台ECS实例。
- 监听 (Listeners):监听用来检查客户端请求并将请求转发给后端服务器。监听也会对后端服务器进行健康检查。
- 后端服务器(Backend Servers):一组接收前端请求的ECS实例。您可以单独添加ECS实例到后端服务器池,也可以通过虚拟服务器组或主备服务器组来批量添加和管理。
高可用—阿里云实现负载均衡
负载均衡(SLB) 高可用+高并发架构实现 https://www.aliyun.com/product/slb?spm=5176.10695662.1112700.1.10397899RAMKVn
高并发/高可用拓展—同城/异地架构双活
本文版权归作者和博客园共有,欢迎转载,但必须在文章页面给出原文链接,否则保留追究法律责任的权利。