undefined

二、高性能数据库集群:分库分表

读写分离分散了数据库的读写操作的压力,但没有分散存储压力,体现在几个方面

  • 数据量大,读写性能下降,即使有索引,索引也会很大
  • 数据文件很大,数据库备份和恢复需要耗费很长时间
  • 数据文件越大,极端情况下丢失数据的风险越高(例如机房火灾导致的主备机都故障)
查看更多

undefined

一、高性能数据库集群:读写分离

基本原理是将数据库读写操作分散到不同的节点上。例如数据库主机负责读写操作,从机负责读操作。
引入了两个问题:主从复制延迟分配机制

1. 主从复制延迟

以 MySQL 为例,主从复制延迟可能达到 1 秒,如果有大量数据同步,延迟 1 分钟也有可能。会导致从主机读取的数据和从机读取的数据不一致。

解决办法:

  • 写操作后的读操作指定发给主服务器。缺点:和业务强绑定,对业务的侵入和影响较大,新来的程序员可能会写出bug
查看更多

undefined

三、高性能NoSQL

关系型数据库存在的缺点

  1. 关系型数据库存储的是行记录,无法存储数据结构(例有序数组)
  2. 关系型数据库的 schema 扩展很不方便,表结构 schema 是强约束,操作不存在的列会保错;业务变化时扩充列比较麻烦,需要执行DDL(data definition language,如 CREATE、ALTER、DROP 等)语句修改,而且修改时间会长时间锁表(MySQL 可能锁表 1 个小时)
  3. 关系型数据库在大数据场景下 I/O 高。因为即使只针对其中某一列进行运算,关系型数据库也会将整行数据从存储设备读入内存
查看更多

undefined

高性能负载均衡:分类及架构

通过增加更多的服务器来提升系统整体的计算能力。高性能集群的复杂性体现在需要增加一个任务分配器,以及为任务选择一个合适的任务分配算法。任务分配器也被称为负载均衡器。不同的任务分配算法目标不一样,比如:基于负载考虑、基于性能(吞吐量、响应时间)考虑、基于计算单元考虑

常见的负载均衡系统包括:DNS负载均衡、硬件负载均衡、软件负载均衡

一、DNS负载均衡

一般用来实现地理级别的均衡,本质是DNS 解析同一个域名可以返回不同的 IP 地址。

DNS 负载均衡实现简单、成本低,但也存在粒度太粗、负载均衡算法少等缺点
优点:

查看更多

undefined

高性能缓存架构

缓存能够带来性能的大幅提升,带来的问题

一、缓存穿透

业务系统虽然去缓存查询数据,但缓存中没有数据,业务系统需要去存储系统查询数据

1. 存储数据不存在

被访问的数据确实不存在。异常情况,比如黑客攻击,故意大量访问某些读取不存在数据的业务

解决:如果查询存储系统的数据没有找到,则直接设置一个默认值(可以是空值,也可以是具体的值)存到缓存中。这样第二次读取时就会获取到默认值,而不会继续访问存储系统

2. 缓存数据生成耗费大量时间或资源

是存储系统中存在数据,但生成缓存数据需要耗费较长时间或者耗费大量资源。如果刚好在业务访问的时候缓存失效了,那么也会出现缓存没有发挥作用,访问压力全部集中在存储系统上的情况。

查看更多