每年进入3-4月所有的高等院校开始了一年一度的毕业生答辩准备阶段,现如今毕业论文或者毕业设计也更加的贴近了互联发展的趋势,很多学校开始做最热话题云计算openstack架构的实现以及云计算环境搭建,先不说这个毕业设计的切入点是否正确,就说选择该题目后你如何下手?下面给大家分享千锋讲师给学员准备的高并发大型互联网站架构设计第四部分。
数据库
一个公司的数据相当于一个公司的经济命脉,如果数据丢失或者数据出现误差,那么将有可能使这个公司不复存在。所以保障数据库的高可用就显得尤为重要了。
保障数据库的高可用其根本在于避免单节点故障,刚开始时我们的网站数据库架构只有后端的MySQL集群服务器,随着数据量的增加,无关系的数据越来越多,为了应对更大的流量,减少开销,在MySQL集群前加入了Redis集群,再到后来,数据库的流量进一步增大,为了缓解数据库服务器的压力,在Redis集群前又加入了MQ,以确保数据库的高可用及快速访问。如图2-7所示:
图2-7 数据库架构图
MySQL
MySQL是一个小型关系型数据库管理系统,目前MySQL被广泛地应用在中小型网站中。因为其具有体积小、速度快、总体拥有成本低,开放源代码等特点[15]。
MySQL高可用
在设计MySQL数据库的高可用的架构时,重点要满足以下几点要求:
1.保证数据库的可用性,如果发生意外情况,要能够快速响应。
2.主从数据库数据要保持实时一致,尽量避免出现主从延迟的情况。
3.切换数据库主从时,要避免数据丢失。
MySQL常用的有三种高可用方案:主从(也称AB复制),MySQL cluster,galera。
AB复制:双节点数据库,有架构简单,部署简单等特点。
MySQL cluster是官方集群的部署方案,通过使用NDB存储引擎实时备份冗余数据,实现数据库的高可用性和数据一致性。
基于Galera的MySQL高可用集群,是多主数据同步的MySQL集群解决方案,使用简单,无单点故障,可用性高。也是我们大多数企业里正在使用的集群方案。
Redis缓存
Redis是一个开源的缓存数据库,支持数据类型丰富,支持持久化键值对数据存储,支持主从同步,一主多从以及多级从结构。主从结构,一是为了纯粹的冗余备份,二是为了提升读性能。
Redis数据结构
redis是一种高级的key:value存储系统,其中value支持五种数据类型:字符串(strings)、字符串列表(lists)、字符串集合(sets)、有序字符串集合(sorted sets)、哈希(hashes)。
Strings数据类型:基础的数据类型。
lists数据类型:底层实现时其实并不是数组,而是链表,所以链表型的元素定位较慢,
sets数据类型:无序集合,无先后顺序,操作丰富。
sorted sets数据类型:每个元素都与序号相关联,作为排序依据。
hashes数据类型:存储的是字符串和其值之间的映射。
Redis持久化
Redis开启持久化是为了在其重启后,数据通过持久化文件自动回复。RDB(Redis DataBase)和AOF(Append Only File)是Redis持久化的两种方式。这两种方式是可以同时使用的,当然持久化不是必选项,如果没有此需求,可关闭此功能。
RDB,相当于虚拟机拍快照的模式,只记录某个具体的时间点的状态。
AOF,将所有的数据使用数据库语句的方式记录下来,重启时执行SQL语句即可,此方式数据的完整性较高。
一般来说我们做Redis集群都使用Redis主从+哨兵模式来保障Redis集群的高可用。
来源:CSDN
作者:老程序员千锋
链接:https://blog.csdn.net/qfyangsheng/article/details/104779048