1、可能的问题
要将 redis运用到工程项目中,只使用一台 redis 是万万不能的,原因如下:
(1)从结构上 ,单个 redis服务器会发生 单点故障 ,并且一台服务器需要处理所有的请求负载,压力较大。
(2)从容量上 ,单个 redis服务器内存容量有限,就算一台 redis 服务器内存容量为 256g ,也不能将所有内容都用作 redis 存储内存,一般情况下,单台 redis 最大使用内存不应该超过 20g
2、基本概念
2.1.高可用
“高可用”(High Availability )用来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高可用性。
高可用就是系统一直都能用,即使一台 redis挂了,系统还是能用别的 redis 使用。
2.2.高并发
高并发是指 通过设计保证系统能够同时并行处理很多请求。
高并发指标有 响应时间、吞吐量、每秒查询率 QPS( Query Per Second ),并发用户 等。
响应时间 :系统对请求作出响应的时间,例如系统处理一个 http请求需要 200ms ,这个 200ms 就是系统响应时间。
吞吐量:单位时间内处理的请求数量。
QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的不明显
并发用户数:同时承载正常使用系统功能的用户数量。例如一个即时通讯系统,同时在线数量一定程序上代表了系统的并发用户数。
3、提升系统的并发能力
提升系统并发能力的方式,方法论中有两种:垂直扩展( Scale Up)和水平扩展( Scale Out)
3.1.垂直扩展
垂直扩展:提升单机处理能力,说白就是提升单兵作战能力。
(1)增加单机硬件性能。例如增加 CPU核数,升级更好的网卡如万兆,升级更好的硬盘如 SSD ,扩充硬盘容量如 2T ,扩充系统内存如 128G (都是用钱来解决的问题,没啥技术含量)
(2)提升单机架构性能。例如使用 Cache来减少 IO 次数,使用异步来增加单服务吞吐量,使用无锁数据结构来减少响应时间。
如果预算不是问题,建议使用 “增强单机硬件性能”的方式提升系统并发能力。因为这个阶段,公司的战略往往是发展业务抢时间,而这种方式是最快的方法。
总结:不管是提升单机硬件性能,还是提升单机架构性能,都有一个致命的不足:单机性能是有极限的。所有互联网分布式架构设计高并发终极解决方案还是水平扩展。
3.2.水平扩展
水平扩展:只要增加服务器数量,就能线性扩展系统性能。水平扩展对系统架构的设计是有要求的,难点在于:如何在架构各层进行可水平扩展的设计。