3、存储高性能架构模式

1、高性能的数据库集群的第一种方式是“读写分离”,其本质是将访问压力分散到集群中的多个节点,但是没有分散存储压力。

   1/1数据库服务器搭建主从集群,一主一从、一主多从。

   1/2数据库主机负责读写操作,从机负责读操作。

   1/3数据库主机通过复制将数据同步到从机,每台数据库服务器都存储了所有的业务数据。

   1/4业务服务器将写数据操作发送给数据库主机,将读操作发给数据库从机。

   注意点:数据库读写分离需要考虑“复制延迟”带来的复杂性问题,例如:在某种情况下主从复制延迟了很长时间,在用户注册后立刻登录,业务服务器会提示没有注册,其实用户已经注册成功了。

   解决复制延迟的几种常见方法:

   2/1写操作后的读操作指定发给数据库主服务器。这种方式和业务强绑定,对业务的侵入和影响较大。

   2/2读从机失败后再读一次从机,不足之处在于如果有很多二次读取,将大大增加主机的压力。

   2/3 关键业务读写操作全部指向主机,非关键业务采用读写分离。

   读写分离的分配机制有两种实现方式:程序代码封装和中间件封装。

 

2、高性能的数据库集群第二种方式是“分库分表”,既可以分散访问压力,又可以分散存储压力。业务分库指的是按照业务模块将数据分散到不同的数据库服务器。业务分库会引入join操作问题、事务问题、成本问题。例如join操作需要多次查询数据库。

 

3、使用非关系型数据库。

4、全文搜索引擎的基本原理是倒排索引,为了让全文搜索引擎支持关系型数据库,需要做一些转换操作,即将关系型数据库转换为文档数据。

5、缓存穿透是指当业务系统查询的数据在缓存系统中没有的时候,每次查询都会查询业务系统。

   注意点:通常情况下业务上读取不到的数据请求量并不会很大,如果出现一些异常问题,例如被黑客攻击,故意大量访问某些不存在的业务数据,有可能将存储系统拖垮。这种情况的解决方案:如果查询存储系统不存在的数据,则直接设置一个默认值给缓存。

 

6、缓存雪崩是指缓存失效后引起系统性能急剧下降的情况。缓存雪崩的常见解决方法有两种:更新锁机制和后台更新机制。

更新锁机制:对缓存更新操作进行加锁保护,保证只有一个线程能够进行缓存更新。

后台更新:由后台线程来更新缓存---1、定时读取;2、消息队列通知。后台更新机制还是和业务刚上线的时候进行缓存预热。

 

7、缓存热点:虽然缓存系统本身的性能比较高,但对于一些特别的热点的数据,如果大部分甚至所有的业务请求都命中同一份缓存数据,则这份数据所在的缓存服务器压力也很大。例如某明星微博发布“我们”来宣告恋爱了,短时间内上千万的用户来围观。

   缓存热点的解决方案就是复制多份缓存数据,将请求数据分散到多个缓存服务器上。

posted @ 2019-07-16 22:59  Jack--  阅读(570)  评论(0编辑  收藏  举报