高性能、高并发、高可用基础

高并发系统设计三大目标:高性能、高并发、高可用

高性能:

为什么需要高性能?

性能体现了系统的并行处理能力,在有限的硬件投入下,提高性能意味着节省成本。同时,性能也反映了用户体验,响应时间分别是100毫秒和1秒,给用户的感受是完全不同的。

高性能评估方式?

性能指标:

  • 平均响应时间:最常用,但是缺陷很明显,对于慢请求不敏感。比如1万次请求,其中9900次是1ms,100次是100ms,则平均响应时间为1.99ms,虽然平均耗时仅增加了0.99ms,但是1%请求的响应时间已经增加了100倍。

  • TP90、TP99等分位值:将响应时间按照从小到大排序,TP90表示排在第90分位的响应时间, 分位值越大,对慢请求越敏感。

  • 吞吐量:和响应时间呈反比,比如响应时间是1ms,则吞吐量为每秒1000次。

可用性指标:

  • 可用性 = 正常运行时间 / 系统总运行时间

高性能设计手段

纵向扩展和横向扩展:提升单机的处理能力,提高并发处理能力。

天下武功,唯快不破”。性能是系统设计成功与否的关键,实现高性能也是对程序员个人能力的挑战。不过在了解实现高性能的方法之前,我们先明确一下性能优化的原则。首先,性能优化一定不能盲目,一定是问题导向的。脱离了问题,盲目地提早优化会增加系统的复杂度,浪费开发人员的时间,也因为某些优化可能会对业务上有些折中的考虑,所以也会损伤业务。

其次,性能优化也遵循“八二原则”,即你可以用 20% 的精力解决 80% 的性能问题。所以我们在优化过程中一定要抓住主要矛盾,优先优化主要的性能瓶颈点。再次,性能优化也要有数据支撑。在优化过程中,你要时刻了解你的优化让响应时间减少了多少,提升了多少的吞吐量。

最后,性能优化的过程是持续的。高并发的系统通常是业务逻辑相对复杂的系统,那么在这类系统中出现的性能问题通常也会有多方面的原因。因此,我们在做性能优化的时候要明确目标,比方说,支撑每秒 1 万次请求的吞吐量下响应时间在 10ms,那么我们就需要持续不断地寻找性能瓶颈,制定优化方案,直到达到目标为止。

高可用:

为什么需要高可用?

软件

  • 软件总是有Bug的
  • 软件总会有性能极限的
  • 软件交互相互影响

硬件

  • 硬件总是有故障的
  • 硬件的生命周期
  • 硬件的网络划分问题

高可用评估方式?

传统

  • 一段时间的停机时间时间占比:停机时间/总时间

科学

  • 一段时间的停机影响请求量占比:停机时间影响请求量/总请求量

高可用设计手段

以微服务为例子:必须做到一下几点
1、服务冗余(无状态化)

  • 当系统发生故障时,冗余配置的部件介入并承担故障部件的工作,由此减少系统的故障时间
  • 当前资源足够提供一个服务的情况下多给点资源以防突发情况

2、幂等设计(负载均衡)

  • 实现数据一致性和事务完整性的重要手段
  • 负载均衡设备,实现流量分发。 负载均衡(Load Balance),意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。

3、超时机制(异步化设计)

  • 基于接口异步响应,常用在第三方对接流程
  • 基于消息生产和消费模式,解耦复杂流程
  • 基于发布和订阅的广播模式,常见系统通知

4、数据复制/缓存/Sharding(服务限流降级熔断)

  • 服务限流
    概述:当系统的处理能力不能应对外部请求的突增流量时,为了不让系统奔溃,必须采取限流的措施。

  • 实现技术:Hystrix,Sentinel

  • 服务降级
    概述:当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。

  • 实现技术:Hystrix,Dubbo(dubbo-admin,mork,@Reference)

  • 服务熔断
    概述:服务熔断的作用类似于我们家用的保险丝,当某服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止对该服务的调用。

  • 实现技术:Hystrix

5、架构拆分、服务治理

  • 业务场景、系统水平拆分
  • 应用场景、功能垂直拆分

高并发:

为什么需要高并发?

随着流量变大,会遇到各种各样的技术问题,比如接口响应超时、CPU load升高、GC频繁、死锁、大数据量存储等等,这些问题能推动我们在技术深度上不断精进。

高并发评估方式?

1、系统性能指标:

  • 提高吞吐量
  • 缩短响应延迟

2、性能优化指标:

  • 缩短响应时间
  • 提高并发数&提高吞吐量
  • 让系统长期处于一个合理的时间节点

高并发设计手段

1、优化手段:

  • 当系统响应时间是瓶颈的时候,考虑空间换时间
  • 当系统数据大小是瓶颈的时候,考虑时间换空间
  • 最重要的是,找到系统的瓶颈

2、优化层次:
- 架构设计层次

  • 分布式系统微服务化
  • 分库分表、读写分离、数据分片
  • 无状态化设计、水平扩展
  • 调用链路梳理、热点数据尽量靠近用户
  • 分布式cache、多级多类型缓存
  • 对系统容量进行评估、规划
  • 提前拒绝、保证柔性可用

- 算法逻辑层次

  • 使用更高效的算法替换现有算法
  • 使用增量式算法
  • 进行并发和锁的优化
  • 当系统时间是瓶颈,采用空间换时间算法策略
  • 当系统空间容量是瓶颈,采用时间换空间算法策略
  • 并行执行、降低响应时间
  • 异步执行、业务流程解耦、提供稳定性和降低响应时间

- 代码优化层次
此处省略···

最后,安利一款阿里云产品
AHAS:应用高可用服务

可轻松抵御流量洪峰冲击,打造超高并发下稳定运行的系统环境。实现流量分发,系统扩缩容,数据库稳定性与线性扩容能力;通过解耦应用与缓存数据降低核心应用负载;解决系统实时监控与流控问题。

image.png

结尾:
希望这篇文章能带给你关于高并发更全面的认识,如果你也有可借鉴的经验和深入的思考,欢迎评论区留言讨论。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容