课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习计算机编程开发技术,而今天我们就一起来了解一下,软件开发高可用性实现方法。
高可用是系统架构设计中必须考虑的因素之一。通常是指,经过设计来减少系统不能提供服务的时间。\
系统高可用性的常用设计模式包括三种:
主备(Master-SLave)
互备(Multi-Master)
集群(Cluster)模式
高可用HA下"脑裂问题"
在高可用(HA)系统中,当联系两个节点的"心跳线"断开时(即两个节点断开联系时),本来为一个整体、动作协调的HA系统,就分裂成为两个独立的节点(即两个独立的个体)。
【脑裂预防方案】
添加冗余的心跳线[即冗余通信的方法]:同时用两条心跳线路(即心跳线也HA),这样一条线路坏了,另一个还是好的,依然能传送心跳消息,尽量减少"脑裂"现象的发生几率。
【仲裁机制】
当两个节点出现分歧时,由3方的仲裁者决定听谁的。这个仲裁者,可能是一个锁服务。
【隔离(Fencing)机制】
共享存储fencing:确保只有一个Master往共享存储中写数据;
客户端fencing:确保只有一个Master可以响应客户端的请求;
Slavefencing:确保只有一个Master可以向Slave下发命令。
负载均衡
轮询(次数hash):默认方式,每个请求会按时间顺序逐一分配到不同的后端服务器
weight:权重方式,在轮询策略的基础上指定轮询的几率,权重越大,接受请求越多
ip_hash:依据ip分配方式,相同的客户端的请求一直发送到相同的服务器,以保证session会话
least_conn:少连接方式,把请求转发给连接数较少的后端服务器
fair:响应时间方式,按照服务器端的响应时间来分配请求,响应时间短的优先分配
url_hash:依据URL分配方式,按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器
Random随机机制。
服务限流
限流算法-计数器(固定窗口)计数器限制每一分钟或者每一秒钟内请求不能超过一定的次数,在下一秒钟计数器清零重新计算。存在问题:客户端在一分钟的59秒请求100次,在二分钟的1秒又请求了100次,2秒内后端会受到200次请求的压力,形成了流量突刺
限流算法-计数器(滑动窗口)滑动窗口其实是细分后的计数器,它将每个时间窗口又细分成若干个时间片段,每过一个时间片段,整个时间窗口就会往右移动一格。时间窗口向右滑动一格,这时这个时间窗口其实已经打满了100次,客户端将被拒绝访问,时间窗口划分的越细,滑动窗口的滚动就越平滑,限流的效果就会越精确
限流算法-漏桶(削峰填谷)漏桶算法类似一个限制出水速度的水桶,通过一个固定大小FIFO队列+定时取队列元素的方式实现,请求进入队列后会被匀速的取出处理(桶底部开口匀速出水),当队列被占满后后来的请求会直接拒绝(水倒的太快从桶中溢出来)
限流算法-令牌桶令牌桶算法是以一个恒定的速度往桶里放置令牌(如果桶里的令牌满了就废弃),每进来一个请求去桶里找令牌,有的话就拿走令牌继续处理,没有就拒绝请求。
令牌桶的优点是可以应对突发流量缺点就是相对漏桶一定程度上减小了对下游服务的保护
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。