首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【架构设计复习】高性能设计方案

【架构设计复习】高性能设计方案

作者头像
韩旭051
发布2021-04-14 15:13:24
发布2021-04-14 15:13:24
1.1K0
举报
文章被收录于专栏:刷题笔记刷题笔记

文章目录

设计方向

  • 高性能:并行处理速度快,用户感受不到延迟。
  • 高可用:服务正常,不宕机的,服务稳定。
  • 高扩展:大流量,高并发来的时候可以加机器就提升性能。

处理方案

集群部署

通过负载均衡减轻单机压力。

多级缓存

包括静态数据使用CDN、本地缓存、分布式缓存等,以及对缓存场景中的热点key、缓存穿透、缓存并发、数据一致性等问题的处理。

分库分表和索引优化,以及借助搜索引擎解决复杂查询问题。

考虑NoSQL数据库的使用

比如HBase、TiDB等,但是团队必须熟悉这些组件,且有较强的运维能力。

异步化

将次要流程通过多线程、MQ、甚至延时任务进行异步处理。

限流

需要先考虑业务是否允许限流(比如秒杀场景是允许的),包括前端限流、Nginx接入层的限流、服务端的限流。

对流量进行削峰填谷

通过MQ承接流量。

并发处理

通过多线程将串行逻辑并行化。

预计算

比如抢红包场景,可以提前计算好红包金额缓存起来,发红包时直接使用即可。

缓存预热

通过异步任务提前预热数据到本地缓存或者分布式缓存中。

减少IO次数

比如数据库和缓存的批量读写、RPC的批量接口支持、或者通过冗余数据的方式干掉RPC调用。

减少IO时的数据包大小

包括采用轻量级的通信协议、合适的数据结构、去掉接口中的多余字段、减少缓存key的大小、压缩缓存value等。

程序逻辑优化

比如将大概率阻断执行流程的判断逻辑前置、For循环的计算逻辑优化,或者采用更高效的算法。

各种池化技术的使用和池大小的设置

包括HTTP请求池、线程池(考虑CPU密集型还是IO密集型设置核心参数)、数据库和Redis连接池等。

JVM优化

包括新生代和老年代的大小、GC算法的选择等,尽可能减少GC频率和耗时。

锁选择

读多写少的场景用乐观锁,或者考虑通过分段锁的方式减少锁冲突。

处理方向

  • 计算
  • IO

从计算和 IO 两个维度考虑所有可能的优化点,需要有配套的监控系统实时了解当前的性能表现,并支撑你进行性能瓶颈分析,然后再遵循二八原则,抓主要矛盾进行优化。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 设计方向
  • 处理方案
    • 集群部署
    • 多级缓存
    • 分库分表和索引优化,以及借助搜索引擎解决复杂查询问题。
    • 考虑NoSQL数据库的使用
    • 异步化
    • 限流
    • 对流量进行削峰填谷
    • 并发处理
    • 预计算
    • 缓存预热
    • 减少IO次数
    • 减少IO时的数据包大小
    • 程序逻辑优化
    • 各种池化技术的使用和池大小的设置
    • JVM优化
    • 锁选择
  • 处理方向
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档