卖个艺,给大家来段相声

开发 开发工具
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API......

[[332919]]

甲:听说咱们IT界又出了一个新词,叫什么“云原生”?Cloud native?

乙:这都2020年了,还新词?早在2013年人家Pivotal就用这个词开始忽悠了。

甲:那啥是云原生呢?

乙:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API......

甲:打住打住, 您能说点儿人话吗?

乙:那是人家CNCF权威的官方定义,你听不懂只能说明你的水平太次。

甲:好好,我水平很次,您倒给解释解释,究竟啥是云原生?

乙:用大白话来说,云原生就是把你的应用程序设计成在云端执行,充分利用云计算的好处。

甲:嗯,我们家的应用在一个机房里运行,用了好几个服务器,一个做负载均衡,三个应用服务器,还有两个数据库服务器,按你的说法,我把他们迁移到云端环境,申请几个虚拟机,那就是云原生了吧?

乙:不不不,你这么做,和在机房里运行差不多 ,无非是把物理机换成虚拟机而已,你忘了后半句:充分利用云计算平台的优势。

甲:您倒是举个例子啊。

乙:好,假设你们家应用有一天突然火了,现在的服务器应付不过来这么大的流量,你怎么办?

甲:这还不简单,买新服务器,配置服务器,把应用安装上去,运行。

乙:这多费劲啊,得多长时间啊,如果是云原生的应用,它可以自动到扩展出新的运行实例了,如果火热劲儿过去了,可以把这些个运行的实例给撤销掉,这就叫自动伸缩,弹性扩展。

甲:这确实不错啊,还有吗?

乙:天下武功,唯快不破,我问你,你们家应用一天能做多少次发布?

甲:一天发布多少次? 别逗了,我们几个月才发布一次。

乙:如果是云原生的应用,每天可以发布几百次(自然也可回滚几百次),不用停机,轻松支持蓝绿部署。

甲:一天发布几百次,有这必要这么变态吗?

乙:当然,也不是应用所有的代码都发布几百次,一个超大的系统会被拆分成小块儿的服务,这些服务会频繁发布,迅速把新功能推向市场,进行验证。

甲:对我们这个小应用一点儿用也没有。 还有别的吗?

乙:云原生的应用具备强大的监控和自动化恢复的能力,可以自动进行健康检查(比如网络延迟如何?磁盘满了吗?),发现故障,自动恢复,重新启动或重新部署相关服务。

甲:我总结一下,无非就是达到快速发布,弹性扩展和高可用性, 您吹嘘得这么好,倒是说说怎么才能做到吧!

乙:首先,你得用微服务架构,这样才能独立开发,独立部署,弹性扩展。

甲:我去!难道我不用微服务就没法实现云原生了?

乙:那效果肯定是大打折扣。你一个巨大的单体应用,光启动都得好几分钟,怎么才能做快速部署和发布啊? 其次,你得用docker和k8s,再加上DevOps,这样你才能实现应用程序每天发布几百次、并且弹性扩展。

甲:也是,从一个docker镜像,生成一个可以运行的实例,确实简单。

乙:你还得用声明式API和不可变的基础设施。

甲:又不说人话吗?

乙:比如说吧,你的系统需要一个nginx , 你直接告诉云平台:我需要一个nginx,端口80,云平台能根据你的描述来生成一个nginx实例, 这就是声明式;如果是命令式,则是这样:从xxxx地方下载nginx安装包,解压到xxx路径,修改xxx文件.....



 

甲:嘿!声明式是更简单啊, 那不可变基础设施是啥?

乙:你发现你的nginx的配置有问题,你想登录进去把它改一下,这是不允许的。因为下一次部署可能就会忘记这个改动。相反,你应该去修改你的声明,完全破换掉现在的nginx实例,重新创建新的。

甲:就是只有新增和删除,没有修改了呗!

乙:对,这样整个系统都处于一个已知的可控状态,无论是发布新功能还是回滚到旧功能,都很方便。对了,差点忘了最重要的东西了,云原生要用Service Mesh (服务网格)。

甲:Service Mesh 我在码农翻身公众号看过,《微服务之赤壁大战》, 它的意思是说现在微服务架构需要实现服务发现,负载均衡,服务限流,降级,日志,监控等各种功能,这些功能现在需要程序员调用相关的类库才能实现, 用了Service Mesh, 这些功能都可以在底层平台中实现了,程序员只关注业务逻辑就好了。



 

(现状)

 

 


 



 

(Service Mesh)

乙:对,Service Mesh 符合软件发展的趋势:不断地把通用的技术放到平台中。原来你累死累活弄个搜索的功能,现在有现成的Elastic Search ;原来搞个负载均衡,高可用那绝对是高科技,现在云平台有现成的负载均衡服务,拿来用就行了。

甲:微服务,docker , k8s , Service Mesh ,DevOps, 声明式,不可变基础设施, 我算是懂了, 云原生是个筐,什么都可以往里边装啊。但是,我只要能实现快速部署,弹性扩展,高可用就行了,为什么非要用这些时髦的东西呢?

乙:这些东西是开放的标准,有现成的实现,有大公司的支持和背书,你可以不用,但是就得自己去造轮子了。

甲:好吧,明白了。

乙:云原生可能是未来的发展趋势,要不要把你们家的应用也改成云原生的?

甲:得了吧,我们那系统要不要拆分成微服务还不一定呢?

乙:你可要想好了,云原生可是评优晋级的大杀器啊!

甲:评优晋级?那我得好好想想......

如需转载,请通过作者微信公众号coderising获取授权。

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2015-07-21 11:11:58

视频行业

2023-02-26 01:02:22

2015-07-08 15:56:47

限挑战表

2021-09-26 22:22:42

js模块Node

2020-12-30 09:55:56

鸿蒙HarmonyOS环境搭建

2010-07-12 09:07:30

C#

2022-08-26 01:46:33

注册中心NacosDNS

2013-05-02 10:05:30

IBMx86服务器联想

2009-10-29 16:32:34

Oracle表空间

2012-09-10 13:42:55

PHP项目管理

2019-09-12 08:38:15

机器学习电影数据库

2012-04-11 21:24:33

超级本英特尔IDF2012

2015-10-29 09:27:33

2012-10-18 10:01:20

亚马逊

2020-11-19 07:47:55

IDEA插件

2020-11-20 14:39:24

IDEA开发插件

2009-12-21 15:53:29

2021-03-18 08:04:54

AQS工具CAS

2020-07-27 07:53:36

高并发流量系统

2012-11-30 11:31:15

Visual StudVisual StudVS
点赞
收藏

51CTO技术栈公众号