您现在的位置:首页 > 课程体系 > 大数据与人工智能 > 微服务架构
高可用和高并发对于数据库的实践方案

1.高可用方案

高可用方案(HA,High Availability)是一种确保系统持续可用性的策略。在这个方案中,我们采用了多种技术手段来实现缓存和数据库的高可用性。


 

首先,针对缓存的高可用性,我们采取了双写和双读主备的策略。通过将数据同时写入两个主备节点,并在读取时从任意一个节点读取数据,实现了数据的冗余备份和故障自动转移功能。此外,我们还利用缓存集群的数据同步机制,确保数据在各个节点之间的同步和一致性。

 

其次,对于数据库的高可用性,我们采用了读写分离(MHA,Master High Availability)和分库冗余的策略。通过将数据库的读操作分发到多个节点上进行处理,并且在写操作时使用主从双备的方式进行数据备份,我们实现了数据库的负载均衡和冗余备份。此外,我们还引入了keepalived+virtual IP的技术,实现了数据库的自动故障转移能力。

 

2.高并发方案

在处理高并发情况下,需要根据读写请求的特点来选择合适的方案。如果读请求较多且并发性高,可以考虑使用主从分离的方案,将读操作分散到多个从节点上进行处理,从而提高读并发能力。而如果写请求较多且并发性高,可以采用水平分库的方式,将数据分散存储到多个数据库中,以减轻单一数据库的写压力。当读写请求都非常高并发时,可以先进行水平分库,然后在每个库内部再进行主从集群的部署,进一步提升系统的并发处理能力。


 

2.1 .读写分离,主从复制,分组架构

主从复制是一种架构模型,它将一个MySQL主服务器的数据复制到一个或多个MySQL从服务器。这种架构模型也被称为分组架构或读写分离架构。

 

在主从复制中,主库提供数据库写服务,而从库提供数据库读服务。通常情况下,会有一个主服务器和多个从服务器,形成一主多从的结构。

 

当解决高可用性问题时,读写分离架构通常被简称为MHA(Master High Availability)。

2.1.1. 读写分离架构的优势

读写分离是一种数据库架构设计,旨在提升数据库的读并发和吞吐量。通过将读操作和写操作分离到不同的数据库中,可以有效地减少读写冲突,进而提高写性能。

 

通过实现读写数据库的相互独立,可以消除读写锁冲突,从而进一步提升数据库的写性能。由于写库拥有独立的数据库,它能够专注于处理写操作,从而提高写性能的表现。

 

此外,通过冗余从库的方式实现数据的“读高可用”。通过多个从库复制主库的数据,当主库出现故障时,可以快速切换到从库进行读操作,保证系统的稳定性和可用性。

 

读写分离也有利于架构的扩展。通过增加从库的数量,可以明显提高数据库的读性能。每个从库都可以处理读操作,从而将读负载均衡分散到多个节点上,提高整体的读并发能力和吞吐量。

 

读写分离是一种优化数据库性能和可用性的有效策略。它通过分离读写操作、消除读写锁冲突、实现数据的冗余和增加从库数量等手段,提升了数据库的读并发能力、吞吐量和系统的可用性,进而为架构的扩展提供了良好的基础。

 

2.1.2. mysql 主从复制过程(异步)

主服务器启用了二进制日志(binlog)功能,用于记录数据库的读写操作。在此过程中,需要开启三个线程:主服务器IO线程、从服务器IO线程和从服务器SQL线程。

 

1)MySQL主服务器将数据更改写入二进制日志(binary log),即常称为binlog的文件。

 

2)从服务器通过IO线程连接到主服务器,并请求获取某个binlog文件中特定位置之后的内容。

 

3)主服务器接收到从服务器IO线程发来的日志请求信息后,IO线程将相应的binlog内容及位置返回给从服务器IO线程。

 

4)从服务器接收到binlog日志内容后,将其写入中继日志(relay log)中,并创建一个名为"master.info"的文件,该文件记录了主服务器的IP地址、用户名、密码、binlog文件名称以及位置。

 

5)从服务器启动SQL线程,实时监测中继日志的更新内容,解析文件内容并生成相应的SQL语句,在从服务器的数据库中执行这些SQL语句。

 

2.2 .分库分表

2.2.1. 水平切分(也被称为分片架构)

2.2.1.1. 分片架构的优势

线性提升数据库写性能的方法需要注意分组架构无法达到线性提升的效果。为了解决"数据库数据量大,写操作有瓶颈"的问题,可以采用分片技术进行架构设计。

 

常见的水平拆分方式包括范围法和哈希法。这两种方式都比较简单,并且各有优势和缺点。

 

另外,在优化MySQL写入性能时,需考虑数据库自身配置、操作系统性能和磁盘IO性能等因素。一些优化手段包括日志缓冲、合理索引设计、批量插入等。此外,使用replace函数可以执行更新操作,替换指定字段的部分内容。

 

