开发者社区> 问答> 正文

请教大牛,我自己写了一个SinkFunction,继承了RichSinkFunction,初始化这个SinkFunction时,我传进去了一个数据库连接池对象,在SinkFunction的invoke里,调用数据库连接池对象来写数据库。我的问题是,当SinkFunction被partition到多个机器的vm执行时,这个数据库连接池对象是在程序入口的JobClient(程序提交所在的机器VM),还是这个对象也被复制了好多份,有多少个SinkFunction在运行就有多少个数据库连接池对象?

转自钉钉群21789141:请教大牛,我自己写了一个SinkFunction,继承了RichSinkFunction,初始化这个SinkFunction时,我传进去了一个数据库连接池对象,在SinkFunction的invoke里,调用数据库连接池对象来写数据库。我的问题是,当SinkFunction被partition到多个机器的vm执行时,这个数据库连接池对象是在程序入口的JobClient(程序提交所在的机器VM),还是这个对象也被复制了好多份,有多少个SinkFunction在运行就有多少个数据库连接池对象?

展开
收起
赵慧@ApacheFlink中文社区 2019-02-21 17:09:50 6968 0
1 条回答
写回答
取消 提交回答
  • 鲁尼:取决于你的连接池对象是在哪里初始化的,如果是构造函数里就初始化好了,那在客户端就做了,连接池对象会被尝试序列化并分发到多个分布式worker。如果是在类似open的时候才初始化,那就一个task一个(除非这个连接池对象做了一些进程级别的共享,刚好你有多个task调度到了同一个进程)

    问:那你说的这2种情况,A:初始化了在序列化分发,B:分别在worker/tasker里自己初始化。对于连接数最大限制来说,其实连接数最大限制都是只在worker/tasker里有限制,而不是在整个范围内限制了对吗?也就是我定最大连接数限制1000,不是所有的worker/tasker加起来不超过1000,而是每个worker/tasker不超过1000?

    鲁尼:看你的连接数限制是连接池这的限制还是数据库server那边的限制了,连接池这边的话,确实就是单task内限制了

    2019-07-17 23:28:57
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载