Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

多台机跑Job的问题 #566

Open
gqipan opened this issue Aug 18, 2017 · 7 comments
Open

多台机跑Job的问题 #566

gqipan opened this issue Aug 18, 2017 · 7 comments

Comments

@gqipan
Copy link
Contributor

gqipan commented Aug 18, 2017

现在有一个Job, 目前只放在一台机上。因为比较耗时,只能每分钟处理6条记录。 目前我想放到多台机上跑, 但是Job的任务那张表里面的任务该怎么分配呢。
单机的时候,我是每次从表中取一条,然后去跑。 多机的时候,怎么才能保证这个任务分发正确性。
PS: 机器总数是3台,但是非促销时期,去减少一台。

@Mrchenli
Copy link

可以用kafka 建一个topic1 然后指定三个partition 然后一个消费组里面三个消费者分别消费一个分区 ,没具体实践过 。。感觉应该可行

@gqipan
Copy link
Contributor Author

gqipan commented Aug 18, 2017

@Mrchenli Kafka 不行感觉不行, 我这个是Job,并不需要消息中间件

@Mrchenli
Copy link

是取这个job慢还是 处理job的业务慢啊

@Mrchenli
Copy link

我想的是 数据库加个字段 一个job如果是机器1触发的 先找到那条job然后贴上自己的标签(数据库更新应该是有锁的) 然后再去取这条job消费 不过这样会改变表结构而且会增加单条请求的时间

@Wrecksoul
Copy link
Contributor

这个不是MapReduce要解决的问题吗?就是用hadoop呗。
如果只是简单实用的话,hadoop肯定有太多的学习曲线。可以简单的利用取模来分配呀,虽然这样在软负载均衡方面很难把控,但是对于job不多的简单系统还是足够的。

@ddyblackhat
Copy link
Contributor

我们用7台机器做影像转换,把所有要转换的都放到redis中,数据结构用的list,从右边放
拿一台机器根据机器可执行的线程数和总得要做转换的影像,给每台机器分配任务,触发转换方法。
或许可以提供些思路

@justtree
Copy link

1、单机。抓取数据,放进线程池异步处理
2、集群。新建一个服务,获取到数据后,发送MQ,调用服务处理具体业务

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants