作者 | 元毅

导读:Knative 是基于 Kubernetes 的开源 Serverless 应用编排框架。阿里云 Knative 在社区 Knative 基础之上,与阿里云产品进行了深度的融合,给你带来最纯粹的容器化 Serverless 体验。

关于 Knative

Knative 是基于 Kubernetes 的开源 Serverless 应用编排框架。实际上 Knative 包含的不单单是 Workload,它还有 Kubernetes 原生的流程编排引擎和完备的事件系统。Knative 目标是基于 Kubernetes 提供应用 Serverless 工作负载编排的标准化。Knative 核心模块主要包括事件驱动框架 Eventing 和部署工作负载的 Serving。

1. Serverless 服务引擎 - Serving

Knative Serving 核心能力就是其简洁、高效的应用托管服务,这也是其支撑 Serverless 能力的基础。当然作为 Serverless Framework 就离不开按需分配资源的能力,Knative 可以根据应用的请求量在高峰时期自动扩容实例数,当请求量减少以后自动缩容实例数,可以非常自动化地帮助您节省成本。

Serving 还提供了流量管理能力和灵活的灰度发布能力。流量管理能力可以根据百分比切分流量,灰度发布能力可以根据流量百分比进行灰度。

1)简单的应用模型

提供了极简的应用模型 - Knative Service ,同时满足服务部署、服务访问以及灰度发布的能力。可以用下面的公式表述:Knative Service = 工作负载(Deployment)+ 服务访问( Service )+ 灰度流量( Ingress )。

应用模型如下图

  • Service:对 Serverless 应用模型的抽象,通过 Service 管理应用的生命周期;
  • Configuration:用于配置应用期望的信息。每次更新 Service 就会更新 Configuration;
  • Revision:Configuration 的每次更新都会创建一个快照,用来做版本管理;
  • Route:将请求路由到 Revision,并可以向不同的 Revision 转发不同比例的流量。

  • 应用托管

    • Kubernetes 是面向 IaaS 管理的抽象,通过 Kubernetes 直接部署应用需要维护的资源比较多;
    • 通过 Knative Service 一个资源就能定义应用的托管。
  • 流量管理

    • Knative 通过 Gateway 结果应用流量,然后可以对流量按百分比进行分割,这为这为弹性、灰度等基础能力做好了基础。

  • 灰度发布

    • 支持多版本管理,应用同时有多个版本在线提供服务很容易实现;
    • 不同版本可以设置不同的流量百分比,对灰度发布等功能实现起来很容易。

  • 弹性

    • Knative 帮助应用节省成本的核心能力是弹性,在流量增加的时候自动扩容,容,流量下降的时候自动缩容;
    • 每一个灰度的版本都有自己的弹性策略,并且弹性策略和分配到当前版本的流量流量是相关联的。Knative 会根据分配过来的流量多少进行扩容或者缩容的决策。

2)丰富的弹性策略


作为 Serverless 框架,其核心能力就是自动弹性,Knative 中提供了丰富的弹性策略:

  • 基于流量请求的自动扩缩容 - KPA
  • 基于 CPU、Memory 的自动扩缩容 - HPA
  • 支持定时 + HPA 的自动扩缩容策略
  • 事件网关,提供请求与 Pod 1 对 1 处理能力

2. Serverless 事件驱动框架 - Eventing


事件驱动是 Serverless 的标配,在 Knative 中同样提供了事件驱动框架 - Eventing。

Knative 的 Eventing 提供了完整的事件模型,可以很容易地接入各个外部系统的事件。事件接入以后通过 CloudEvent 标准在内部流转。

在 Knative Eventing 提供两种事件转发方式:

  • 事件源直接转发到服务;
  • 事件源转发到 Broker / Trigger ,然后通过过滤转发到服务。

