《架构成长篇九》中间件最后一章,谈谈系统高可用中间件

前言

(坚持记录自己的所学所得,与有缘人共享,探讨…….欢迎甲流,如有错误,望不吝赐教)

高可用是现代化微服务系统追求的功能,高可用的架构让系统稳定性得到了提高(俗话就是,当一台服务器或者几台服务器宕机后,整个对外的服务不会因此停止运行而对业务造成损失),也让服务器之间做到了负载均衡,提升了服务器的性能。那么都有什么地方可以做高可用的架构呢,又有什么中间件可以做到服务之间的高可用呢,本篇会做个详细的介绍。

正文

下面我们会从一个系统的各个层级来介绍高可用的相关设计方式及主要使用的中间件,会从数据流的取用来分析各个层级的高可用结构,依次是db–后台服务–web服务–nginx服务,详情如下:

mycat:数据库的高可用

mysql数据库可以说是现代企业都喜欢使用的关系型db,免费开源,性能也还过得去,但是相比oracle这些高大上的商业db还是有很多缺憾,分片存储就是其中最限制mysql发展的一点。mysql底层的分片存储性性能很差,而且有可能造成宕机时的数据丢失,因此业界基本都会使用mycat来做分表分库来做到mysql的高可用。不过mycat还是有很多缺点,比如分页查询,它的分页查询会导致页面越靠后查询性能越慢,因为mycat的每次分页都会把之前的每个分表数据都取出来做比对。还有join查询,mycat只支持一个join的跨库连接,有这些需求的系统使用mycat都需要考虑。

zookeeper,eureka:微服务的高可用

微服务中的注册中心是服务之间高可用的保障,注册中心维护了每个后台服务的各个节点,当其中一台宕机后,可以将应用上游的请求导入到其他存活的节点中,如此来确保服务的正常运行。zookeeper比较常见与dubbo后台服务,而eureka则是springcloud家族中的一员。他俩的区别主要在于zookeeper是必须确保节点的消息全部同步到各个集群中后才能对外提供服务,因此zookeeper的可用性不是太好。而eureka则避免的这种情况,首先确保对节点的可用性,其后才考虑每个集群节点之间的同步。

nginx:web服务的高可用

nginx是目前互联 webservice配套的中间件工具,以反向代理的方式,连接到整个后台的webservie集群,内部支持多种负载均衡设计,用户可以根据自己的业务定制对应的负载均衡策略。

keepalive:nginx的高可用

keepalive可以对一些内部不支持集群的服务器做主备分离的高可用处理,比如nginx,可以在多台服务器中配置nginx连接相同的后台服务,但是不可能每个nginx都对外提供访问入口,然后一个地址挂了叫用户用另一个地址访问。因此就需要keepalive来对每个nginx的服务器做主备配置,对外提供统一入口。当主节点宕机后,keepalive会漂移对外ip到对应的存活nginx服务器,以此来实现nginx服务器的主备切换的高可用配置。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年9月3日
下一篇 2019年9月4日

相关推荐