本文主要是介绍【成为架构师3-4】服务化:必须支持高并发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
系列文章是博主对沈剑的《架构师训练营》分享内容的个人笔记总结,原内容公众号“成为架构师”。
目录
- 高并发指标
- 垂直扩展(Scale up)
- 水平扩展(Scale out)
- 数据库的水平扩展
本篇是对微服务架构中高并发一个通用思路的阐述,侧重的是要实现高并发的架构基础,也就是提升性能,并不涉及任何实现的细节,也不对应某个具体的业务场景(前面的文章也基本上是这样的风格)
高并发指标
- 响应时间 (Response Time)
- 吞吐量(Throughout)
- 每秒查询率QPS(Query Per Second)
- 并发用户数
这些内容的解释之路:QPS、TPS、吞吐量等性能指标的理解
垂直扩展(Scale up)
- 增加单机硬件性能
- 提升单机架构性能
垂直扩展是有极限的,但是如果垂直扩展就能hold住,那么应该优先考虑垂直扩展
水平扩展(Scale out)
端到反向代理、反向代理到站点、站点到服务的高并发的水平扩展和高可用的冗余的集群本质上是一样的,它们的集群方案在保证高可用的同时也支持高并发
数据库的水平扩展
数据库的水平扩展指的是两方面:
- 存储能力的扩展,理论上要达到无限的存储能力
- 读写能力的扩展,理论上要达到无限的读写能力
对于存储能力的扩展,就是数据库分片,分片既扩展了存储能力,也提高了读写性能
最简单的两种分片方式是:范围分片、Hash分片
范围分片
- 根据数据库主键Id以范围来划分数据库,比如1-1000w为库1,1000w-2000w为库2
- 实现非常的容易,微服务路由也十分容易
- 这种方式的好处是可以很容易的进行扩展,数据的划分也是均衡的(新库早期不均衡)
- 但是它的访问是不均衡的,新产生的数据,如新用户总是比老用户要活跃
Hash分片
- 根据主键的hash来进行划分和路由,规则也同样很简单,比如说奇数库、偶数库
- 数据划分是均衡的,访问也是均衡的,只要id是完全随机的
- 不利于水平扩展,当增加新节点的时候要重新计算hash,并对数据进行迁移
上一篇回顾:【成为架构师3-3】服务化:必须保证高可用
下一篇更精彩:成为架构师3-5】服务化:必须搞定负载均衡
这篇关于【成为架构师3-4】服务化:必须支持高并发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!