开发者社区 问答 正文

为什么Kubernetes和Akka不能同时保证safety和liveness呢?

为什么Kubernetes和Akka不能同时保证safety和liveness呢?

展开
收起
kun坤 2020-04-24 14:26:57 548 分享 版权
1 条回答
写回答
取消 提交回答
  • 这是因为这两个作为比较底层的平台, 他们需要对上层提供非常大的自由性, 而不能限制上层的活动; 比如kubernetes没有规定用户不能在pod上跑某种程序, Akka也没有规定用户不能写某种actor的code; 这样, 在不限制自己处理能力的同时要保证任何行为都看起来exactly happen once(因为语义上singleton节点只有一个, 那么就不能让用户写的任意单线程程序出现多节点平行执行的外部效果), 而这对中间件来说是不可能的, 这就引出了另外一篇论文: end to end argument[27], 作者已经写过一篇文章详细介绍end to end argument(阿莱克西斯:End to End Argument(可能是最重要的系统设计论文)), 这里不在赘述; 后边我们可以看到Flink, Spark等流系统为了保证exactly once msg processing需要怎样和end to end argument 搏斗;

    2020-04-24 14:27:05
    赞同 展开评论