午夜咖啡午夜咖啡

jolestar 的文章与笔记。

Post

云原生与能力让渡

2019-05-09 19:01:52Post

所谓云原生,真正要回答的还是哪些能力值得抽象并托管给平台,哪些能力必须留在应用内部。

仔细读了下 @邓草原 那天转的 Akka 十周年杂志,其中有篇 Akka 和 Kubernetes 结合实现云原生应用的文章很不错。

曾经给云原生应用下过一个定义:

让渡一部分功能给云,以实现弹性,高可用,故障恢复,降低研发运维成本的应用。

但到底哪些功能可以抽象,标准化,然后托管给平台?Kubernetes 主要实现了运维和资源的标准化,ServiceMesh 在网络层切了一个面,抽走了一部分,但离完全解决弹性(包括 elastic 和 resilient)问题还有距离。

就拿流量控制和自动伸缩来说,平台如何知道应用抗不住了,需要扩容了呢?现在主要是运维监控层面的一些粗指标,还要依赖运维经验。

如果应用的流量能像水一样,有一种 back-pressure 机制,就好办了。水管某个地方突然堵了,压力会向后传导,入口处流入的就慢了。但软件系统中如何模拟这种 back-pressure 机制呢?用什么指标呢?最好的还是消息,消息的堆积可以明确给一个量化指标。

所以这个问题的解决不仅依赖平台,还要依赖应用的架构方式的改变,应用最好是一种消息驱动的响应式(Reactive)系统。而 Akka 和 Kubernetes 的结合则提供了一种可能的方案。

原微博中的媒体