【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

  • 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:231596

评论

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

案例研究之聊聊 QLExpress 源码 (三)

小诚信驿站

刘晓成 小诚信驿站 28天写作 QLExpress源码 聊聊源码

SpringCloud 从入门到精通 05--- 订单模块

Felix

音频特征提取方法和工具汇总

行者AI

音视频

分布式全链路灰度发布的探索与实践

阿里巴巴云原生

阿里云 微服务 运维 云原生 中间件

跪了!Alibaba内部出品贼火的Java面试手册,全面对标蚂蚁金服、头条、拼多多等

Java架构之路

Java 程序员 架构 面试 编程语言

花火交易所系统开发、雷达模式系统搭建开发

W13902449729

花火交易所系统开发 雷达模式系统搭建开发

侵犯商业秘密罪律师提醒区块链技术与商业秘密的安全保管

CECBC

时间戳

2020年度编程语言排行榜 C语言称霸,Java遭遇滑铁卢?

架构精进之路

编程语言 28天写作

第1周架构方法总结

Richard

UML 需求分析 概要设计 软件架构设计 详细设计

理财之我见

三石

理财 28天写作

助力ARM生态 —Dragonwell新增aarch64支持

阿里云基础软件团队

巧合?达摩院2021十大科技是十九世纪那场幻想的升级版?

Java架构师迁哥

ArgoCD + KubeVela:以开发者为中心的 GitOps

阿里巴巴云原生

阿里云 开源 容器 云原生 k8s

腾讯十年,总结出这份Java架构师知识路线,保你稳拿40k+

Java架构追梦

Java 面试 架构师成长笔记 金三银四 全栈知识点

赫拉利其人其书之我见(2)

石君

28天写作 简史 科技简史

波场链DAPP软件APP开发|波场链DAPP系统开发

系统开发

助力金三银四跳槽季,《Java面试突击版》第四版强势来袭

Java架构之路

Java 程序员 架构 面试 编程语言

python 输入输出

赵开忠

Python 28天写作

跨界

张老蔫

28天写作

分布式批量任务调度、自动化运维管理监控平台Taskctl

TASKCTL

kettle 分布式系统 海豚调度 自动化部署 ETL

区块链技术应用新阶段有五大趋势

CECBC

比特币 区块链 数字货币

LeetCode题解:236. 二叉树的最近公共祖先,递归,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

霸榜各个网站的阿里独有的高并发高并发手册:Netty、Redis、Zookeeper,看完惊呆了!

996小迁

redis zookeeper 架构 面试 Netty

数智化浪潮之中,传统企业如何抓住转型机遇?

京东科技开发者

DevOps

博弈论 - 海盗分金

石云升

博弈论 28天写作 海盗分金

不交“人脉”交朋友:新荣耀的底气与新机

脑极体

12月阿里蚂蚁金服四面(已拿offer)Java技术面经总结:项目+源码+jvm调优+MySQL

Java 学习 编程 程序员 面试

全面开创城市数字经济新时代

CECBC

数字经济

凭借这份Java超硬核面试 “备战” 手册!我刚面试完字节跳动、阿里、华为、小米等后端岗位

Java架构之路

Java 程序员 架构 面试 编程语言

DAPP智能合约交易系统开发、DAPP系统开发的详细解释

W13902449729

DAPP智能合约交易系统开发 DAPP系统开发

产品风控:短信验证码的风控策略

香芋味的猫丶

短信防刷 产品安全 短信验证码 短信防轰炸 短信防火墙

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