最近超火的云原生基础架构,金山云准备怎么玩
1. 现代应用的需求 早期人们对于互联网的依赖还不是很强烈,数字体验这个词还没有诞生,大家对于数字体验还不是那么敏感,应用程序是否总是可用也没有那么重要。对于互联网产品来说,用户量少,并发量低,数据量也很小,只需要单个服务器即可满足需求,数据库和文件服务器什么的可用部署在另外的服务器上,这就是早期的单体架构。 后来随着各大互联网公司业务的增长,访问量和数据量也暴增,由于单个服务器的资源有限,性能显着下降,所以不得不对 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 的高效[Z[1] 性能,完全满足云上数据库对 IO 和吞吐的性能要求。 微服务 随着数据量的不断增大,吞吐量不断增加,业务越来越复杂,服务的数量会越来越多,分层会越来越细。久而久之,单体应用渐渐被拆分成功能相互独立的微应用,实现业务架构解耦,大家各司其职,报团取暖,这就是微服务。 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |