架构学习-分布式架构理论(十)

188 阅读3分钟

分布式一致性和CAP理论

CAP

  • C:一致性
  • A:可用性
  • P:分区容错性

读写分离和集群扩展

  • write是排它锁,不允许其他操作包括读
  • read是共享锁,只能被其他线程读取
  • write和read是互斥的,所以读写分离能提高相关性能

分库分表

分表

  • 垂直分表

image.png

  • 水平分表

image.png

分库

  • 垂直分库,相当于根据业务进行区分库
  • 水平分库

image.png

对分库分表的数据进行迁移和扩容

主从数据库,从库转正

  • 比如有2个库,之前是通过路由打到对应的库,现在要扩容了,将对应的从库接触绑定关系进行扩容.如:之前是id%2=0为0号库,现在变为4个,0号库为原来的主库,2号库是0号库之前的从库,以此类推.现在id%4=2为2号库,这样流量就进行了均匀分散.
  • 扩容的注意点就是要成倍增加,2变4,4变8.

image.png

  • 新增加库的数据是从哪个库承接过来的,新增加的就要承接旧的路由请求

增量存量同步

image.png

image.png 修改路由规则,新库开始承接业务 image.png

  • 也只能成倍增加,2变4
  • 所有库都同步完数据之后才能修改路由规则
  • 新增加库的数据是从哪个库承接过来的,新增加的就要承接旧的路由请求

热点数据:在极短时间内被高并发频繁访问到的数据

中心缓存的不靠谱

  • 前提是大数据量情况下,比如像天猫京东那些平台,热点数据动不动就有上亿的数据量,如果在这样的数据量下,数据库没崩溃,缓存系统就GG了
  • 这种大数据量下,缓存也是按分区进行处理的
  • 如果热点缓存被击穿,会将流量直接打到数据库上,导致数据库的团灭,为了避免这种情况的发生,要将热点数据进行隔离

如果处理热点数据

  • 多级缓存(使用堆外缓存,避免堆内缓存引发频繁的GC进而影响性能)

image.png

  • 热点库(将热点数据从缓存中迁移出来,单独给与相关节点和资源,将热点的访问路由到各个相关节点)

image.png

监听热点数据

  • 接口参数聚合,日志埋点统计抓取相关热点数据(高频访问的数据)
  • 通过stream技术聚合分析,发布相关的热点数据
  • 哪些业务需要相关热点就订阅它,转而去热点库查取
  • 当热点数据的热度降低,删除相关热点数据

image.png

数据备份和失效转移

冷备

  • 定时,低成本,不一致,数据丢失
  • 适用于历史订单,业务报表,时效性不高业务
  • 只在最最最坏情况使用

热备

  • 同步热备(会存在一致性问题,比如,一个库成功,一个库失败,到底是回滚还是成功要根据业务场景判定)
  • 主从热备

应用水位:当前QPS/容量评估承压QPS

应用层设计

服务器集群的伸缩性

  • mac地址负载均衡(直接路由),数据链路层Linux的LVS技术
  • DNS负载均衡
  • 反向代理(http转发)

性能测试指标

RT 响应时间

QPS 美妙访问 吞吐量

并发数 并发能力

构建性能基线

image.png