写点什么

这大概是今年介绍云原生最清晰明了的文章!

  • 2019-10-15
  • 本文字数:4134 字

    阅读完需:约 14 分钟

这大概是今年介绍云原生最清晰明了的文章!

在才闭幕的 KubeCon + CloudNativeCon Barcelona 2019 中,各路专家深度解读了 Helm、Rook 等项目的新版本,并回顾了 Linkerd 的发展历程和 Fluentd 在边缘计算领域的进展。同时,大会也公布了一些新消息:

  • CNCF 正在为其网络中使用或旨在使用云原生技术的运营商及其供应商推出 TUG;

  • Google 宣布 GKE 将于 6 月正式支持 Windows Server Containers;

  • 微软发布 Kubernetes 相关更新,推出 Service MeshInterface(SMI)规范;

  • Praqma 宣布 Atlassian Software Klassnetes(ASK)正式开源;

  • VMware 发布 Velero v0.11,这是一种用于备份、恢复和迁移 Kubernetes 集群的开源工具;

  • NGINX 宣布推出 Kubernetes Ingress Controller v1.5。


2019 年 6 月 24 日至 26 日, 由 Cloud Native Computing Foundation (CNCF) 主办的云原生技术大会 KubeCon + CloudNativeCon + Open Source Summit(上海)即将在中国上海盛装启幕。本届 KubeCon 将吸引来自全世界数千名技术人员参加此次盛会,参与 CNCF 全部项目和话题的深度探讨,以及案例分析,聆听 CNCF 项目的运维者和用户的分享。


在本次 KubeCon 上,京东云将在大会上为对云原生感兴趣的研发和运维人员带来《利用延迟加载快速启动 Docker 容器》的话题分享。


看完这些,是不是有点晕了?怎么那么多东西啊!


为了让大家更好地了解云原生,我们特别开设了“云原生系列内容”,今天将是该系列内容的最后一篇。不论你之前了不了解云原生或者 CNCF,看完这篇内容,希望都能让大家对于云原生有着从 0 到 1 的全方位深入了解。

什么是云原生?

计算机领域每过几年都会产生一些新的概念出来,网格计算、云计算、物联网、微服务、区块链、边缘计算…… 每一个新概念都很难从名称直接看出来它的含义,所以一开始大家都会问到底什么是 X 计算,几年后再说起 X 计算大家却似乎都知道了,但是如果让他们解释一下,大多数人还是会解释不清楚。今天聊的主角“云原生”(Cloud Native)也是一样。


(关于云原生的定义众说纷纭,本文的介绍仅代表个人理解,欢迎指正。)

01 云原生是利用云快速交付应用的一种方式

Pivotal 公司是云原生概念的早期推广者,同时也是 Spring 框架和 Spring Cloud 的主要贡献者,它对云原生的定义是:


“Cloud-native is an approach to building and running applications that exploits the advantages of the cloud computing delivery model.”——云原生是利用云交付效率的优势来构建和运行应用的方式。


同时,他还补充道:


“Organizations require a platform for building and operating cloud-native applications and services that automates and integrates the concepts of DevOps, continuous delivery, microservices, and containers.”——组织需要一个平台来构建和运行云原生应用,这个平台要包含 DevOps,持续交付,微服务和容器。


简单总结一下,也就会说云原生的目的是为了充分利用云的能力使应用交付更快。为了达到这个目的,将用到 DevOps、持续交付、微服务和容器等理念和技术。


此外,提起云原生,业内人士还会提到另一个词:云原生基金会。那么云原生和云原生基金会(Cloud Native Computing Foundation,简称 CNCF)又是什么关系呢?


云原生基金会致力于推广云原生计算模式,并维护一个厂商中立的开源生态系统来普惠大众。云原生计算使用开源软件栈来构建微服务,打包为容器,并且动态编排容器来最大化资源利用。CNCF 孵化了软件容器领域的一个值得关注的 Kubernetes 项目以及围绕它的很多其他项目,而 Kubernetes 目前已经成为云原生应用的重要基石。


所以,云原生是一种理念和应用交付模式,云原生基金会是以推广这种理念和模式,孵化支撑这种模式的开源项目。注意,这里的“云”并不特指公有云,而是泛指可动态提供资源的各种平台。要应用云原生,会涉及到一些核心的技术:微服务、容器、交付。下面看一下为什么云原生会强依赖这些技术。

02 微服务、容器、交付

微服务简单来说就是将应用所需要的功能拆分成一个个小型独立的软件服务,即“微服务”。每个微服务专注于自己的任务,可被独立部署、更新、伸缩和重启,同时基于 API 彼此通讯来进行协同工作,以形成大型可伸缩应用程序。微服务最重要的点不是把服务拆的有多小,而是把除了应用本身关注的业务以外的其他逻辑都拆除出去。应用开发者不用去关心其他应用在哪里,不用去实现其他应用失效了怎么去重试怎么容错的逻辑,不用去为灰度和 AB 测试等需求开发代码,也不需要去实现逻辑来监控应用运行状态… …应用开发者就只专注于实现业务逻辑。同时,每个服务要实现的业务逻辑尽可能清晰,尽可能是高内聚的一组功能。