在处理大字段更新时,需要考虑数据量大小。对于较小的数据量,可使用MySQL官方的mysql dump工具或Percona的备份工具进行迁移。这些工具可以将整个表的数据导出为SQL文件,并在目标数据库中进行恢复。

 

最后,如果安装MySQL后遇到默认字符集为拉丁文字符集的问题,可以通过命令修改字符集为utf8格式。需注意修改字符集后重启可能会失效,需要留意这一点。


 

2.2.1.2 .按照范围水平拆分

优点包括:

 

1)保持数据的原有顺序,确保数据的有序性。

2)准确控制每台服务器存储的数据量,最大化存储空间利用率。

3)容易扩展,无需移动现有数据,可以随时添加一个带有uid [2kw,3kw] 的数据服务。

缺点包括:

请求负载不一定均衡,新注册用户可能比老用户更活跃,导致大范围服务请求压力较大。

 

2.2.1.3 .按照哈希水平拆分

好处包括:

1)数据量分布均衡,使数据在服务器上分布更均匀。

2)服务器请求负载均衡,减轻单个服务器的压力。

缺点包括:

不容易扩展,当需要扩展数据服务时,哈希方法可能需要更改,这可能导致数据迁移。但可以通过一致性哈希算法在一定程度上缓解此问题。增加分片数量时,数据迁移成本相对较低,无需移动全部数据。

 

2.2.1.4. 哈希+范围混合分片

我们可以采用一种折中的方案,将数据先进行哈希分片,然后再对哈希结果进行范围分片(或者先进行范围分片,再进行哈希分片)。这样可以实现数据和请求量的较为均衡分布。

 

2.2.2. 垂直切分

垂直切分可以分为两种方式:垂直分表和垂直分库。

 

2.2.2.1. 垂直分表:

在垂直分表中,我们可以将使用频率低或字段长度较大的属性放置到扩展表中。这是因为数据库以行(row)为单位,将数据加载到内存(buffer)中,在内存容量有限的情况下,长度短且被频繁访问的属性能够加载更多的数据,提高命中率,减少磁盘IO,从而提升数据库性能。

 

2.2.2.2. 垂直分库:

垂直分库是直接按照业务将一个数据库拆分成两个独立的库,这样可以降低单个库的数据量。垂直分库与业务紧密结合,但并不是所有业务都适合进行垂直切分。

 

2.3. 读写分离 + 分库分表

读写分离和分库分表是两种常用的数据库性能优化技术,它们可以单独使用,也可以结合在一起使用以进一步提高性能。

 

读写分离主要是将数据库的读和写操作分配到不同的节点上,主服务器负责写操作,从服务器负责读操作。这样可以大幅度提高读性能,稍微提高写性能。读写分离适用于并发读请求较多的场景,一般采用一主多从的架构。

 

分库分表的主要目的是解决单库单表数据过多、查询缓慢等问题,以解决数据库扩展性问题。分库指的是将数据按照某种规则划分到不同的数据库中,而分表指的是将一张表按照某种规则划分成多个小表。分库分表可以有效减小单台数据库的压力,提高数据库的处理能力。

 

当读写分离与分库分表结合在一起时,可以进一步提高系统的性能。通过读写分离,可以将读操作分配到不同的从数据库节点上;通过分库分表,可以将数据分散存储在不同的数据库和表中。这样可以充分利用多个数据库节点的资源,进一步提高系统的读写性能和扩展性。

 

然而,读写分离和分库分表的结合体会导致架构更加复杂。需要配置好读写分离和分库分表的相关规则,并确保数据的一致性和同步。同时,还需要考虑到可能出现的延迟和负载均衡等问题。

 

读写分离和分库分表的结合体可以提供更强大的性能,但也需要在架构设计和配置管理方面付出更多的工作。

 

有关高可用高并发相关内容,我推荐各位技术人员了解一下中培IT学院的微服务及高并发、高可用架构设计与最佳实践培训班,课程由业内专家讲师用过理论与实践相结合、案例分析与行业应用穿插进行讲解,并且组织学员分组讨论、研究,通过全面知识理解、专题技能演示和实践引导学员掌握课程内容。课程设计了互联网高可用、高并发核心技术,并帮助学员通过微服务架构设计和开发,获取现在的企业微服务解决方案。

 

[1]

 
网络安全热度最高的6本证书...
系统分析师VS系统架构设计...
项目经理考NPDP还是软考高...
盘点五个IT领域下证快的证...
CBA与TOGAF:探寻企业架构...
【收藏】软考电子证书下载...
项目经理任选两本证书,年...
DAMA中国推出“一考两证”...
数据分析具体指的是什么,...
数据分析师需要具备什么数...
CDA认证带你了解数据分析的...
敏捷与DevOps协同工作的注...
DevOps自动化测试的注意事...
DevOps五个好用的工具列表...
IT项目管理实现落地有哪些...
IT项目需求分析重点是建立...


中培IT学院 Copyright@2006-2024  北京中培伟业管理咨询有限公司.ALL Rights Reseved 备案号:京ICP备13024721号-2