秒杀购物商城业务服务-分布式架构介绍
- 基于MySQL数据库集群技术实现服务的高可用
- 基于Tomcat的集群负载机制实现Tomcat服务器的高可用
- 基于Nginx负载均衡机制实现负载均衡(介绍和配置)
- 基于Redis缓存服务实现数据缓存控制相关介绍和技术点分析
- 对未来的分布式技术架构扩展和延伸介绍(包含云原生部分)
基于MySQL数据库集群技术实现服务的高可用
高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用。对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能保证整个系统的高可用。对于数据库服务而言,高可用可能更复杂,对用户的服务可用,不仅仅是能访问,还需要有正确性保证,因此数据库的高可用需要更加认证对待。
MySQL高可用架构分类
- MySQL实现高可用之MMM
- MySQL实现高可用之MHA
- MySQL实现高可用之主从架构
- MySQL实现高可用之Cluster模式
MMM的技术分析
MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序。
MMM的基础组件分析
- mmm_mond:监控进程,负责所有的监控工作,决定和处理所有节点角色活动。因此,脚本需要在监管上运行。
- mmm_agentd:运行在每个msql服务器上的代理进程,完成监控的探针工作和执行简单的远端服务设置。此脚本需要在被监管机上运行。
- mmm_control:一个简单的脚本,提供管理mmm_mond进行的命令。
MMM实现基本实现原理
MMM提供了自动和手动两种方式移除一组服务器中复制延迟较高的服务器的虚拟ip,同时它还可以备份数据,实现两节点之间的数据同步等。
MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。
MHA简介
MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司的youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。
MHA的基础组件
MHA由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。
MHA Manager可以单独部署在独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。
MHA的实现原理
- MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。
MySQL主从架构
此种架构,一般初创企业比较常用,也便于后面步步的扩展
此架构特点
- 成本低,布署快速、方便
- 读写分离
- 还能通过及时增加从库来减少读库压力
- 主库单点故障
- 数据一致性问题(同步延迟造成)
MySQL Cluster基本概念
MySQL Cluster简单地讲是一种MySQL集群的技术,是由一组计算机构成,每台计算机可以存放一个或者多个节点,其中包括MySQL服务器,DNB Cluster的数据节点,管理其他节点,以及专门的数据访问程序,这些节点组合在一起,就可以为应用提高可高性能、高可用性和可缩放性的Cluster数据管理;