文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

互联网高并发设计的手段:架构、算法、代码

2024-11-30 06:12

关注

2、提高并发数(增加吞吐量)

3、让系统处于合理状态

图片

性能优化手段

1、空间换时间

系统时间是瓶颈: 缓存复用计算结果,降低时间开销,因为cpu时间较内存容量更加昂贵。

2、时间换空间   

3、找到系统瓶颈

性能优化层次

1、架构设计层次

如何拆分系统 如何使用部分系统整体负载更加均衡   充分发挥硬件设施性能优势  减少系统内部开销等

2、算法逻辑层次

关注算法选择是否高效,算法逻辑优化,空间时间优化任务执行吃力,使用无锁数据结构。

空间换时间:ThreadLocal

时间换空间:采用压缩算法压缩数据,更复杂的逻辑减少数据传输。

3、代码优化层次

关注代码细节优化,代码实现是否合理,是否创建了过多的对象,循环遍历是否高效,cache使用是否合理 

优化层次:从整理到细节,从全局角度到局部视角。

代码优化层次(1)

代码优化层次(2)

图片

数据优化层次

select count(*)from table where add  time<"2017- 11-0623:59:59"  and  status=0  add  count in(1,2) ORDER BY id ASC;

代码逻辑要适应数据变化的场景

图片

图片

图片

算法优化逻辑层次

●用更高效的算法替换现有算法,而不改变其接口

● 增量式算法,复用之前的计算结果,比如一个报表服务,要从全量数据中生成报表数据量很大,但是每次增量的数据较少,则可以考虑只计算增量数据和之前计算结果合并,这样处理的数据量就小很多

● 并发和锁的优化,读多写少的业务场景下,基于CAS的LockFree比mutex 性能更好

● 当系统时间是瓶颈,采取空间换时间逻辑算法,分配更多空间节省系统时间

● 缓存复用计算结果,降低时间开销, CPU时间较内存容量更加昂贵

● 当系统空间容量是瓶颈,采取时间换空间算法策略

● 网络传输是瓶颈,使用系统时间换取空间的压缩, HTTP的gzip 压缩算法

● APP的请求分类接口,使用版本号判断哪些数据更新,只下载更新的数据,使用更多的代码逻辑处理更细粒 度的数据

● 并行执行,比如一段逻辑调用了多个RPC接口,而这些接口之间并没有数据依赖,则可以考虑并行调用,降低响 应时间

● 异步执行,分析业务流程中的主次流程,把次要流程拆分出来异步执行,更进一步可以拆分到单独的模块去执行, 比如使用消息队列,彻底和核心流程解耦,提高核心流程的稳定性以及降低响应时间

架构层次优化

● 系统微服务化

● 无状态化设计,动态水平弹性扩展

● 调用链路梳理,热点数据尽量靠近用户

● 分布式Cache 、 多级多类型缓存

● 提前拒绝,保证柔性可用

● 容量规划

● 分库分表,读写分离,数据分片

案例:

图片

Feed流系统分级缓存

读多写少、冷热数据明显,热点数据缓存到调用链路更靠近用户的地方

● L1缓存容量小负责抗最热点的数据, L2缓存考虑目标是容量,缓存更大范围的数据(一般用户的timeline), 高热点,数据单独缓存,比如设置白名单,大V 的用户数据放在L1缓存

● feed(关注的feed 、topic 的feed,一些运营的feed),前几页的访问比例,前三页占了90%+,针对这种业务特性,把 前面几页数据作为热点数据提到L1 cache

Feed系统消息发布


写扩散 (PUSH)

● 推送策略:拆分数据并行推,活跃用户先推,非活跃用户慢慢推

● 有 1w个用户关注,发了一个feed,拆分成100份,每份100个并行推

● 1w个用户里活跃的可能有2000个,活跃用户先推,非活跃用户慢慢推,保证活跃用户体验,非活跃用户推 了很大概率也不看

读扩散(PULL)

图片

Feed系统存储选型

图片

来源:二进制跳动内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