怎么写一个高性能应用?

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

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,一经查实,立即删除!

相关文章

数据挖掘的十种分析方法

1.记忆基础推理法(Memory-Based Reasoning;MBR) 记忆基础推理法最主要的概念是用已知的案例(case)来预测未来案例的一些属性(attribute),通常找寻最相似的案例来做比较。 记忆基础推…

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

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

简单密码破解

描述: 密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。 假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字…

dsBlog_杂类

C,MFC的综合类的博客. 1. http://www.cnblogs.com/mfryf/category/354043.html 转载于:https://www.cnblogs.com/tt-player/p/3899137.html

百度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…

使用C#体验函数式编程之——Currying(柯里化)

前言上次,我们尝试了函数式编程中的Partial application(局部应用)。Partial Application是函数式编程中一个很常见的模式,它通过固定一个函数的部分参数,产生一个参数较少的函数。今天,我们再来体验函数式…

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

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

数据挖掘算法之-关联规则挖掘(Association Rule)(购物篮分析)

在各种数据挖掘算法中,关联规则挖掘算是比较重要的一种,尤其是受购物篮分析的影响,关联规则被应用到很多实际业务中,本文对关联规则挖掘做一个小的总结。 首先,和聚类算法一样,关联规则挖掘属于无监督学习方…

无状态服务(stateless service)

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

Android之电源管理 PowerManager解决远程拍照手机黑屏问题

解决的问题: 这次使用PowerManager是因为我们后台远程拍照的时候,不支持手机黑屏情况拍照,如果手机黑屏,然后用PowerManager进行临时运行CPU 功能介绍: PowerManager这个类主要是用来…

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

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

Codeforces Round #192 (Div. 2)

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

*[hackerrank]Girlfriend Necklace

https://www.hackerrank.com/contests/w8/challenges/gneck 有点意思。是DP&#xff0c;最优解包含最优子问题。F(X)F(X-1)F(X-3)。因为F(X-1)右边放个“R”和F(X-3)右边放"RRB"是左右可以互推的&#xff0c;包含全了最右是R和B的两种情况。 #include <iostream&g…

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

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

巅峰对决!Spring Boot VS .NET 6

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

java 生成无重复 随机数

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

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

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

c#代码实现GPS数据的有效性校验

用于校验GPS报文指令的有效性 很简单的代码&#xff0c;留存吧 public static bool Verify(string gpsInfo) { if (gpsInfo null || "".Equals(gpsInfo)) return false; char p gpsInfo[0]; char c (cha…

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

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