后端优化的六种方法:

1.硬件升级

硬件问题对性能的影响不容忽视。

举一个例子:一个DB集群经常有慢SQL报警,业务排查下来发现SQL都很简单,该做的索引优化也都做了。后来DBA同学帮忙定位到问题是硬件过旧导致,将机械硬盘升级成固态硬盘之后报警立马消失了,效果立竿见影!

2.缓存化

缓存可以称的上是性能优化的利器,使用缓存时需要考虑缓存命中率、缓存更新、数据一致性、缓存穿透及雪崩、Value过大等问题,可以通过mutiGet将多次请求合并一次、异步访问等方式来提升缓存读取的性能。

3.产品逻辑优化

业务逻辑优化经常会容易被忽略,但效果却往往比数据库调优、JVM调优之类的来的更明显。

举一个例子,12306春运抢火车票的场景,由于访问的人多,用户点击“查票”之后系统会非常卡,进度条非常慢,作为用户,我们会习惯性的再去点“查票”,可能会连续点个好几次。假设平均一个用户点5次,则后端系统负载就增加了5倍!而其中80%的请求是重复请求。这个时候我们可以通过产品逻辑的方式来优化,比如,在用户点击查询之后将“按钮置灰”,或者通过JS控制xx秒只能只能提交一次请求等,有效的拦截了80%的无效流量。

4.服务化

做服务化最基础的是按业务做服务拆分,避免跨业务间的互相影响,数据和服务同时拆分。同一个业务内部我们还按计算密集型/IO密集型的服务拆分、C端/B端服务拆分、核心/非核心服务拆分、高频服务单独部署等原则做拆分。

5.异步化

异步化可以利用线程池、消息队列等方式实现。

使用线程池的时候一定要注意核心参数的设置,可以通过监控工具去观测实际创建、活跃、空闲的线程数,结合CPU、内存的使用率情况来做线程池调优。

另一种是通过NIO实现异步化,一切网络IO皆可异步:RPC框架、Servlet 3.0提供的异步技术、Apache HttpAsyncClient、缓存异步接口等等。

6.搜索引擎

复杂查询以及一些聚合计算不适合在数据库中做,可以利用搜索引擎来实现,另外搜索引擎还可以帮我们很好的解决跨库、跨数据源检索的场景。


常用的后端性能优化六种方式:缓存化+服务化+异步化等相关推荐

  1. SQL性能优化前期准备-清除缓存、开启IO统计

    如果需要进行SQl Server下的SQL性能优化,需要准备以下内容: 一.SQL查询分析器设置: 1.开启实际执行计划跟踪. 2.每次执行需优化SQL前,带上清除缓存的设置SQL. 平常在进行SQL ...

  2. 分享 11 个常用的 Nginx 性能优化参数工作

    编辑:业余草 来源:https://www.xttblog.com/?p=4957 分享 11 个常用的 Nginx 性能优化参数教程 工作上,需要配置 Nginx,要投入生产使用,做了一点优化工作, ...

  3. Yii2性能优化之:缓存依赖

    Yii2性能优化之:缓存依赖 Yii中的缓存依赖,简单来说就是将缓存和另外一个东西绑定在一起,如果另外一个东西发生变化,那么缓存也将发生变化.有点儿类似于JS中的触发事件(但是也不那么像),缓存的变动 ...

  4. Oracle性能优化 以及 库缓存命中率及等待事件

    http://www.cnblogs.com/hyddd/archive/2009/08/30/1556939.html 前言 最近hyddd一直看Oracle的资料,今天特地总结一下这段时间了解到的 ...

  5. 最常被遗忘的 Web 性能优化:浏览器缓存

    一提起缓存, Web开发者们总是在想数据库缓存.页面静态化.使用 Redis内存缓存.这些方法都有一个共性,就是集中在后台,目的就是加快数据的读取,少用比较容易产生瓶颈的部分. 后台该优化的都优化到了 ...

  6. 转载:最常被遗忘的 Web 性能优化:浏览器缓存

    https://www.sohu.com/a/153567485_505818 一提起缓存, Web开发者们总是在想数据库缓存.页面静态化.使用 Redis内存缓存.这些方法都有一个共性,就是集中在后 ...

  7. 最常被遗忘的Web性能优化:浏览器缓存

    原文:https://segmentfault.com/a/1190000009970329 一提起缓存,Web开发者们总是在想数据库缓存.页面静态化.使用Redis内存缓存.这些方法都有一个共性,就 ...

  8. Hibernate性能优化之EHCache缓存

    像Hibernate这种ORM框架,相较于JDBC操作,需要有更复杂的机制来实现映射.对象状态管理等,因此在性能和效率上有一定的损耗. 在保证避免映射产生低效的SQL操作外,缓存是提升Hibernat ...

  9. 本地缓存需要高时效性怎么办_Android性能优化之关于缓存的构思

    为了提升用户体验, 对应用显示的数据进行缓存是非常好的方案.用过ListView,GridView,ViewPager等这些组件的童鞋都知道 , 应用都有预加载的行为, 比如当前看的是ViewPage ...

最新文章

  1. C++/C++11中std::set用法汇总
  2. 密度聚类、密度聚类过程、OPTICS算法
  3. python中类方法与实例方法的区别-Python中的对象,方法,类,实例,函数用法分析...
  4. 我作为开发者犯过的两次愚蠢的错误
  5. python编写一个程序、实现文件的复制_写个python 脚本实现文件的递归拷贝
  6. 异步编程的 async/await
  7. [XSY4197] Snow(树形DP)
  8. 智慧医院软件(APP)功能列表
  9. 社区团购猛地火了,有没有美团、拼多多这样的命?
  10. alios是安卓吗_揭秘:阿里云OS和Android的主要区别是什么
  11. java影视app对接cms,原生影视App双端对接飞飞CMS
  12. Normalize.css的作用
  13. 信念就是一种观念对不对_信念与观念一字之差天差地别
  14. 选择unity还是unreal4
  15. 少儿python教学_如何教少儿学习Python编程
  16. nyoj-506-洗澡
  17. 为什么我们公司要使用Go+MySQL开发认证机构ERP信息系统
  18. Hive 数据同步ClickHouse
  19. mysql日常管理事件
  20. Matplotlib数据可视化高级

热门文章

  1. 一台服务器上部署多个Terracotta的方法
  2. Android中使用Thread线程出现的问题
  3. linux下修改max_user_processes和open_file的最大值
  4. C语言 scanf()和gets()函数的区别
  5. Linux 用户空间和内核空间
  6. python基于opencv的手势识别_怎么在Python3.5 中利用OpenCV实现一个手势识别功能
  7. C小项目 —— 学生选课系统
  8. python的if和else、for、while语法_python-变量、if else语句 、for循环、while循环(4月26号)...
  9. 视频操作_01视频读写:视频读写+读取视频+保存视频
  10. 是引进外部函数吗_使用PowerBI的这两个函数,灵活计算各种占比