千家信息网

transfer服务并发优化的方法是什么

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这篇文章主要介绍"transfer服务并发优化的方法是什么",在日常操作中,相信很多人在transfer服务并发优化的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家
千家信息网最后更新 2025年02月04日transfer服务并发优化的方法是什么

这篇文章主要介绍"transfer服务并发优化的方法是什么",在日常操作中,相信很多人在transfer服务并发优化的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"transfer服务并发优化的方法是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、背景

业务反馈Java的Transfer服务有调用超时情况。

二、问题排查与优化

阅读代码发现,数据来了之后,循环处理,消息放到本地队列,是同步的方式,这里并发肯定会影响性能,果断优化;

三、优化过程

四、经验总结

1、尽量减少IO操作

尤其是网络IO,尤其是在for循环中使用网络IO,如果必须要使用,考虑使用缓存替代。

  • 案例一:本次调用hbs获取uuid,其实可以从DB获取,只有获取不到的情况才从接口获取;这个调用接口问题也是服务慢的最主要原因,每次请求如果list的size是1000,且不带uuid,那么就要访问1000次接口,怎么快?

  • 案例二:循环中会往kafka投递数据,这个也是网络IO,可能比调用hbs快很多,但是还是网络IO,还是影响性能的,所以后面改成了本地IO,并使用基于乐观锁的ConcurrentLinkedQueue。

2、异步处理

业务如果不关心服务响应内容,可考虑将接口修改成异步,这样业务的请求立即返回,服务端需要考虑的就是如何快速处理服务。

如本次优化,异步后最起码可以解决客户端等待问题,避免由于服务端问题影响客户端

3、NIO理念,分段处理,减少等待

先说下优化之后的逻辑(分四段处理),每一段一个线程池,每个线程池用不同的名称,方便观察:

  • --》接收请求,多线程异步处理

  • --》循环中往ConcurrentLinkedQueue添加数据的时候,采用多线程异步(虽然乐观锁,但是也会碰到自旋情况)

  • --》新增个定时任务,一秒钟一次消费ConcurrentLinkedQueue的数据,并将数据放到list

  • --》多线程处理,当list达到200时,push到kafka

然后对每一段的线程池的缓冲队列增加监控,观察哪一步有积压,说明那一步可能比较慢,可以适当增加线程的数量。

4、第三方缓存与本地缓存合理使用

本地缓存

优点:速度快,不需要经过建立远程连接,网络传输过程等消耗;

缺点:占用本地内存,当系统处理速度慢的时候,造成本地数据积压,从而消耗本地内存,导致频繁的GC

第三方缓存

优点:不占用本地缓存

缺点:速度慢,需要经过建立远程连接,网络传输过程等消耗;

本系统采集两种方式结合:在offer数据的时候使用本地ConcurrentLinkedQueue存储,消费ConcurrentLinkedQueue数据投递到平台服务端的时候使用kafka进行缓冲,使用flink进行消费kafka数据发送到平台服务端。

为什么这么做呢?

1、在offer数据的时候使用本地ConcurrentLinkedQueue存储,主要考虑这种数据消费起来比较快,不会造成本地积压;

2、投递到平台服务,由于是要建立http连接,有可能受到此服务稳定性的影响,所以为了保障本服务的稳定性,使用flink做这个事情。

5、计算密集型服务与IO密集型服务分离

合理申请相关配置咨询,提高并发能力。

本服务是两种操作都有,如循环遍历的时候是计算密集型;

将数据推送到远端是网络IO密集型,如果放到一个服务,尤其是一个线程逻辑的时候很容易造成等待,所以此处需要分离,然后对于计算密集型的,申请cpu性能好的,对于IO密集型的选择磁盘或者网卡好的

计算机的并发瓶颈怎么估算?

对于一个2GHZ的CPU,运输速度是20亿次/秒,意味着如果是纯CPU密集型操作,对于简单的请求,理论上能达到20亿次并发,当然这当然是不可能的,因为网络请求还有很多因素的影响,如线程切换消耗,网络IO开销,连接建立过程等,仅供评估使用。

到此,关于"transfer服务并发优化的方法是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

服务 数据 线程 网络 处理 密集型 时候 缓存 方法 问题 影响 循环 接口 过程 速度 学习 消耗 消费 业务 平台 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 宝塔安装数据库会覆盖掉原有的吗 江西工程软件开发公司 缺省值数据库怎么写 刀片式服务器优缺点 dns服务器没有响应 科技公司和互联网 网络安全电信日安全知识答案 上海在线学习系统软件开发 网络安全手抄报上面的孔填什么 网络安全宣传周横图 爱奇艺的源服务器地址在哪里 深成网络技术有限公司怎么样 用友软件数据库怎么解决 河北办公系统软件开发哪家正规 f5负载均衡需单独服务器 浙江企业软件开发定做 自贡市网络安全宣传周攻防演练 超激斗梦境服务器问题 表的数据库对象有 北京服装外贸软件开发 我的世界服务器身份认证在哪里 网络安全规定有下列行为之一 某宝租的服务器被攻击了 海外科技互联网周报 网络安全防范对策论文 e家联盟服务器 网络安全人人有责手抄报手写 大学学生会自荐信网络技术 金山区市场软件开发成本价 软件开发记什么会计分录
0