小编mor*_*der的帖子

Apache Kafka是否适合用作无序任务队列?

根据生产者分配的分区,Kafka将传入的消息拆分为分区.来自分区的消息然后被不同消费者组中的消费者使用.

这种架构让我担心使用Kafka作为工作/任务队列,因为我必须在生产时指定分区,这间接限制了哪些消费者可以使用它,因为分区只发送给消费者组中的一个消费者.我宁愿不提前指定分区,因此无论哪个消费者可以接受该任务都可以这样做.有没有办法在Kafka架构中构建分区/生产者,其中任务可以由下一个可用的消费者提取,而不必在生成工作时通过选择分区来提前分工?

对此主题仅使用一个分区会将所有任务放在同一队列中,但每个使用者组的使用者数量限制为1,因此每个使用者必须位于不同的组中.然后,所有任务都分配给每个消费者群体,这不是我正在寻找的那种工作队列.

Apache Kafka适合用作任务队列吗?

architecture message-queue apache-kafka

45
推荐指数
4
解决办法
2万
查看次数

为什么包可见性优先于子类可见性?

这个答案显示了Java的可见性修饰符及其含义:

Modifier    | Class | Package | Subclass | World
————————————+———————+—————————+——————————+———————
public      |  y    |    y    |    y     |   y
————————————+———————+—————————+——————————+———————
protected   |  y    |    y    |    y     |   n
————————————+———————+—————————+——————————+———————
no modifier |  y    |    y    |    n     |   n
————————————+———————+—————————+——————————+———————
private     |  y    |    n    |    n     |   n
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么允许所有子类的可见性意味着您必须提供包中所有其他类的可见性?换句话说,为什么Java创建者会这样做,而不是:

Modifier    | Class | Subclass | Package | World
————————————+———————+—————————-+——————————+———————
public      |  y    |    y    |    y     |   y
————————————+———————+—————————+——————————+———————
no modifier |  y    |    y    | …
Run Code Online (Sandbox Code Playgroud)

java visibility

14
推荐指数
1
解决办法
216
查看次数

获取可从命令行提取的 docker 标签列表?

我想获取有关 docker 映像的已发布版本/标签的一些基本信息,以了解我可以提取哪些 image:tag。我还想查看每个标签最近发布的时间。

有没有办法在命令行上执行此操作?

Docker version 1.10.2, build c3959b1
Run Code Online (Sandbox Code Playgroud)

基本上寻找相当于npm info {pkg}docker 镜像的东西。

docker dockerhub

9
推荐指数
1
解决办法
1万
查看次数

hapijs有类似过载保护的东西吗?

如果hapi服务器过载会有什么作用,并且有类似toobusy-js的东西可以通过快速删除一些有错误的请求来防止服务器的影响.

node.js hapijs

3
推荐指数
1
解决办法
764
查看次数

退出加载节点模块,而不停止进程

我有一个模块required,但我暂时不想在模块中运行代码.我可以对它进行评论,但后来它让我想知道是否有一种方法可以从加载模块中提前退出/返回.

是否有内置的方法来阻止执行流程通过模块的代码,并提前"返回"?

javascript module node.js

3
推荐指数
1
解决办法
441
查看次数

Node.js:异步函数中的尾部调用是否有优化?

我正在使用节点 v8.10.0

上述问题解释了 Node.js 如何不再支持 TCO。我最近遇到了这样的函数问题:

async function processBatch(nthBatch) {
    // do a bunch of async work and build up variables
    await processBatch(nthBatch + 1);
}
Run Code Online (Sandbox Code Playgroud)

该代码存在内存泄漏,通过将其更改为:

async function processBatch(nthBatch) {
    // do a bunch of async work and build up variables
    return processBatch(nthBatch + 1);
}
Run Code Online (Sandbox Code Playgroud)

我很惊讶这实际上有效,因为在上面描述的问题中,它清楚地解释了 Node 8.x 不支持 TCO。那么,是否有什么特殊的事情可以实现 TCO?或者是因为它在引擎盖下使用了生成器,并且返回将生成器标记为已完成,因此可以丢弃堆栈?

recursion tail-recursion node.js

3
推荐指数
1
解决办法
2060
查看次数

以处理错误的方式启动javascript promise bluebird chain

这样做的动机是能够捕获结尾的所有可能错误.catch,甚至是初始同步代码中发生的错误.

我想像我这样开始我的承诺链:

const bbPromise = require('bluebird');
bbPromise.do(() => {
    someTask(); // Could throw
    return someVar.doSomeOtherTaskAsync();
})
.then((result) => {
    // Do something with result
})
.catch((err) => {
    console.log('err: ', err);
});
Run Code Online (Sandbox Code Playgroud)

是否有像bbPromise.do功能一样的功能?bbPromise.resolve只是给了我传入的整个lambda函数,没有执行.

我知道我可以这样做:

bbPromise.bind({}).then(() => {
    someTask(); // Could throw
    return someVar.doSomeOtherTaskAsync();
})
...
Run Code Online (Sandbox Code Playgroud)

甚至:

new bbPromise((resolve, reject) => {
    someTask(); // Could throw
    return someVar.doSomeOtherTaskAsync().then(resolve).catch(reject);
})
...
Run Code Online (Sandbox Code Playgroud)

但这些是间接的.是否有一种很好的方法可以通过执行一个可以返回一个promise的函数来启动一个promise链,并且在结尾处有错误.catch

javascript node.js promise bluebird

2
推荐指数
1
解决办法
498
查看次数