Spiga

标签为高可用的文章

构建高可用应用(三):架构冗余

2017-07-16 10:44:40

摘要:什么架构冗余 单体 单体:是把系统部署到一台服务器上,所有的请求业务都由这台服务器处理 优点:适合小型系统,节省资源 缺点:安全性低,一旦有突发压力, 整个系统都会面临崩溃 集群 集群:把系统的各个功能拆分成不同的小系统,主要是分散能力 优点:资源利用率高,可以承担部分压力,降低耦合度,易于扩展 缺点:安全性低,如果其中一台服务器出现问题整个系统就会崩塌 忌:服务器架构单点,集成必须解决单点问题 冗余是什么 多余的重复或啰嗦内容(包括信息、语言、代码、结构、服务、软件、硬件等等)均称为冗余。冗余有两层含义,第一层含义是指多余的不需要的部分,第二层含义是指人为增加重复部分,其目的是用来对原本的单一部分进行备份,以达到增强其安全性的目的,这在信息通信系统当中有着较为广泛的应用。 我们可以从两方面理解: 第一层:表示多余的不需要的部分,举个例子:一个数据库可以存储100万条数据,但是我们可以设置最多存储80万条,剩余的20万就是冗余,这样就提高一定的读写性能。那如果达到80万之后还要增加数据怎么办?可以通过更换硬件、增加数据库数量、分库分表等方式来解决! 第二层:是说增加重复部分,上面所说的集群可以说是一种冗余 总结:集群是一种冗余,但是冗余可不一定是集群! 冗余能够给我们架构带来什么 解决服务器架构单点! ! ! 具体表现:实现架构的高并发[多客户场景],实现系统高可用[安全场景] 一个好的系统设计应该是分布式和集群的结合,先分布式再集群,设置适当的冗余, 具体实现就是业务拆分成很多子业务,然后针对每个子业务进行集群部署,这样某个子业务如果出了问题, 整个系统完全不会受影响。 冗余设计原则 1,平衡主节点故障允许时间T1和主备节点切换时间T2。 由于对于整个系统而言,需求被定位在节点的故障允许时间T。 当T1太长、T2太短时,系统用来监视主备节点运行状态的消耗就少些, 但对主备节点的切换性能要求高,这只有在主备节点间数据同步很充分的时候, 才能做到,所以就提高了对数据同步要求。 2,减少需要同步的数据量。一方面,对构件信息进行良好归类,分离出静态信息和可以自行获得的信息, 不需要对这些信息进行同步。另一方面,增大构件的尺寸,把内部联系紧密的构件聚合成较大的构件, 这样就减少了需要跟外部交换的信息,也可以减少需要同步的数据量。 被动式冗余架构 基于失败重试原理,在…… 阅读全文

构建高可用应用(二):分层实例 nginx实现keeplived

2017-07-05 19:37:27

摘要:高可用负载均衡: haproxy+keepalived 正文: 企业业务量比较小的时候,单台服务器就可以满足业务需要了。但是随着业务发展,单服务器的问题就凸显出来了: ·当服务器挂掉时,业务就会中断 ·当业务量增加,单台服务器性能变差,如何透明的扩展服务器和带宽,增加服务器吞吐量 负载均衡器可以解决以上问题 1 负载均衡器拓扑图 本文会根据拓扑图,用haproxy和keepalived搭建一个负载均衡器 2 准备 2.1 准备环境 准备5台CentOS7.3主机和一个VIP地址: ·准备一个可用IP用作虚拟IP(VIP): VIP: 192.168.1.100 ·负载均衡器会用到2台主机,一主一备的架构 lb1(默认为主): 192.168.1.101 lb2(默认为备): 192.168.1.102 ·后端服务器集群中主机的IP地址 s1: 192.168.1.2 s2: 192.168.1.3 s3: 192.168.1.4 2.2 主机配置 2.2.1 所有主机上关闭防火墙 systemctl stop firewalld systemctl disable firewalld 2.2.2 所有主机关闭selinux setenforce 0 vi /etc/selinux/config SELINUX=disabled 2.3 安装haproxy和keepalived lb1和lb2上安装haproxy和keepalived yum install haproxy keepalived -y 2.4 安装nginx(有其他后端测程序,可省略此步) s1 s2 s3上安装nginx,目的是把nginx作为后端,如果有其他后端程序,这一步可以省略 yum install epel-release -y yum install nginx -y 2.3 配置keepalived KeepAlived是基于VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)实现的一个高可用方案,通过VIP(虚拟IP)和心跳检测来实现高可用 Keepalived有两个角色,Master和Backup。一般会是1个Master,多个Backup。 Master会绑定VIP到自己网卡上,对外提供服务。Master和Backup会…… 阅读全文

构建高可用应用(一):架构分层

2017-06-29 23:06:29

摘要:什么是架构分层 架构的原理,分层的意义所在 富士康工厂10000人以上规模,目标:每天百万级的手机产出。如何实现呢? 角色分类,节点分离,在管理上面很常见。同理,架构也不外乎如此。 分层是表示将功能进行有序的分组:应用程序专用功能位于上层,跨越应用程序领域的功能位于中层,而配置环境专用功能位于低层。分层从逻辑上将子系统划分成许多集合,而层间关系的形成要遵循一定的规则。通过分层,可以限制子系统间的依赖关系,使系统以更松散的方式耦合,从而更易于维护。子系统的分组标准包含以下几条规则可见度。各子系统只能与同一层及其下一层的子系统存在依赖关系 为什么要架构分层 分层为什么在高可用/高并发场景必不可少 分层结构将应用系统正交地划分为若干层,每一层只解决问题的一部分,通过各层的协作提供整体解决方案。大的问题被分解为一系列相对独立的子问题,局部化在每一层中,这样就有效的降低了单个问题的规模和复杂度,实现了复杂系统的第一步也是最为关键的一步分解。 分层结构具有良好的可扩展性,为应用系统的演化增长提供了一个灵活的框架,具有良好的可扩展性。增加新的功能时,无须对现有的代码做修改,业务逻辑可以得到最大限度的重用。同时,层与层之间可以方便地插入新的层来扩展应用。 分层架构易于维护。在对系统进行分解后,不同的功能被封装在不同的层中,层与层之间的耦合显著降低。因此在修改某个层的代码时,只要不涉及层与层之间的接口,就不会对其他层造成严重影响。 反例,过度设计,分层会给我们带来哪些弊端 功能上线后,用户不关心 资源浪费 迭代速度慢,失去业务拓展的好时机 使用场景 分层在高可用使用场景 服务器架构keeolived 服务器架构脑裂场景 分层在高并发使用场景 服务器弹性伸缩 nginx反向代理 分层案例 反向代理同步架构 http://nginx.org CQRS异步架构 http://liuy.com/files/NiuNiuCQRs.zip 微服务中台架构 经典服务器分层架构图 阅读全文