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架构
/ 云原生是利用云 /并发
/ 快速交付应用的一种方式 /app
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 中经济高效地调度大量容器》 主题演讲。
京东云2016年开始对集团外部提供服务以来,逐渐将集团内部多年积累的云原生开发和运维能力标准化为Kubernetes集群、微服务平台、Devops、函数服务、云安全、API网关等上百种标准的云服务,方便客户利用京东云服务的强大能力,快速、安全、高可靠地交付产品。
* 这次大会京东云展区将绕着“云原生”和“助力产业互联网“的主题,展现京东云在助力企业级信息应用技术环境上的成果。
* 欢迎你们届时光临京东云展区,在深刻了解京东云云原生的同时,还能够经过参加咱们的互动,得到京东云神秘礼包哦~
* 2019年 6月24日~26日,2019 KubeCon + CloudNativeCon + Open Source Summit 上海世博中心,京东云期待与您相见!
点击“云原生”了解更多信息
关注微信公众号"京东云开发者社区",
还有大量 实操文档可免费与领取