浅谈云计算已对云计算有了描述,这里来讲讲我理解的云原生。 云原生的目的,就是提供更多的通用服务,让用户更专注业务。
云原生(CloudNative)是一个组合词,Cloud+Native。 Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行。
虽然我们都在说云原生,但很多东西并没有变。见云计算-变化中的不变,软件开发的基础是不变的。
云原生改变的是应用开发的设计方式。比如单机故障的问题,中间件部署的问题,都可以交由云上的生态来解决。
那网卡做个比方,现在的网卡可以Offload一些需要操作系统内核处理的TCP动作,提升性能。云计算的能力就是在Offoad一些业务应用需解决的问题。
云原生就是要更好的利用这些能力。
如此一来,应用会越来越依赖云,自然就成为了云原生。简单说就是,解耦再解耦。可复用的能力由云上生态提供。
传统数据中心时代,大家使用某种软件,都是购买版权(License),像Oracle这样。
在云计算时代,我们发现VPC虚拟出的私网可以开通通信通道,让用户通过通道访问服务。这能很好地隔离用户APP和服务APP。
这就解决了很多版权售卖的问题,售卖方式也更为灵活,比如按照时间,计算量来计费。
所以,云原生的关键是,重新定义软件服务。从贩卖版权+售后的模式,转变成开箱即用的服务。就好像微软的Offlice套件变成Office365一样。重点是服务,而不再是软件。
此外,云原生也利好开源软件公司,比如MongoDB,PingCAP等公司,云原生为其提供了很好的商业模式。
服务的使用来自网络通信,所以我们还需要一个通信标准,也就是Service Mesh。简单说就是代理的终极形态。
像阿里的TDDL(淘宝分布式中间层),HSF(高速服务框架),Notify(消息中间件)等,是支撑双十一的核心模之一,这么牛逼的东西,为什么云上很少有产品呢?是它们做的不好么。
我想,更大的问题是因为这些中间件都是重SDK的设计,用户不好用。云上售卖的通常是改造版的,比如在前面加一层Proxy。
其实总的来说,就是链路短,直连没有性能损耗。
随着服务器性能越来越好,部分性能损耗已经下降到了可以接受的范围。加上业务越来越复杂,大家也不希望花过多时间在基础问题上。专业的人做专业的事。
除了易用性外,还有几点:
Sidecar模式成为未来分布式系统的通信标准,整体设计相当于在每个节点中,提供一个agent用作消息代理,接收和发送均由agent代劳。有点像给台电脑,大家在家办公的感觉,agent就是那台电脑。
可以看到,它的设计目标是降低代码的耦合。可以将应用通信的管理由Sidecar来负责,应用只需考虑业务需求。
比如现在的云上服务,未来可能会过渡到Sidecar。
实际上,解耦后,不通平台的问题更容易得到解决。相同的标准可以用不同的实现。
云原生的目的,就是提供更多的通用服务,让用户更专注业务。