微服务 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等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值