SQL Server 高可用性(八)负载平衡

简介: 高可用与负载平衡是两种不同的技术,却经常被混淆。

一、服务的类型

  1. 无状态的服务(stateless service)

  对单次请求的处理,不依赖其他请求。

  处理一次请求所需的全部信息都包含在这个请求里或者可以从外部获取(例如,数据库),服务本身不存储任何信息。

  IIS(Web服务)可以设计成无状态的服务,可以实现池化(负载均衡),从而横向扩展。

  1. 有状态的服务(stateful service)

  会在自身保存一些数据。

  先后的请求是有关联的,通常用于实现事务。

  数据库服务一般是有状态的服务。

二、区别

  1. 高可用

  高可用是针对“有状态”的服务,其目标是为了减少硬件或软件故障造成的影响,保持业务的连续性,从而将用户可以察觉到的停机时间送到最少。

image.png

  1. 负载平衡

  负载平衡是针对“无状态”的服务,其目标是通过对服务的“池化”(多个服务,形成一个“池”)使客户端的请求被分摊到多个服务。

image.png

三、联系

  高可用技术中兼具一部分的负载分摊功能。例如,AlwaysOn可用性组的辅助副本可以提供只读访问,从而分摊一部分的只读请求给报表等应用程序。

  负载均衡给客户端的感觉就像高可用技术一样,保持了业务的连续性。例如,客户端连接到IIS池,池中的某台IIS服务器发生故障后,客户端的连接被重定向到池中的其它IIS服务器。

  数据库产品几乎都没有宣称自己的“产品功能”(feature)中包含有负载均衡、读写分离等技术特性。对于SQL Server来说,负载分摊、读写分享应当作为一个解决方案(Solution)来实现。例如,指定一个只读副本专门用来查询,应当从业务需求角度事先进行设计。

四、SQL Server 负载分离示例

  生产环境通常在设计时就要考虑到未来的数据增长,并且预留负载分离的接口。

  以下案例显示了一家OTA企业在遇到数据库规模迅速增长时,依次实施了三期部署。

  第一期:数据库将所有数据都存放在一台服务器。

image.png

第二期:进行了负载分离,将原先的单台服务器根据业务类型进行分离。

image.png

  第三期:继续进行分离。
image.png

相关文章
Java连接SQL Server数据库的详细操作流程
Java连接SQL Server数据库的详细操作流程
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
381 11
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
751 13
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
529 9
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
339 6
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
1372 3
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
1363 1
|
SQL 存储 测试技术
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。