首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于 Kubernetes 集群的 Serverless 在 IoT 中的应用(1)简介

基于 Kubernetes 集群的 Serverless 在 IoT 中的应用(1)简介

Serverless 最初由公有云厂商提出,是时下比较受关注的一个概念。目前,有一些公有云厂商开始提供 Serverless                的服务。但我们知道,很多用户目前已经在数据中心内部部署了基于 Kubernetes 集群的 PaaS 平台。那么,对于这些用户,Serverless                如何在 Kubernetes 集群上落地呢?此外,针对现在很多制造行业 IoT 的需求,基于 Kubernetes 集群的 Serverless                如何支撑 IoT 呢?
带着这两个问题,请阅读本文。
无服务器架构 Serverless要想深入理解 Serverless 架构,我们需要从基础架构和应用架构两者的持续演进开始。
  • 基础架构:物理服务器、X86 虚拟化、容器。
  • 应用架构:单体应用、服务化、微服务。
基础架构的主线发展和应用架构是平行进行的。
应用架构的演进第一阶段:早期的应用,是单体架构。
单体应用(monolith application)将应用程序的所有功能都打包成一个独立的单元。针对于 Java,就通常是 JAR、WAR、EAR                归档格式。
随着应用功能越来越多,单体应用越来越大,产生很多问题,如:灵活性差、升级困难(牵一发而动全身)等。这个时候,SOA 的概念应运而生。
第二阶段:应用服务化
"面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。"(百度百科)
也就是说,通过面向服务的架构,我们让一个大的单体应用的各个功能组件之间实现松耦合。在谈到 SOA                的时候,不得不谈到一个技术:企业系统总线(ESB)。ESB 的主要功能是提供通信应用程序之间的连接 -                非常像路由器来控制数据。它通常用于企业应用程序集成(EAI)或面向服务的体系结构(SOA)原则。组件之间的交互和通信跨越总线,其具有与物理计算机总线类似的功能,以处理服务之间的数据传输或消息交换,而无需编写任何实际代码。
所以说,ESB 是 SOA 实现的一种模型,是 SOA 的一种技术实现。
第三阶段:应用的微服务化
Microservices 是一种软件开发技术,它是 SOA                体系结构样式的进阶模式,它将应用程序构建为松散耦合的服务集合。在微服务架构中,服务是细粒度的,协议是轻量级的。将应用程序分解为不同的较小服务的好处是提高了模块性。这使得应用程序更易于理解、开发、测试,并且更具弹性。它通过使小型自治团队能够独立开发、部署和扩展各自的服务来实现开发的并行化。它还允许通过连续重构来实现单个服务的体系结构。基于微服务的架构可实现持续交付和部署。
基础架构的演进相对于应用的演进,基础架构的演进更容易理解。接下来,我们将应用的演进与基础架构的演进一起来介绍。
第一阶段:应用运行在物理服务器上。彼时,应用是单体的、有状态的、应用各个组件之间是紧耦合的。应用的高可用通常需要基础架构加上操作系统来保证。如在                AIX 服务器上的 PowerHA、HPUX 上的 MC/SG 等。
第二阶段:应用运行在 X86 虚拟化服务器上。这时,应用通过 SOA                等技术,实现了功能组件之间的松耦合。但这个时候,由于 X86 虚拟化软件实现了操作系统和 X86                服务器的松耦合,并提供了多种保护虚拟的技术,很多运行在 X86 虚拟化上应用的高可用,不必再由操作系统级别的高可用软件来保护,通过如 vSphere                的 HA 技术解决计划外故障,通过 vMotion 解决计划内停机等。
第三阶段:                微服务和容器的兴起。对于微服务架构的应用,大多数微服务都基于容器架构来部署。这时,单个微服务出现故障,不会影响整个微服务体系对外提供服务(例如一个电商的评论组件出问题,并不会影响大家购物)。同时,单个微服务的高可用,现在通过容器                PaaS 平台,也都可以得到保证。
那么,什么是 Serverless 呢?
Serverless                实际上是一种云计算执行模型。在这种模型下,云计算提供商动态管理所有机器资源的分配。因此,其定价基于应用程序消耗的实际资源量,而不是预先购买的资源容量。
Serverless 又分为两类:Backend as a Service(BaaS)和 Function as a                Service(FaaS)。
BaaS                指的是:应用的大部分功能,依赖于第三方云中运行的应用程序或服务,来处理服务器端的状态或逻辑。而这些第三方的应用程序或服务构成了一个庞大的生态系统。如可通过云接入的数据库,服务等。
FaaS                指的是:服务器端逻辑仍由应用程序开发人员编写,但与传统体系架构不同的是,这些应用程序是在无状态计算容器中运行,并且是基于事件触发、短生命周期的(可能仅仅被调用一次),并由第三方完全管理。
所以 FaaS 是 Serverless 的高模式,FaaS 也是应用架构发展的第四个阶段(单体应用、面向服务、微服务之后)。
返回列表