对于在使用过程中究竟应该使用哪种方式进行转发呢?其实很简单,Broker / Trigger 模型是基于底层消息系统实现的,对于像 Github、Gitlab、K8s APIserver 这样的事件源来说,需要对消息事件进行缓冲处理、保证消息传输可靠性,那么我们建议通过事件源转发到 Broker / Trigger 进行事件流转。

对于事件源本身就是消息系统来说,像 MNS、Kafka、RocketMQ来说,使用事件源直接转发到服务更为高效。

讲到这里,就不得不提 Knative 的事件源。我把它比喻成事件驱动引擎,Knative Eventing 正是通过这些事件源驱动事件流转。

Knative 社区提供了丰富的事件源,如 Kafka、GitHub 等。此外还接入消息云产品事件源,如 MNS、RocketMQ 等。

阿里云 Knative


阿里云 Knative 在社区原生的 Knative 之上,与阿里云资源体系进行了全方位的整合,提供了更为丰富的能力以及云产品级别的支持。

1. 与阿里云产品融合

  • 丰富的消息云产品事件源:Kafka 、MNS 、RocketMQ
  • 服务访问:SLB
  • 存储:NAS 、云盘等
  • 可观测性:日志服务、ARMS
  • IaaS 资源:ECS 、ECI

2. 天然集成阿里云 K8s 生态

  • 支持阿里云标准版 Kubernetes,专有版 Kubernetes;
  • 支持阿里云 Serverless Kubernetes(ASK), 并且在 ASK 中将 Knative 管控组件全托管,为用户节省了资源以及运维成本。

一个例子


接下来以一个发送弹幕的示例来介绍一下如何玩转阿里云 Knative。先看一下效果:

架构示意图:

流程说明:

  • 用户通过弹幕 Web 服务发送弹幕到阿里云 Kafka;
  • Kafka Source 事件源监听到弹幕消息,然后发送到弹幕消息处理服务;
  • 弹幕消息处理服务接收到消息,然后自动弹性扩容实例进行消息处理,并将处理完成的消息发送给弹幕服务;
  • 最后弹幕通过 Web 服务界面展示给用户;

总结


最后我们总结一下阿里云 Knative 能给我们带来哪些能力:

  • 服务部署低门槛、易上手
  • Serverless 按需使用资源
  • 事件驱动与消息云产品无缝对接
  • 天然集成阿里云 K8s 生态
  • 与阿里云产品打通

希望这些能力能给你带来真正的按需使用,降低运维、资源使用成本的诉求,这也是 Serverless 思想理念所追求的目标。