容器是应用的运行环境,是微服务的最佳载体。运行在容器而不是虚拟机,性能上的优势是一方面,更重要的是关注主体发生了变化。当运行一个虚拟机时,值得关注的主体是这台虚拟机,里边到底有多少种应用、具体是什么应用这并不是重点。而当运行一个容器时,关注点是放在容器中打包的那个应用,应用是整个动作的中心。但是也不能说用了虚拟机就一定不是云原生,利用虚拟机实现基于云的快速交付,也是云原生的另一种最佳实践。


交付是将容器中的服务真正用起来的过程。传统运维关注点在于一个一个的运维动作,而面向交付的运维重点在应用本身。关注的是应用最终需要提供多少个实例或者支持多少并发调用,这些运维的动作不应该是应用的关注点,应该全由底层平台解决。因此,有了声明式模型,应用只说需要几个实例,平台自己想着怎么启动,当有设备故障时怎么恢复;有了无服务器架构,应用根本不关注实例个数和启停逻辑,平台根据调用压力动态分配计算资源。


之所以很多人一提到云原生就想到 Kubernetes,一方面因为 Kubernetes 是云原生基金会孵化的代表作,另外一方面也和它的能力有很大关系。作为市场领先的编排解决方案,Kubernetes 正是实现了将应用以容器的方式快速交付,让应用不用再关注系统和网络差别,不用再关注部署和伸缩细节,并且具备丰富的生态(如 Istio,Envoy,Prometheus,Jaeger 等),提供应用的微服务治理能力,解决应用上云这个难题。

03 构建云原生的应用

知道了什么是云原生,那要如何让应用更好地符合云原生的交付模式呢?


首先,你需要有一个云。这个云不一定是公有云,也可以是私有云,混合云,甚至是区块链服务,也可以是任何其他形式动态提供资源的平台。这个云需要具体如下基本能力:管理程序包/容器镜像/虚机镜像的能力;弹性将应用通过容器/虚拟机等方式交付的能力;对应用进行灵活的服务治理的能力;对应用的各种状态进行临时/永久存储的能力,以及对应用的安全性提供保障的能力。


其次,你要有用云的能力,不要在应用里去实现应该云平台提供的功能。有些团队用云服务只敢用云主机和存储,担心使用云的其他能力会被这个云服务绑定。有这个担心是对的,但是更好的方式应该是选择更开放、更兼容的云产品来使用。例如京东云的 Kubernetes 集群、微服务平台都是与开源项目完全兼容的,可以放心使用,不喜欢了也可随时切换到自己运维的开源项目上。


同时,你还需要改造你的应用,使之能更好的适用于在各种云平台上快速交付。关于云原生应用该如何设计,Heroku 团队提出的十二要素(Twelve-Factor)提供了很多非常有价值的建议。十二要素包含:



按照十二要素的要求,编码、开发、构建、运维等操作都需要被清晰界定和规范,应用需要专注在业务逻辑,将部署环境、运行依赖,状态保存、并发、日志等问题都交给云平台来处理。云原生应用的开发过程变成:快速响应业务需求开发精简的应用构建标准包,然后在不同的环境以不同配置动态部署,运行的各种依赖利用云平台解决。按照这些原则去设计自己的应用,应用会更易于使用云服务提供的标准能力,会更易于实现快速交付,更易于进行灵活扩展。


在十二要素发布后,Pivotal 公司的 Kevin Hoffman 编写的 Beyond the Twelve-Factor App 一书中,又增加了三个新要素作为补充:



最后,要构建云原生的应用,下面是在应用研发上线过程中的一些建议:


  • 代码里应该重点关注业务逻辑而不是其他

  • 代码尽量不要有任何状态,状态都存到云服务里

  • 代码里不要有和本应用无关的业务逻辑,它应该在其他应用里通过 API 调用

  • 不要实现用于运维和服务治理和观测的具体逻辑,要依赖第三方库和云服务

  • 不要硬编码地址等任何配置,这段代码要运行在很多环境

  • 不要假定这段代码会部署在什么地址,会部署几个实例

  • 不要假定程序永远不死,要保证单个实例的死去不要影响其他实例

  • 构建结果是一个整体,不能把构建的代码部署后再去改动代码包里的内容

关于云原生 我们在做什么?

云原生聚焦的是如何在 IaaS 基础构建之上创建有效的应用平台,而为企业级信息应用提供更好的技术环境也正是京东云的使命。


京东云,作为具有强产业属性的云智能厂商,在云原生技术的大量投入来自于自身业务的需求,从电商的前端网站、订单、结 算、支付、搜索、推荐,到后端的仓储、配送、客服、售后,以及采销人员使用的各种业务 系统都面临前所未有的挑战。京东几千个系统,几万个应用,每一个环节正常工作才能保证 整体业务顺利运行。云原生技术正是承载京东零售科技的技术基石。


