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

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

  • 相关阅读:
    SpringCloud采用Dubbo远程调用(SpringCloud Alibaba)
    服务注册与发现Nacos
    Nacos配置管理
    Spring Cloud Stream
    MySQL查询优化explain
    索引
    MySQL架构
    mysql事务、视图
    多表查询
    分布式为什么使用python
  • 原文地址:https://www.cnblogs.com/liangdejiu/p/11198137.html
Copyright © 2020-2023  润新知