春色满园关不住,带你体验阿里云 Knative相关推荐

  1. 2012年11月04日春色满园关不住freeeim源码哇

    摘要:2012年11月04日春色满园关不住freeeim源码哇,贴纸出来了,一天早晨我去上学,您回去吧,突然一条狗向我跑来,表姐又买了贴纸本,它以飞一般的速度窜到天空,我跑回去就行了,看见老师还在为我 ...

  2. 智能消息服务-数字短信使用FAQ简介: 数字短信是基于普通短信,通过一套编码技术实现的短信服务。它能把视频、音频、网页、GIF图、文字等多种表现形式通过多媒体短信形式触达用户。本文将带你了解阿里云通信

    简介: 数字短信是基于普通短信,通过一套编码技术实现的短信服务.它能把视频.音频.网页.GIF图.文字等多种表现形式通过多媒体短信形式触达用户.本文将带你了解阿里云通信数字短信产品的开通与使用. 一. ...

  3. 【云原生】 初体验阿里云Serverless应用引擎SAE(三),挂载配置文件使应用的配置和运行的镜像解耦

    目录 一.前言 二.SAE配置 1.创建配置项 2.配置SAE Nginx服务 效果 1.[云原生] 初体验阿里云Serverless应用引擎SAE(一),部署Nginx服务 2.[云原生] 初体验阿 ...

  4. 【云栖风向标】VOL.2:1分钟带你了解阿里云2017财报

    本期目录 阿里云2017财年营收达66.63亿元 连续8个季度超过100%增长 重要通知 | 阿里云安全团队发布WannaCry"一键解密和修复"工具 Google IO 2017 ...

  5. 抢先体验阿里云盘PC版,附空间福利码!

    之前小编给大家介绍过阿里云盘的app,很多小伙伴都第一时间去下载体验了一下,确实阿里云盘相对于现在很多人在用的某网盘,速度有了非常大的提升,无论是下载还是上传文件,都感觉非常爽.不过有个不足就是很多人 ...

  6. 玩转短视频?守护视频安全?AI智能提速?一分钱体验? 阿里云视频点播大招盘点...

    摘要: 前言 随着近几年在线视频市场规模不断扩大,内容不断创新,用户粘性增加,在线视频市场的商业价值不断增长,各垂直行业纷纷引入视频能力,一时之间,视频已经成为了众多移动APP和在线平台沉淀用户的有效 ...

  7. 阿里云自带的mysql_阿里云Centos使用自带mysql

    ---查看.设置服务(以firewalld服务为例) 从centos7开始使用systemctl来管理服务和程序,包括了service和chkconfig 启动一个服务:systemctl start ...

  8. 飞天加速计划初体验-阿里云开发者社区

    我是一名来自大二的学生,学习的是软件技术专业.通过老师推荐了解到"飞天加速计划·高校学生在家实践"活动,它给我提供了一个可以学习的大平台.我认为这个飞天加速计划对于我这样的大学生帮 ...

  9. 阿里云飞天计划体验-阿里云开发者社区

    我学会了在云服务器使用过程中发现的一些使用小技巧.首先是服务器的用户管理,很多的攻击和破解,首先是针对于系统的远程登录,毕竟拿到登录用户之后就能进入系统进行操作,所以首先要做的就是禁止root超级用户 ...

最新文章

  1. 2018中国计算机大会,阿里云分布式存储架构师:自研分布式文件系统服务
  2. 阿里云云盾吴翰清:未来将重点构建阿里云用户安全的大生态
  3. python处理u开头的字符串
  4. boost::hana::basic_type用法的测试程序
  5. windows系统登陆就注销如何解决,系统登陆就注销的解决办法
  6. 苹果Iphone/Ipad--L2T虚拟教程
  7. 【数据库系统】笛卡尔积与自然连接
  8. 标签页 html实现,htmlcssjs实现tab标签页示例代码.pdf
  9. ios html字符串 label,iOS UIlabel怎么加载html字符串 富文本的用法
  10. c 读取当前服务器的硬件参数,获取DHCP服务器的配置信息
  11. C/S和B/S模式的主要特点以及区别在那里?画出CGI工作原理图,具体描述CGI的主要流程和实现步骤。
  12. python使用os库临时改变环境变量
  13. centos7安装并使用supervisor管理服务队列
  14. 微信公众号二次开发可以做哪些功能?
  15. PyScripter中文乱码原因
  16. hp8080计算机无法usb启动,HP Compaq 8000 Elite 台式机​无法从U盘启动解决办法
  17. PubMed文献影响因子怎么显示保姆教程
  18. 中国联通和中国电信措手不及,中国移动主动发起5G流量价格战
  19. Python轻应用有哪些过人之处?
  20. 无法从商店下载Linux系统,解决win8应用商店不能安装软件并提示“此应用无法安装”的方法...

热门文章

  1. 009 自动打怪功能的设计和实现
  2. 进程线程002 等待链表 调度链表
  3. Python之format格式化输出
  4. Codeforces Beta Round #4 (Div. 2)【完结】
  5. FastDFS配置nginx插件访问图片
  6. python函数修饰器_Python函数装饰器指南
  7. SpringBoot接口幂等性实现的4种方案!
  8. Spring Cloud Alibaba到底坑不坑?反正是解放了部分使用的繁琐!
  9. java.lang.ClassCastException: [B cannot be cast to java.lang.String
  10. java中File类应用:遍历文件夹下所有文件