系列文章是博主对沈剑的《架构师训练营》分享内容的个人笔记总结,原内容公众号“成为架构师”。

本篇是对微服务架构中高并发一个通用思路的阐述,侧重的是要实现高并发的架构基础,也就是提升性能,并不涉及任何实现的细节,也不对应某个具体的业务场景(前面的文章也基本上是这样的风格)

高并发指标

  1. 响应时间 (Response Time)
  2. 吞吐量(Throughout)
  3. 每秒查询率QPS(Query Per Second)
  4. 并发用户数

这些内容的解释之路:QPS、TPS、吞吐量等性能指标的理解

垂直扩展(Scale up)

  1. 增加单机硬件性能
  2. 提升单机架构性能

垂直扩展是有极限的,但是如果垂直扩展就能hold住,那么应该优先考虑垂直扩展

水平扩展(Scale out)

端到反向代理、反向代理到站点、站点到服务的高并发的水平扩展和高可用的冗余的集群本质上是一样的,它们的集群方案在保证高可用的同时也支持高并发

数据库的水平扩展

数据库的水平扩展指的是两方面:

  1. 存储能力的扩展,理论上要达到无限的存储能力
  2. 读写能力的扩展,理论上要达到无限的读写能力

对于存储能力的扩展,就是数据库分片,分片既扩展了存储能力,也提高了读写性能

最简单的两种分片方式是:范围分片、Hash分片

范围分片
【成为架构师3-4】服务化:必须支持高并发

  1. 根据数据库主键Id以范围来划分数据库,比如1-1000w为库1,1000w-2000w为库2
  2. 实现非常的容易,微服务路由也十分容易
  3. 这种方式的好处是可以很容易的进行扩展,数据的划分也是均衡的(新库早期不均衡)
  4. 但是它的访问是不均衡的,新产生的数据,如新用户总是比老用户要活跃

Hash分片
【成为架构师3-4】服务化:必须支持高并发

  1. 根据主键的hash来进行划分和路由,规则也同样很简单,比如说奇数库、偶数库
  2. 数据划分是均衡的,访问也是均衡的,只要id是完全随机的
  3. 不利于水平扩展,当增加新节点的时候要重新计算hash,并对数据进行迁移

上一篇回顾:【成为架构师3-3】服务化:必须保证高可用
下一篇更精彩:持续更新中…

相关文章: