每天叨叨云原生,你知道云原生是啥么?

1. 现代应用的需求

早期人们对于互联网的依赖还不是很强烈,数字体验这个词尚未诞生,你们对于数字体验还不是那么敏感,应用程序是否老是可用也没有那么重要。对于互联网产品来讲,用户量少,并发量低,数据量也很小,只须要单个服务器便可知足需求,数据库和文件服务器什么的可用部署在另外的服务器上,这就是早期的单体架构web

后来随着各大互联网公司业务的增加,访问量和数据量也暴增,因为单个服务器的资源有限,性能显着降低,因此不得不对 IT 架构进行改造。开始只是在应用自己动刀子,好比对数据库进行读写分离、分库分表等优化,以缓解数据库的访问压力;对应用进行动静分离,将静态资源放到 CDN 以加速访问。数据库

这是一个恶性循环,如此一来,各大公司的用户规模和业务量还会继续飞速增加,业务场景会愈来愈复杂,规模愈来愈庞大,不得不分而治之,采用分布式架构,往更细粒度的方向经过 SOA 进行垂直拆分。后端

随着 4G 的普及,高速的网络让视频缓存变得不易察觉,使用数据流量观看视频再也不是一种极度炫富的行为,移动支付也借着网速提高的大潮迅速普及。现在数字体验已经再也不是咱们生活中的一个配角,它们在咱们平常生活中的许多活动中都扮演着重要的角色,咱们但愿应用程序老是可用的,不能容忍短暂的不可用,而且还得常常更新,防止审美疲劳。缓存

面对用户的这种变态需求,必须对架构继续进行优化,主要从两个方面来入手:安全

保证服务一直可用

要想保证服务一直可用,首先须要优化对状态信息的处理,好比会话状态、应用配置数据等。传统应用的状态通常都保存在本机实例上,如何使用负载均衡器的会话绑定来确保同一个用户的请求始终被转发到同一个后端服务实例上。一但访问实例发生故障,负载均衡器会创建新的会话,将请求转发到另外一台实例,但另外一台实例没有以前的状态信息,从而致使状态不一致。服务器

要想解决这个问题,须要让应用无状态化。这里的无状态并非指应用不处理数据,而是在设计时就面向失败和面向恢复设计,例如将状态外部化,存储到外部存储中,同时应用须要可以快速重启,快速弹性伸缩。最好能保证在外部系统故障状况下依然可用。微信

加速迭代流程

若是产品的进化速度太慢,不能根据用户的反馈快速迭代,就会引发用户不满。但交付速度的提升不能以下降可用性为代价,传统企业提高可用性的一种方法就是尽可能少交付,尽可能多审核,这和快速迭代是背道而驰的。现代互联网公司须要作的是快速迭代的同时又要保证可用性,而“云原生”就是用来解决这个问题的良药。网络

2. 何为云原生

计算机领域每过几年就会涌现出一批新的概念出来,细分到云计算领域也是如此,这两年时常蹦跶在你们眼前的就是“云原生”这个词。架构

云原生的英文原文叫“Cloud Native”,咱们不妨从英文的角度来理解,Native 表示与生俱来,就是亲生的。把 Cloud 和 Native 放到一块儿又该如何理解?说白了就是云亲生的!详细的解释是:应用原生被设计为在云上以最佳方式运行,充分发挥云的优点,享受云的特色。若是嫌太长不看能够直接理解为“云亲生的”!并发

云原生这个词看起来比较新鲜,其实从开发人员的角度来理解是很简单的,就是应用在开发的时候就考虑到云上提供的各类服务,充分利用云的动态调度、自恢复、经过 API 访问服务等基本特性,以及敏捷高效的特性。传统的应用开发方式都是闷头开发,无论应用跑在哪一个基础设施环境中,也不用考虑基础设施提供的各类能力,我只管让个人应用能正常运行就好。

上面都是从广义上来理解云原生,有点空洞,对应到具体的方法论就是你们耳熟能详的三板斧:容器化、微服务和 DevOps。

容器化

Docker 为表明的容器化直接对云的世界进行降维打击,它提供了一种很是便利的打包机制。这种机制直接打包了应用运行所须要的整个操做系统,从而保证了本地环境和云端环境的高度一致,避免了用户经过“试错”来匹配两种不一样运行环境之间差别的痛苦过程。同时它的颗粒度比虚拟机更小,部署更灵活,简直是红的发紫啊。

将应用托管到容器中,就注定了应用本质上是无状态的,为了保证应用无状态的同时又不影响用户体验,容器平台的作法是将状态信息保存到外部存储中,将日志采集从业务中剥离,使用 Sidecar 拉抓取业务容器日志。同时须要应用提供探针,以便让平台实现应用的生命周期管理。

对于数据库应用来讲,它们对 IO 和吞吐的性能要求很高,若是要跑在容器中,对于外部存储的挑战会很是大,各大公司也在极力优化其外部存储性能。例如金山云就推出了一种全新极速云盘(ESSD)。ESSD 是 Enhanced SSD,即在 SSD 云盘的基础上,提供更高的突破与创新,主要体如今:

  • 极简架构:NVMe SSD 做为存储介质,配合 RDMA 组网,超简洁软件架构,发挥云盘高效性能。
  • 高效性能:100W IOPS 4GBps 吞吐,时延低至 200 微秒。
  • 稳定可靠:三副本保存,可靠性 9 个 9,可用性 99.99%,支持加密,支持本地快照、普通快照等多种数据备份方式。
  • 弹性部署:支持在线扩容随时调整云盘大小,可利用快照实现云盘的批量复制,大大加强业务的敏捷性。

从图上能够看出 ESSD 相对普通 SSD 的性能提高:ESSD IOPS 单盘高达 100w,相比上一代提高 40 倍;吞吐性能达到 4GBps,提高 16 倍;时延低至 0.2ms(即 200us),为前代 SSD 时延的 1/15。

若是将 ESSD 和容器服务结合使用,用户就无需再担忧核心数据库部分可否真正迁移到云的数据库上,可否有金融级的数据库的能力。利用 ESSD 的高效性能,彻底知足云上数据库对 IO 和吞吐的性能要求。

微服务

随着数据量的不断增大,吞吐量不断增长,业务愈来愈复杂,服务的数量会愈来愈多,分层会愈来愈细。长此以往,单体应用渐渐被拆分红功能相互独立的微应用,实现业务架构解耦,你们各司其职,报团取暖,这就是微服务。

微服务区别于单体架构的地方就在于“分而治之”,即经过切分服务以明确模块或者功能边界。然而,仅有“分”是不行的,软件系统是一个总体,不少功能来自若干服务模块的配合,所以必然要有“合”的手段,这对矛盾会体如今多个方面。

若是使用 Docker,因为每一个服务打包能够封装为一个 Docker 镜像,每一个运行时的服务都表现为一个独立容器,咱们以前创建的容器依赖就能够很容易的对应到服务依赖上,基于这种统一性,系统升级就很容易配合一些自动化工具实现“总体升级”(甚至还能够“总体降级”)。将微服务应用放置在容器中,能够在开发、测试和上线流程中实现“一次编写,处处运行”。

DevOps

得益于容器和 Docker 技术的红利,开发人员能够轻松地与 IT 操做和生产环境共享他们的软件和依赖项,同时消除典型的“适用于计算机”的借口,间接地将开发人员和运维人员更紧密地结合在一块儿,使他们更能高效地协做。运维和开发小哥表示如今他们的关系很融洽,没事还能一块儿出去喝两杯,即便线上环境出了问题,也可以一块儿愉快地背锅

虽然云原生有三板斧,但主角其实仍是 Kubernetes,它是云原生领域的当红小生,甚至成为了云原生的代名词。Kubernetes 从诞生之初便一路飙升,将对手甩开了十几条街,将来也将会以火箭的速度保持上升。

为了推进 Kubernetes 产品的一致性和可移植性,践行 Kubernetes 被创立时的初心,CNCF 还启动了 Kubernetes 一致性认证计划,目前几乎全部的互联网巨头都经过了这个一致性认证:

除了这些,Kubernetes 的行业成功案例也数不胜数:

  • 超过 20 个知名的集群管理平台从自研架构迁移到 Kubernetes,包括阿里巴巴的 Sigma、亚马逊的 Apollo、Apache Mesos、百度的 Matrix、Cloud Foundry 的 Diego/Garden 等
  • 欧洲核子研究中心(CERN)正在使用 Kubernetes 管理着超过 200 个云计算中心,运行着 40 多万个工做负载,每秒处理着高达 30GB 的数据。
  • 中国移动使用容器取代虚拟机,以轻量级的方式在其平台上运行各类应用程序,利用 Kubernetes 提升资源利用率。
  • 金山云已经开始为金蝶软件提供的物理机自建分布式存储服务,为小米支撑 FDS 容器、全套基础运维平台,为金山 WPS 在线文本处理提供支持。

3. 云原生的将来

大型企业将会在 Kubernetes 上加倍投入

2018 年 1 月,Red Hat 收购 CoreOS 公司,在随后的一年中,Red Hat 将 CoreOS 优秀的功能和组件迅速融合到 OpenShift 中。2019 年 7 月 9 日,IBM 又收购了 Red Hat,将其并入混合云部门。将来,IBM 会将 Red Hat 开放式混合云技术的强大功能和灵活性与 IBM 创新和行业专业知识的规模和深度相结合,共同推出下一代混合多云平台,该平台基于 Linux 和 Kubernetes 等开源技术,容许企业在本地以及私有和多个公共云上安全地部署、运行和管理数据与应用。

