网站建设速成班培训,北京哪个网站制作公司,官方网站开发制作,天津通用网站建设方案在介绍高可用架构的方案之前#xff0c;先说一下什么是高可用架构#xff0c;高可用架构应具备但不限于以下特征#xff1a; 主从切换 很好理解#xff0c;当其中一台机器的服务宕机后#xff0c;对于服务调用者来说#xff0c;能够迅速的切换到其他可用服务#xff0c;…在介绍高可用架构的方案之前先说一下什么是高可用架构高可用架构应具备但不限于以下特征 主从切换 很好理解当其中一台机器的服务宕机后对于服务调用者来说能够迅速的切换到其他可用服务从服务升级为主服务这种切换速度应当控制在秒级别几秒钟。 当宕机的服务恢复之后自动变为从服务主从服务角色切换。主从切换一定是要付出代价的所以当主服务恢复之后也就不再替换现有的主服务。 负载均衡 当服务的请求量比较高的时候一台服务不能满足需求这时候需要多台机器提供同样的服务将所有请求分发到不同机器上。 高可用架构中应该具有丰富的负载均衡策略和易调节负载的方式。 甚至可以自动化智能调节例如由于机器性能的原因响应时间可能不一样这时候可以向性能差的机器少一点分发量保证各个机器响应时间的均衡。 易横向扩展 当用户量越来越多已有服务不能承载更多的用户的时候便需要对服务进行扩展扩展的方式最好是不触动原有服务对于服务的调用者是透明的。
业务中接触到的6种高可用方案如下
LVSKeepalive
LVS的全称是linux visural server即虚拟的linux机器这个名称再恰当不过了。该方案的实现大概是这样的。 在多台linux机器上安装IPVS和keepaliveIPVS实际上是一个虚拟的linux服务具有linux机器的部分功能各个机器上分别启动一个Linux虚拟服务虚拟机这些linux虚拟服务虚拟机设置为同一个IP称之为虚IP这样在一个内网中就只能有一个linux虚拟服务能够抢占到这个虚拟IP。所有的请求都指向这一个虚IP假如抢占到虚IP的机器挂了这时候其他linux虚拟服务就会有其中一个抢占到虚IP对于服务调用者来说仍然可以访问到服务。keepalive的作用就是用来检测linux虚拟服务是否正常的。头条插入代码实在不方便需要详细的配置方案的可以私信我。
NIGNX
Nginx本是一个反向代理服务器但由于丰富的负载均衡策略常常被用于客户端可真实的服务器之间作为负载均衡的实现。 说一下什么是反向代理和正向代理
正向代理被代理的是客户端比如通过XX代理访问国外的某些网站实际上客户端没有权限访问国外的网站客户端请求XX代理服务器XX代理服务器访问国外网站将国外网站返回的内容传给真正的用户。用户对于服务器是隐藏的服务器并不知道真实的用户。
反向代理被代理的是服务器也就是客户端访问了一个所谓的服务器服务器会将请求转发给后台真实的服务器真实的服务器做出响应通过代理服务器将结果返给客户端。服务器对于用户来说是隐藏的用户不知道真实的服务器是哪个。
关于正向代理和反向代理听起来比较绕仔细理解体会也不难明白到底是什么意思。
用nginx做实现服务的高可用nginx本身可能成为单点遇见的两种解决方案一种是公司搭建自己的DNS将请求解析到不同的NGINX另一只是配合keepalive实现服务的存活检测。
Zookpeer
想必接触过分布式服务的应该对zookeeper都有所了解最起码也听说过吧zookeeper本身实现了高可用zookeeper本身的高可用及原理在这儿不详细介绍这里只介绍如果通过zookeeper管理服务。
zookeeper本身可以存储数据服务启动之后可以向zookeeper注册调用者可以到zookeeper上发现服务。提供服务的一直保持与zookeeper的通信通过心跳证明服务的可用性。当服务挂掉之后对应注册的接点会消失这时候调用者就不能找到已经失效的服务。
关于zookeeper实现服务高可用以后会详细介绍。 由客户端实现的高可用方案
以memcache 为例客户端同时与好几个服务保持连接按照一定的规则去调用服务当服务挂掉之后重新调整规则。当然如果服务器不做主从备份的话可能会造成部分数据丢失。感兴趣的可以关注以后发的关于对memache的详细介绍的文章。
服务之间通信实现高可用
这种经典的案例就是redis了各个redis之间保持通信当主服务挂掉之后从服务就会升为主服务。对于客户端来说几乎是透明的。
通过中间件实现高可用
这里暂时不详细介绍说一下我了解的几个中间件mycat 实现mysql高可用的中间件。
早期版本redis不支持集群那时候redis的高可用也是基于中间件来做的。