网站首页图片不清楚,html毕业设计题目大全,做网站的收获,开发一个软件大概需要多少钱针对于互联网应用来说#xff0c;性能优化其实就是一直需要做的事情#xff0c;因为系统响应慢#xff0c;是非常影响用户的体验#xff0c;可能回造成用户流失。所以对于性能非常重要。最近正好接到一个性能优化的需求#xff0c;需要对所负责的系统进行性能提升。目前接…针对于互联网应用来说性能优化其实就是一直需要做的事情因为系统响应慢是非常影响用户的体验可能回造成用户流失。所以对于性能非常重要。最近正好接到一个性能优化的需求需要对所负责的系统进行性能提升。目前接口耗时基本在30S左右争取可以提升到16S内。所以就先了解以下相关的性能优化其实我理解性能优化一个是在预防一个是出现问题后进行解决。二前期主要在架构设计与编码层面后期是如何找到性能瓶颈进行有效的优化。
衡量性能优化
QPS通常指代的是查询操作 TPS 指代的是写操作 响应时间 系统请求之后返回来的时间 吞吐量
架构设计
缓存、异步、集群 是性能优化的三板斧。缓存从一定程度上可以提升系统的读性能。异步可以提升系统写性能而集群可以提升系统整体的吞吐量。
缓存传统意义上的缓存可以从客户端缓存-CDN缓存-网关缓存-负载均衡缓存-应用程序缓存-分布式缓存-数据库缓存-文件缓存-CPU缓存等进行一路拦截通过将请求拦截在越前面越能提升系统的整体读性能。
异步异步主要是通过进行将穿行执行的过程进行异步执行。然后通过回调结果就可以。比如JUC中的工具类Go中的协程。消息队列等。 除了以上的架构层面其实还需要在编码层面进行优化比如使用并发编程、线程池复用、异步编程、更高效的算法等。 所以总结起来就是如下几点
网络层面优化服务器硬件层面优化操作系统优化JVM性能优化基础组建优化MySQL、Kafka、Redis等软件架构层面优化软件代码优化
如何进行性能优化
性能优化六大原则 在性能优化的时候其实要先找到性能最大的瓶颈是存储、计算、网络问题。然后根据数据分析进优化而不应该两手一把抓。而大多数的时候都是程序和数据库层面的问题这个时候我们需要使用计时工具进行先记录各个流程的耗时然后根据不同的耗时进行优化。 找到根本原因然后进行平衡成本与工作投入比。任何的优化方案都可能是trade-off。所以我们需要平衡。根据不同性能指标权衡找到一个最优解达到总体和整体最优。
而在性能优化的过程中我们不能过度优化比如一个系统只有几个人使用而过去去优化显然成本与收益不平衡。 所以我们不能过早的优化优化的时间点一般都是在一个产品比较成熟的时候为了进一步提升整体的性能而做的优化。 性能优化十大策略 时空转换
空间换时间 空间换时间的本质是通过将空间增加存储来提升时间。 对于一个全球业务可以采用CDN进行多分数据的拷贝覆盖每个地方的用户。 集群也是通过多台服务器的空间减少延迟的减少。
时间换空间 时间换空间的本质是通过增加时间减少空间的存储对于系统来说CPU、内存是比较稀缺的空间资源。
可以通过改变数据结构或者数据格式减少存储数据的大小进行数据压缩。采用压缩算法。可以降低网络传输和外部存储。内存数据存储到磁盘中
而衡量一个压缩算法主要就是三个指标压缩比例、压缩速度、使用内存。 案例Kafka采用压缩算法进行压缩数据。生产者压缩消费者解压缩。RPC通过自定义数据结构减少调用方和被调用方的网络传输。
预先和延后处理
预先处理 预先处理其实就是将数据或者三方调用进行提前调用。比如操作系统中文件、CPU和内存都会进行局部性原理数据读取提前加载顺俗读取的数据以及提升执行速度。
延后处理 延后处理一般是在非要的时候才进行计算操作。COW就是这个案例当多个线程操作同一份共享数据的时候如果只是读那么可以直接操作但是当有线程进行写的时候就复制一份进行专门写而不会影响别的线程进行读取。 在linux中fork一个子进程就是写的时候会进行复制还有java CopyOnWrite中也是如此。
并行/异步操作
并行 并行是通过一个任务处理慢可以多个任务同时执行以此来提升速度。可以在服务器、多线程、指令级别进行操作。比如JUC、Go中协程等。 异步 异步是相对于同步来说异步可以不用等待结果的返回阻塞在哪里比如IO多路复用就是通过异步操作虽然增加来一点操作复杂度但是性能提升非常明显。
缓存/批量合并
缓存 缓存其实是无处不在CPU、内存、文件系统、存储系统、内容分发、数据库、框架、中间件等。本质是通过存储数据提升访问速度。
批量合并处理 其实主要是针对IO和网络IO的时候将一批数据进行读写可以提升吞吐量、提升性能。 比如Kafka中就是为了减少网络传输一次发送一批的数据到Broker中。 MySQL也建议通过尽量合并读写。比较顺序的IO读写 速度更快。
算法和数据结构
算法 算法本质是为了解决不同的场景下的问题可以通过利用不同算法提升性能。比如LRU可以数据淘汰算法、排序算法解决排序问题。 数据结构 而不同的结构也有不同的适用场景Set、List、Map等。去重、有序、key、value 小结
本篇主要从预防性能的架构设计和编码层面去聊性能优化以及当出现性能瓶颈后应该采用三要三不要以及对应的十大优化策略进行优化。