无独有偶,2020 年 7 月 8 日,开源公司 SUSE 宣布收购 Kubernetes 管理平台建立者 Rancher Labs。这让 SUSE 在云原生领域拿到一张重要的门票,同时,Rancher 团队的加入也弥补了 SUSE 在云原生方面的研发能力。SUSE 并购 Rancher 以后将来发展的方向更多的会是云原生技术和 2B 客户的需求场景的结合,加速对非云原生软件类产品的替代,加速对传统 IT 市场的云化过程。

而国内的金山云则从基础设施层面着手,推出了三款全新的产品:金山云星曜裸金属服务器、新一代高性能云服务器和全新极速云盘 ESSD。ESSD 前面已经介绍过了,这里主要介绍下裸金属服务器。星曜裸金属服务器是一种专属、独享的云上物理服务器,提供超高性能计算服务。它跟云服务器、容器同样,享受到云的统一管理。而且,在多层安全防御等级下,它的采购、运维、管理跟分布式云计算现有的服务互通,能够同时享受到物理服务器的优秀性能和云服务器的弹性能力。性能方面主要体如今:

  • 原生裸金属服务器,不产生性能损耗,无资源抢占现象,服务安全、稳定、可靠。
  • 最大可支持 50Gbps 带宽,原生网络性能可达到 3000W PPS。
  • 支持与客户托管 IDC 区域的裸金属服务器经过 10Tbps 专线互通,造成一个延迟和收敛比可控的内网,网络效果等同于在同一 IDC 内互通。

除了性能优点外,弹性能力也不容小觑:

  • 可做为传统 IDC 的逻辑扩展部分。
  • 支持云容器一体化管理,托管资源与云资源统一管理。
  • 单个可用区支持超过 10 万台裸金属云资源扩展,突破了机柜不足的限制。

若是你很关心虚拟机的性能损耗问题,但愿将物理服务器的性能所有发挥出来,能够选择金山云的裸金属服务器,它默认已经集成了监控、容器、大数据等 PaaS 层服务,均支持插件式安装。其余 PaaS 层服务也在持续集成中。

做为用户,你也无需担忧迁移成本,只须要接入裸金属服务器的控制台 API,就能够像管理本地服务器同样管理裸金属服务器了。

利用这三大法宝,金山云提供了一站式的商用方案,数据库、大数据什么的上云从未如此简单,再也不须要本身瞎折腾,老牛拉破车,越拉肾越虚。。。

混合云、多云趋势凸显

在公有云的 IaaS 层,先发者 AWS 是事实上的标准制定者。全部的公有云厂商推出的云服务器,都至关于“兼容机”。出于不想被单一厂商锁定、以及数据敏感性等的考虑,用户在使用云的过程当中,愈来愈呈现混合云、多云的趋势。

因为 IaaS 层至关于造成了标准化,各用户也能够利用第三方厂家实现混合云多云管理。微软、谷歌 和 AWS 都提供了跨云和混合云的方案。例如谷歌的 Anthos

Anthos 容许你在私有云中部署,并安装一个代理,保持与 Google Cloud Platform(GCP)的加密链接。该代理容许你从 GCP 控制台管理 Anthos 集群及其工做负载,部署和扩展应用程序。

微软的 Azure Stack 也有相似的服务:

它容许你在本身的数据中心部署 Azure 服务,有了 Azure 和 Azure Stack 组成的混合云,开发者就能够基于统一的 Azure 服务和 DevOps 敏捷开发流程和工具,开发最适合业务、技术和合规要求的应用。

金山云也不甘落后,一方面,金山云提供的银河专有云,能够知足用户将兼容机方便地部署在本身机房的诉求;另外一方面,金山云利用开源社区技术,提供了较为简便的、基于容器的混合云、多云管理方案,便于用户将 IaaS 层实现跨云的统一管理。

若是你以为这种专有云起步太大了,那也彻底不用担忧,金山云已经把专有云作的愈来愈小型化,从原来的 50 台服务器压缩到了如今的 10 台,同时服务能够选配。这种解决方案在不少场景下对小型私有云平台有碾压式的优点,实现了无缝扩展,并且混合云的管理也会很是简单,由于本地和远程资源基本上是一致的。

随着云原生的理念愈来愈深刻人心,利用金山云的专有云,客户能够轻松部署各类高性能的云原生应用到私有数据中心中,数据库和大数据应用也不在话下,把云原生的价值最大化,真香!


你可能还喜欢

点击下方图片便可阅读

Linux Capabilities 与容器的水乳交融

云原生是一种信仰 🤘



码关注公众号

后台回复◉k8s◉获取史上最方便快捷的 Kubernetes 高可用部署工具,只需一条命令,连 ssh 都不须要!



点击 "阅读原文" 获取更好的阅读体验!

         
❤️ 给个 「在看」 ,是对我最大的支持❤️

本文分享自微信公众号 - 云原生实验室(cloud_native_yang)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。