建议"/>
微服务 java 中的一些优化建议
根据平常的工作和日常学习,总结一些java中用到的比较多的优化方向
1,池化技术 池化技术在java中应用非常多,像我们常说的数据库连接池,线程池,内存池,对象池,资源池,应用池等等。
这些技术其实就像我们生活中常见的共享技术:共享单车,共享充电宝,首先这些东西就已经生成好了,放在那里,当你需要用的时候
扫码使用即可,不需要临时去创建,销毁,回收。这样我们的JVM的内存碎片就会少。
对于我们平常的工作中,如果遇到类似的情况,也可以采取类似的方案。举个例子:
拿我们java中spring来说:spring的IOC其实就是个对象池,在spring启动的时候,如果你的bean是单例的话,会将bean实例对象初始化好之后,
放如spring的上下文的beanFactory中,当你需要使用她的时候,她就会来,不需要你去创建,管理等。
就好比,当我们生活中需要去找女朋友的时候,你可以去SPA店,SPA店就会有你的女朋友,而不需要你去外面找女朋友,省了你N多开销(女朋友是很耗钱的)
SPA会帮你管理你的女朋友。
2,批量技术 批量技术在工作中也用的很多,比如消息中间件,数据库的批量操作,接口调用等。这些都有个共同的特性,需要网络开销。
其实我们的一个请求到服务器最大的开销就是I/O操作,不管是网络IO还是磁盘IO,
网络I/O一般底层都是tcp/ip通信,tcp通信建立连接的话就有三次握手,四次挥手机制,你想每次通信都要进行一次连接,会浪费多少资源和时间。
所以可以考虑进行一次连接,然后批量操作。
其实这在我们生活中也很常见: 比如我们坐长途车,从广州到深圳,我们总不可能来一个乘客,就送一个乘客吧,肯定是坐满了一车,或者是到店再送吧
3,缓存技术 缓存技术应该都很熟悉,redis,memcache等,其实缓存技术不只是这些。缓存技术包括了从前端到后端所有的缓存。
前端内存-》前端硬盘-》CDN-》nginx缓存-》本地缓存-》本地磁盘-》网络缓存-》网络硬盘-》数据库缓存-》数据库硬盘
在每一步都可以拦截一部分请求,到最后查到数据的请求就更少了。
4,多线程技术 现在的电脑基本上都是多核CPU,这样,我们的多线程技术就会得到性能更大的提升。对线程安全技术也要更严格。
5,NIO,零拷贝,多路复用等等新技术。这些东西在很多提升性能的中间件都有用到 redis,kafka等
更多推荐
微服务 java 中的一些优化建议
发布评论