经过多年的实践,京东构建了全球最大的 Kubernetes 集群,积累了大量的云原生开发和运维经验,并且加入云原生计算基金会成为最高等级的白金会员。


作为社区一员,京东云也会积极采用 CNCF 的项目、参与开发贡献并与其他成员一同合作共建社区。在即将开始的 KubeCon+CloudNativeCon 和 Open Source Summit(China,2019)活动中,我们的技术专家在现场将为大家带来《利用延迟加载快速启动 Docker 容器》话题分享,通过京东云研发的容器镜像延迟加载技术,优化 Docker 镜像的加载过程,显著提高容器的启动速度。同时,还有京东商城技术专家们带来的《Kubernetes 中 MySQL 容器的正确大小和自动扩展》、《使用 Vitess 的两年:京东如何运行全球最大的 Vitess》、《在 Kubernetes 中经济高效地调度大量容器》[strong_end] 主题演讲。


京东云 2016 年开始对集团外部提供服务以来,逐渐将集团内部多年积累的云原生开发和运维能力标准化为 Kubernetes 集群、微服务平台、Devops、函数服务、云安全、API 网关等上百种标准的云服务,方便客户利用京东云服务的强大能力,快速、安全、高可靠地交付产品。


2019-10-15 15:232010

评论

发布
暂无评论
发现更多内容

国密加密卡定义以及作用简单说明

行云管家

数据安全 国密 国密加密卡

从源码到实战:探寻App中的等待神秘力量,强制等待vs隐式等待

测试人

软件测试 自动化测试 测试开发

做AI产品经理的三年,聊聊我的心得

京东零售技术

人工智能 产品经理 企业号 4 月 PK 榜

LED显示屏品质受LED灯珠的影响

Dylan

性能 信息 LED显示屏 全彩LED显示屏 led显示屏厂家

多元 CPU 性能调优的技术挑战、产品设计和业务实践

百度Geek说

cpu 百度智能云 企业号 4 月 PK 榜 btune

芜湖等保测评机构有哪些?在哪里?

行云管家

等保 等保测评 芜湖

[图数据库]gStore1.2在Ubuntu和Java环境下的安装与试用

alexgaoyh

Java ubuntu 国产化 图数据库 gstore

深入理解Transformer技术原理 | 得物技术

得物技术

架构 Transformer AIGC 企业号 4 月 PK 榜 注意力机制

文心大模型ERNIE-Tiny:轻量化技术的全面解读

百度开发者中心

人工智能 大模型

聊聊Swift中的宏

珲少

用户行为分析模型实践(四)—— 留存分析模型

vivo互联网技术

hive 数据分析 Clickhouse 留存分析模型

利用SEO服务器优化你的网站,获得更多曝光机会

一只扑棱蛾子

服务器

天谋科技专家解析自动化领域正在经历的 IT 行业的老路

Apache IoTDB

科幻成真,未来已来!“2024上海智能机器人展会”大赏前瞻

AIOTE智博会

机器人展 智能机器人展 机器人展览会

生态短讯 | Tapdata 与 TDengine 完成产品兼容性互认证,打造物联网实时数据生态

tapdata

垃圾车的新用途:车外装摄像头,结合AI检查市容

算AI

人工智能 创业 AI 创新

Open WebUI大模型对话平台:适配Ollama的实践与探索

百度开发者中心

人工智能 大模型

长连接网关技术专题(十一):揭秘腾讯公网TGW网关系统的技术架构演进

JackJiang

即时通讯;IM;网络编程

SSD 价格已经翻番,还要不要继续选择全闪?

XSKY星辰天合

EC 分布式全闪 三副本

国际标准图查询语言 GQL 正式发布,悦数图数据库业界首家原生支持

悦数图数据库

智能调度|AIRIOT智能车队管理解决方案

AIRIOT

物联网平台 智慧系统 智能车队管理

电商新宠:淘宝拍立淘API接口助力精准搜索商品信息

技术冰糖葫芦

API 接口 API 测试 pinduoduo API

系统logo及版权信息是否支持自定义配置 ?

开放签开源电子签章

版权保护 产品管理

多高的学历才能轻松找到工作?这个热点有点扯吧~

王中阳Go

Go 面试题 大厂面经 求职面试 面试行情

开放签电子签章第一季度总结和第二季度目标

开放签开源电子签章

开源 电子合同 电子签章

智能制造领域智能问答系统

悦数图数据库

华为云CodeArts IDE For Python 快速使用指南

华为云开发者联盟

云计算 华为云 华为云开发者联盟 华为云CodeArts 企业号2024年4月PK榜

容器化Java程序秒级弹性伸缩实践

HelloGeek

Java 容器 弹性伸缩

小小开发板承载万千创新可能,小熊派的云上奇遇记

华为云开发者联盟

物联网 华为云 华为云开发者联盟 先锋开发者云上说 企业号2024年4月PK榜

这大概是今年介绍云原生最清晰明了的文章!_服务革新_王碧波_InfoQ精选文章