在Flink为什么使用同步客户端在线程池中调用比异步客户端效率低?
在Flink中,同步客户端和异步客户端的主要区别在于他们的请求方式。同步客户端会阻塞当前线程直到获取到结果,而异步客户端则会立即返回一个Future对象,然后在后台执行请求。
当访问的外部存储支持异步请求时,Flink推荐使用异步I/O,因为这样可以极大地提高数据处理效率。然而,如果所访问的外部存储不支持异步请求,可以通过创建多个同步请求并放到线程池中来处理,这种方式被称为有限的并发客户端。但是,这种方法通常比适当的异步客户端效率低。这是因为同步请求会阻塞线程池中的线程,使得线程无法并发处理其他请求,从而降低了系统的整体效率。
总的来说,同步客户端在线程池中调用比异步客户端效率低的主要原因在于,同步请求会阻塞线程,而异步请求则不会。因此,为了提高系统的效率,应尽可能使用异步I/O。
受限线程的个数呀,而且就算你线程上去了 线程上下文切换也占用资源呀。此回答整理自钉群“【①群】Apache Flink China社区”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。