怎么写一个高性能应用?

首先声明,这不是写一个高性能应用的唯一选择,只是自己实践后的一些心得分享。

117473806210fd0bbb28d6392cad145d.png

开发前定个小目标

有目标的好处是不会降配开发,也不会过度开发

目标指标:并发数,TPS,响应时间等


1、模块独立性让路高性能:

在做业务模块逻辑时通盘考虑,必要时业务功模块的独立性要为高性能让路,比如对集合的操作,如果多个模块里都要循环大集合,不如为了性能,在一次循环中把不同的功能都搞定。

2、化身硬件

在开发过程中,要熟悉所使用的api,要站在CPU,内存,文件IO,或网络IO的角度思考,这样的代码谁会先受不了,会不会在关键时刻闹情绪,如果吃不准,一定要花点时间做demo,验证自己的担忧。还要优化代码,缩短代码执行路径,减轻硬件们的工作量,能一次干完的,就一次干完,不折腾硬件们,比如:能用字典唯一定位元素,不要去遍历List去找一个元素,虽对小集合来说不是事,但涓涓细流,汇集成河,防微杜渐很有必要。


3、放大放远思维

很多时候,当前代码执行没有问题,随着时间的推移,就会变成灾难,因为时间越长,拥有的数据会变多,使用的用户也会变多,当积累到一个临界点,就会爆发一些开发时没有出现的问题,所以不如在写代码时,就按照目标放大放远服务的承受量,一定在开始时就对自己狠点。

4、边开发边测试

在写代码时,关注每个模块的执行时间,使用资源情况,对一次用时过长的api,一定要想办法优化。有一次我用了一个加密算法,执行时长是2ms,当时觉得还行,但对于一个web api来说,这是一个灾难,一是这个加密算法在一次调用中需要几次调用,再有就是高并发时,是否还是用时2ms?所以在后期集成测试时我的代码就出问题了,响应时间提不上来,后来换了一个算法,也就2µs,响应时间一下就降了下来,所以要边写代码边测试,关注自己的模块,怀疑自己模块的性能。应该控制核心模块在1ms以下,辅助模块在µs级别。还要时不时压自己的代码一把,做到且coding且testing。

5、磨合配置

在高性能应用中,一定少不了一些高性能组件配合使用,像Redis,Queue,MemoryDB,或自己的应用也有一堆的配置,可能在开发阶段,或功能测试阶段,甚至性能测试阶段,都不会有事,但上了生产,出事了,因为测试场景绝对不可能等于生产环境,所以这些配置合适与否不可能通过测试出来,或者就根本想不到这种场景,所以一定要给服务上全方位监控,在服务上线前期,做到贴身照顾,护送几个运行周期,以便调整磨合配置的准确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293178.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例二.

为了更好的排版, 所以将IK分词器的安装重启了一篇博文, 大家可以接上solr的安装一同查看.[Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例一: http://www.cnblogs.com/wang-meng/p/5814798.html8, 打开浏览器查看solr可视化界面到了这里solr就配置好了, 可是我们的IK …

百度pcs 如何获取Access Token

为什么80%的码农都做不了架构师?>>> 看官方两篇文章: 《获取Access Token》 http://developer.baidu.com/wiki/index.php?titledocs/pcs/guide/token_authorize 《使用Refresh Token获取Access Token》 http://developer.baidu.com/wik…

怎么把ppt文字大小设置一致_PPT“烫金字”,不用再劳烦设计师了

平时,我们经常看到“烫金字”,好像要设计师用Photoshop才能做的样子。想到Photoshop,很多人便止步了。今天,菜鸟菌教大家使用PPT轻松制作烫金字,不用再麻烦设计师了,自己也可以简单做出这样的烫金字。只要3…

无状态服务(stateless service)

一、定义 无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库&#…

吃屎是一种什么样的体验?

全世界只有3.14 % 的人关注了爆炸吧知识没有什么能够阻挡人类对美食的向往这两天,有代表建议“加强小龙虾等入侵物种生态防控”的话题上了热搜榜,不曾想底下的评论竟然都在讨论“吃”。把入侵物种吃到濒危这个梗说多了,有时候还真担心刚懂事的…

Codeforces Round #192 (Div. 2)

A: 题意: 给出一个矩阵表示蛋糕,矩阵中有毒草莓。我们每次可以选择一行或者一列来吃蛋糕,要保证改行该列不含有毒草莓。问我们能吃到的最多的小蛋糕快 思路: 直接枚举每一行,每一列然后吃,模拟就行。 #incl…

sql limit不接具体数字_这21个写SQL的好习惯,你要养成呀

前言每一个好习惯都是一笔财富,本文分SQL后悔药, SQL性能优化,SQL规范优雅三个方向,分享写SQL的21个好习惯,谢谢阅读,加油哈~公众号:「捡田螺的小男孩」1. 写完SQL先explain查看执行计划&#x…

巅峰对决!Spring Boot VS .NET 6

Spring Boot 和 ASP.NET Core 都是企业中流行的 Web 框架, 对于喜欢 C# 的人会使用 ASP.NET Core, 而对于 Java 或 Kotlin 等基于 JVM 的语言,Spring Boot 是最受欢迎的。这本文中,会对比这两个框架在以下方面有何不同:•控制器•模型绑定和验…

java 生成无重复 随机数

2019独角兽企业重金招聘Python工程师标准>>> 一、实现逻辑 1.需要一个固定的数据集。 2.从数据集中随机去除当前索引的数据,并移除生成。并重复生成多个。 二、编码 import java.util.ArrayList; import java.util.Calendar; import java.util.List; imp…

最诡异航空事件,幽灵航班包括驾驶人员,所有人都在高空中昏睡!而后整机坠毁!...

全世界只有3.14 % 的人关注了爆炸吧知识2005年8月14日,一架塞浦路斯的太阳神航空(Helios Airways)波音737-300客机,班次ZU-522(HCY 522),机身编号5B-DBY,机上载有59名成年人及8名儿童…

[激励机制]浅谈内部竞争——如何让你的员工玩命干活?

我是标题党,标题是故意气你的,千万表拍我。公元2012年12月12号,Clark 拿出所有积蓄创办了一个公司,招了看上去还不错的5个员工组成了一个小型团队。紧接着,摆在他面前的一个很明显的问题就是——如何让他们玩命干活&am…

mybatis 查询的时间不对_程序员,Mybatis 你踩过坑吗?

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏 中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT 源码解析作业…

李洪强iOS开发之- 实现简单的弹窗

李洪强iOS开发之- 实现简单的弹窗 实现的效果: 112222222222223333333333333333

.NET 编码的基础知识

点击上方蓝字关注我们.NET 编码的一些基本概念和分析简单的类型概念Hex (16进制)byte 字节 范围是:0~255,二进制下的范围就是00000000~11111111,相当于1字节。byte[] 字节数组bit 比特,只有2种状态&#xf…

什么是MVC?MVC框架的优势和特点

目录 一、什么是MVC 二、MVC模式的组成部分和工作原理 1、模型(Model) 2、视图(View) 3、控制器(Controller) 三、MVC模式的工作过程如下: 用户发送请求,请求由控制器处理。 …

docker没有下载完全_会用Docker的人都别装了,这多简单呐

学术又官方的说法Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。没用过的人能看懂这段话&#xf…

WPF MVVM实例三

在没给大家讲解wpf mwm示例之前先给大家简单说下MVVM理论知识:WPF技术的主要特点是数据驱动UI,所以在使用WPF技术开发的过程中是以数据为核心的,WPF提供了数据绑定机制,当数据发生变化时,WPF会自动发出通知去更新UI。我们使用模式…