分享一下在性能方面经常考虑的一些关注点,可以分为以下方面
1 写缓冲
因为各级存储介质速度的不同,经常可以运用缓冲提高性能
经典应用例如linux中的bufferCache或者mysql中的redologbuffer
2 复用
复用可以分为以下两个方面
2.1 读缓存
多次读取的数据可以在某一端缓存下来,避免每次都做完全部的操作
经典应用例如页面缓存、redis。。。等等等等
2.2 资源复用
在某个资源创建、销毁、复制代价很高昂时,可以考虑让这个资源完成多方面或多次操作,而不是用完就丢,从这种层面上也可以达成复用的效果
例如经典的池化设计,以及zero-copy
3 并发
在流程允许的情况下,多线程并发可以明显的提高性能,即使只有单核也可以合理运用wait时间运行多线程程序提高性能
并发有时会带来资源管理的问题,一般使用锁来控制
所以还需要注意锁粒度和无锁化,也可以有效的优化程序性能
常见的优化手段 ThreadLocal,CAS (指思想)
4 分片
对应用进行集群和分片可能会导致单次操作时间变长,但是会明显提升吞吐量
5 亲和度
有分片的场景就会涉及亲和度,亲和度指某一类请求应当能够尽可能的调度到同一分片
合理运用亲和度第一可以降低并发冲突,甚至在合适的情况下实现lock-free;第二可以充分利用该分片上已有的缓存,提升性能