追风少年刘全有个人页面-阿里云开发者社区

个人头像照片 追风少年刘全有 TA的个人档案
0
759

个人介绍

暂无个人介绍

擅长的技术

获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
  • 高分内容
  • 最新动态
  • 文章
  • 问答
正在加载, 请稍后...
暂无更多信息

2021年11月

  • 11.26 16:56:09
    回答了问题 2021-11-26 16:56:09

    函数计算如何保证安全性?

    在函数计算中,应用的安全性由用户和平台共同负责。函数计算系统管理服务器 等IT 基础设施,负责平台的安全,包括硬件、操作系统及编辑语言运行时安全补丁升级、网络安全等。用户负责应用在平台上的安全,包括代码管理、敏感数据安全访问、身份认证和授权等。

    每个函数都在独立、隔离的环境中被执行。函数计算提供与弹性计算相同的隔离强度。不同用户不会共享 VM,但同一个 VM 上能运行同一用户下的不同函数。函数计算会周期性地重置运行时环境,并自动更新操作系统及运行时依赖软件的安全补丁。函数计算隔离模型如下图所示。

    image.png

    在函数计算中,用户数据包括函数代码、函数配置、异步调用消息。函数代码和函数配置加密持久化存储在对象存储和表格存储中。异步调用消息临时存储在消息队列中。对象存储、表格存储和消息队列资源都由函数计算系统管理,用户不可见。函数计算系统通过 HTTPS 读写数据。

    通过共享责任的安全模型,函数计算大幅度地降低了应用安全的复杂度。作为一个新兴领域,函数计算应用安全处于高速发展的时期。业界在系统可观察性、运行时 风险注入测试、应用安全分析等领域涌现出大量新兴的工具和最佳实践,帮助用户以更低的代价实现更好的安全性。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:51:27
    回答了问题 2021-11-26 16:51:27

    函数计算的负载均衡和流控是什么?

    函数调用请求到达前端服务器(Frontend Server)后,首先向资源调度服务申请函数实例,再将请求发送给相关的函数实例处理。因此资源调度服务是系统的关键链路。为了支撑每秒近百万次的资源调度请求,我们将资源调度服务的负载进行分片(Partition),横向扩展到多台机器上,避免单点瓶颈。

    分片机制包含两层信息的映射:首先将指定函数的资源调度请求映射到对应的分片上;然后将分片调度请求映射到对应的分片服务器(Partition Server)上。函数实例服务负载均衡架构如下图所示,前端服务器首先确定请求所属的分片,然后通过分片映射表找到对应的分片服务器(函数实例调度节点),再将请求发送给该节点处理。

    image.png

    分片管理器(Partition Manager)将负载拆分为 N 个分片,并为每个分片指定对应的分片服务器,将分片的位置信息存储在分片映射表中(Partition Map Table)。分片服务器通过周期性的心跳向分片管理器汇报分片和节点的负载信息,分片管理器通过以下三种分片操作实现负载均衡。

    分片迁移(Partition Move),将分片迁移到另一台分片服务器。当分片管理器发现某一台服务器的负载较高时,可通过分片迁移来平衡负载。

    分片分裂(Partition Split),将负载很高的分片分裂为多个分片。通常一个分片上主要的请求来自少数被密集调用的函数。当函数负载增加超过一台分片服务器的处理能力时,分片管理器将相关分片分裂为多个分片,并指派给不同的分片服务器处理。

    分片合并(Partition Merge),将多个低负载的分片合并为一个分片。

    分片管理器监控整个集群的分片和服务器负载,通过分片的迁移、分裂、合并三种操作实现集群处理能力的横向扩展和负载均衡。集群不但可以支撑近乎无限的函数,而且单个函数的处理能力没有上限。

    在多租户环境下,流控是保证服务质量的关键。对用户而言,当函数的调用量超过预期值时,例如函数逻辑错误产生大量非预期调用,系统应当及时流控,确保用户的费用可控。函数计算允许用户配置最大函数运行实例数来限制应用负载。当应用负载上升、系统在扩容时,如果函数实例数达到配额上限,那么将停止扩容并返回流控错误。

    除了用户层面的流控,当函数的负载动态变化导致节点过载时,系统也应当及时流控,避免用户间互相影响。例如在一个分片上,多个用户函数负载增加, 导致分片服务器过载。此时即使每个用户都未用满配额,系统也需要流控。在该场景下的流控,不但要及时,更要做到公平。调用量越大的函数,请求被流控的概率应当越高。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:50:28
    回答了问题 2021-11-26 16:50:28

    函数计算的计算资源弹性调度是什么?

    在函数计算中,应用所需的计算资源由平台负责管理。平台要能够识别应用特征,在负载快速上升时,及时扩容计算资源,保证应用性能稳定 ;在负载下降时, 及时缩容计算资源,加快资源在不同账户 / 函数间的流转,提高资源利用率。因此更实时、更主动、更智能的弹性伸缩是函数计算系统具备良好用户体验的关键。函数计算的资源伸缩过程是一个指标收集、在线决策、离线分析、决策优化的闭环。

    系统收集多个维度的指标,既有节点维度的信息,包括 CPU、内存、网络资源 使用率、系统负载等;也有应用维度的信息,包括请求速率、函数实例启动延时、函数执行延时等。这些指标按照用户、函数、不同大小的时间窗口等被聚合,最终作为决策依据,被在线伸缩和流控算法使用。

    随着平台规模的扩大,记录和聚合海量函数的信息在工程实现上面临较大的挑战。实践中,信息的处理代价和方式应当被仔细考量,以避免影响系统性能。比如, 统计 95 分位请求延时的成本较高,这类信息一般只在离线算法中使用,并通过统计算法计算近似的 95 分位信息,降低计算复杂度。

    用户函数的调用通常是不均匀的,例如 1 秒内发生了 1000 次调用的函数,可能所有的调用请求都是在前 100 毫秒内发生的。如果所有请求都立即被响应,无疑需要在短时间内扩容更多的函数实例。待突发请求过后,很多函数实例又处于闲置状态。这样不但增加了系统压力,也降低了资源使用率。函数计算系统通过队列平滑负载毛刺的压力。函数调用请求首先在队列中排队,只有在有可用的函数实例后才被处理。系统按照如下的步骤计算所需的函数实例数。

    (1)根据函数负载特点确定聚合请求数据的时间窗口,计算请求入队速率。对于 被密集调用的函数,数据聚合时间窗口不能太大,否则无法识别快速变化的负载,影响性能。对于被稀疏调用的函数,太小的聚合时间窗口可能聚合不到请求,没有意义。

    (2)根据入队速率、队列长度、函数实例启动时长、实例生命周期、实例资源利用率等指标,计算期望的请求出队速率。

    (3)根据出队速率及函数的执行时间,计算期望的函数实例数。

    (4)对比已有实例数、正在启动的实例数和期望实例数,创建或销毁实例。

    在创建新实例时,系统需要决定如何将函数实例放置在下层计算节点上。放置算法应当满足多方面的要求,如下图所示。

    image.png

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:48:15
    回答了问题 2021-11-26 16:48:15

    函数计算系统架构是怎样的?

    函数计算采用微服务架构,如下图所示,主要由以下几部分组成。

    image.png

    • 账户管理服务。负责新账户的集群分配,以及从集群水位管理、用户隔离角度出发,在不同集群间迁移账户。

    • 前端服务。提供函数计算对外的 API,验证请求的身份,将请求发送给对应的函数实例,收到结果后将其返回给用户。

    • 函数实例调度服务。函数实例是执行函数请求的容器。实例调度服务追踪函数 / 用户的负载变化,实时伸缩函数实例,并在实例数超过配额时进行流控。

    • 计算资源。对底层计算资源进行抽象,能够对接多种资源池,包括容器、虚拟机或者物理机。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:46:54
    回答了问题 2021-11-26 16:46:54

    设计函数计算系统时需要注意什么?

    在设计函数计算系统时,根据内外部用户的场景和需求要实现以下目标。

    • 可靠性。系统在面对进程、机器、网络、可用区等不同程度的故障时,要有 自愈能力。在应用负载快速变化时,系统应当能及时准备好所需计算资源, 保障稳定的服务质量。

    • 多租户资源共享和隔离。由于用户按实际使用的资源付费,所以计算资源要被不同用户的不同应用共享、降低系统成本。系统要具备出色的隔离能力, 避免应用相互干扰。

    • 安全性。函数计算的定位是通用计算服务,要能执行任意用户代码,因此安全是不可逾越的底线。系统应当从权限管理、网络安全、数据安全、运行时安全等各个维度全面保障应用的安全性。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:45:37
    回答了问题 2021-11-26 16:45:37

    函数计算有哪些典型的应用场景?

    函数计算能够弹性可靠地执行用户代码。通过和云端大量服务以事件驱动的方式连接,用户可以快速构建弹性高可用的云原生应用。典型应用场景包括以下几种。

    数据大规模并行处理

    通过函数计算和对象存储的集成,用户既可以通过事件增量处理对象存储上的新增数据,也可以创建大量函数实例并行处理存量数据,如下图所示。

    image.png

    数据实时流式处理

    通过函数计算和日志服务、消息队列等管道类云服务的集成,用户能够使用函数实时流式处理日志、消息或者物联网等场景下的数据,如下图所示。

    image.png

    移动和 Web 应用后端

    函数计算提供 HTTP 触发器,用户用函数实现 HTTP/HTTPS 请求的处理逻辑, 实现弹性高可用的应用后端服务,如下图所示。

    image.png

    开发运维自动化

    通过定时触发器,用户能够用函数快速完成定时任务,无须管理执行任务的底层服务器。通过云监控触发器,用户可以接收 ECS 重启 / 宕机、OSS 对象存储流控等 IaaS 层服务的运维事件,并自动触发函数处理。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:44:18
    回答了问题 2021-11-26 16:44:18

    Serverless 和Serverful 有哪些差异?

    如下图所示:

    image.png

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:43:07
    回答了问题 2021-11-26 16:43:07

    函数计算具备哪些特点?

    函数计算具备以下特点。

    事件驱动

    函数计算通过事件驱动的方式和对象存储、日志服务、消息队列、API 网关等云服务无缝集成,用户只需要编写少量代码即可串联多个云服务,完成复杂的业务逻辑。例如用户上传图片到对象存储,就能够自动产生事件触发函数进行相应的处理。当前函数计算已经被大量云服务集成。典型的应用场景包括利用函数计算大规模并行处理对象存储数据,或者流式的处理消息队列、日志、数据库的增量数据。

    丰富的计量模式,次秒级计量

    函数计算提供了预付费(包年包月)和后付费(按量)两种模式。和其他类型的计算服务不同,函数计算的后付费真正做到了让用户不为任何闲置资源付费,即只有实际处理了用户的请求,才会计费;如果没有请求,则没有费用。针对动态变化的负载,用户能够无缝地结合两种计量模式,根据用户的实际使用情况来看,通常能有 10% - 90% 的成本降低。

    实时弹性伸缩

    函数计算根据用户的负载实时伸缩,管理底层计算资源。全自动的资源管理方式

    不但减小了用户水位预估,资源扩缩容的复杂度,也提高了资源利用效率。

    卓越的工程效率

    在服务器等IT 基础设施由函数计算平台管理后,用户能够专注于应用层逻辑的编码、测试和运维。在实践中,在函数计算平台上采用微服务架构构建应用,用户服务的版本发布节奏通常从数月一次提升到数天甚至数小时一次。表3-3 对比了 Serverless 和Serverful 的差异。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:42:21
    回答了问题 2021-11-26 16:42:21

    什么是Virtual Kubelet 技术?

    Virtual Kubelet 最初是由微软 Azure 发起的开源项目,目标是让公共云的弹性容器实例类产品能与 Kubernetes 更好地集成,实现 Kubernetes 的 Serverless 能力。在实现上, Virtual Kubelet 提供了一种机制,可以与多家不同的供应商集成,如 Azure 的 ACI、AWS 的 fargate、华为的 CCI。 Virutal Kubelet 启动时会伪装成一个Kubelet 计算节点,即虚拟节点(Virtual Node),向 Kubernetes API Server 发起注册,并持续监听 Pod 变化事件。当Kubernetes 将Pod 调度到虚拟节点上时,Virtual Kubelet 会调用provider 的API 接口,将创建请求动态转发给底层的provider 的API 接口。在阿里云的Serverless Kubernetes 中, Virtual Kubelet 是Serverless Kubernetes 和 ECI 的连接器。如下图所示。

    image.png

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:41:19
    回答了问题 2021-11-26 16:41:19

    云上多租户隔离方法有哪些?

    众所周知,虽然内核的namespace 和cgroup 技术有很强的隔离能力,但是内核是一个很大很复杂的系统,因此基于独立内核的容器技术(如 Docker)是不够安全的,很难从根本上彻底保证云上多租户安全,进而需要更好的隔离。业界主要有四种方法来实现这种隔离,如下图所示。

    image.png

    第一种方法是最简单和直接的,就是把容器放在虚拟机里运行,这种方式不需要对软件栈做改动,只是让同一个用户的容器运行在自己的虚拟机里,但这样除了有额外的开销和不够高效,还有两层的维护复杂度。

    第二种方法是MicroVM,仍然使用虚拟化技术来实现安全隔离,但是它的出发点是针对容器场景实现轻量化的虚拟机,并且实现运行时无缝对接容器生态,在保证兼容性的前提下尽量降低运行时和维护开销,并保证原生容器的用户体验。Kata Containers 就是一个MicroVM 方案。首先,对应用来说, 这是一个兼容runC 的容器运行时引擎,可以被Kubernetes 通过containerd/ CRI-O 调用,可以直接运行任何Docker 镜像或OCI 镜像。但与runC 不同的是,它使用了硬件虚拟化技术,直接面对用户应用的不再是宿主机的独立内核,而是一个装在轻量级虚拟机里的内核,即使有未知的安全漏洞导致这个内核被攻击,攻击者仍然无法轻易突破虚拟化技术构建的沙箱。Kata 的思路很不错,但是目前还在迭代完善中。

    第三种方法基于进程虚拟化,使用一个特定的内核来提供Linux ABI,直接虚拟化进程的运行环境。Google 的gVisor 就是这样的进程虚拟化方案,实现了一个新的内核并努力去补齐和兼容Linux 的系统调用。这种方法的问题是很难做到Linux 的全兼容,无法支持部分应用。

    第四种方法基于Unikernel/LibOS, 让应用带上自己的内核,好处在于简化的LibOS 有更小的开销和攻击面,但是妨碍它被更广泛应用的问题在于它往往需要修改应用,只适合比较特定的应用场景。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:40:24
    回答了问题 2021-11-26 16:40:24

    如何减少ECI 启动时从远端的容器镜像仓库拉取镜像的时间?

    为了减少拉取时间,业界主要有以下三种优化方法。

    第一种方法是在所有的计算节点上都缓存基础镜像层,比如centos、ubuntu 等, 如果本地存储资源足够,还可以缓存部分常用的业务镜像。

    第二种方法是采取P2P 传输的方式,从多台物理机并行拉取业务镜像的不同层,已缓存该业务镜像的物理机越多,并行拉取镜像的效率越高。

    第三种方法是把系统盘和数据盘保存至分布式存储系统,借助存储系统的快照技术,在启动容器时,将快照克隆出的云盘动态挂载到容器中去。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:39:27
    回答了问题 2021-11-26 16:39:27

    ECI启动速度有哪些重要性?

    ECI 的弹性能力在很大程度上取决于ECI 并发创建时的启动速度,因此优化ECI实例的并发启动速度非常关键。

    这里以Nginx 容器的端到端的创建时间(如下图所示)为例,除去实例启动占到的7% 的时间,资源调度的时间占到了43%,而镜像拉取的时间占到了50%。

    image.png

    容器在每次启动时,都会检查本地是否有相应的镜像,如果不存在,则会从远端的容器镜像仓库拉取镜像。在阿里云上的容器实例是运行在阿里云的安全沙箱内的,实例每次重建时都会销毁整个安全沙箱,其中也包括了已缓存到本地的镜像, 这就导致容器重建后依然会拉取镜像。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:38:49
    回答了问题 2021-11-26 16:38:49

    ECI 和ECS 的区别是什么?

    ECI 和ECS 最大的不同就在于ECI 是按量秒级计费的,而不是ECS 常用的包年包月形式。ECI 只会收取用户从开始拉取业务镜像,到实例状态从Running 变成Succeed 或者Failed 之间的费用。ECI 与ECS 如下图所示,用一个2C4G 的实例来说明,如果每天业务运行的时间正好是14 个小时的话,那么ECI 按量付费的成本和ECS 包月的成本是持平的。如果业务每天运行的时间小于14 个小时,那么按量的ECI 成本会比包月的ECS 更低。

    除了帮助用户降低显性的使用成本,ECI 还能帮助用户降低隐性成本。Serverless 容器不向用户收取机器的资源成本,而直接按应用消耗的资源来收费。

    Serverless Kubernetes 提供了开箱即用的容器服务,大大降低了环境部署成本和时间, 同时阿里云在官网上提供了大量的帮助文档和最佳实践,大大降低了开发人员的使用门槛。

    image.png

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:37:50
    回答了问题 2021-11-26 16:37:50

    ECI 实例支持哪些资源申请和计费模式?

    ECI 实例能够支持两种资源申请和计费模式。

    模式一:根据 CPU/ 内存进行资源申请和计费。ECI 会利用 ECS 多个规格族的库存,保障资源的交付。例如:2C4G,会尝试使用 ECS 的 ecs.c6.large、ecs.sn1ne. large、ecs.se1ne.large 等规格进行资源的交付。

    模式二:根据 ECS 规格进行资源申请和计费,价格参考各地域 ECS 按量价格, 用户可以根据需要指定 ECS 规格族来使用各规格族的指定能力,例如:指定使用 ecs. sn1ne 规格族,来使用网络增强能力。网络的使用费用主要包括VPC 网络中的负载均衡设备、弹性公网IP、privateZone 等费用;存储的使用费用主要包括NAS、OSS、EBS 快照等的使用费用。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:37:19
    回答了问题 2021-11-26 16:37:19

    ECI 的成本包含哪些?

    ECI 的成本主要包含ECI 实例、网络和存储的使用费用。

    踩0 评论0
  • 11.26 16:37:02
    回答了问题 2021-11-26 16:37:02

    弹性容器实例ECI 技术实现是什么样的?

    弹性容器实例ECI 提供面向云原生的免运维容器组(Pod)资源交付。用户只需要提供容器镜像,指定ECI 实例规格,即可运行容器实例,无须关心容器运行在哪台物理服务器上。

    作为弹性计算的“一等公民”,ECI 充分发挥底层的计算、网络、存储能力,不仅在资源上与ECS 复用整个阿里云弹性计算资源池,还复用了阿里云网络的基础设施,ECI 和ECS 可以在同一个VPC 内,中间没有虚拟网关的转发开销。ECI 也复用了阿里云存储的基础设施,基于ESSD 的系统盘和数据盘最高可以支持100 万的随机读写IOPS,稳定性和读写带宽都有充分的保障。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:36:26
    回答了问题 2021-11-26 16:36:26

    Kubernetes实现组件有哪些?

    与社区开源的Kubernetes 相比,阿里云Kubernetes 服务除了提供便捷的安装、升级及轻松地实现 Kubernetes 集群的扩容和缩容等管理功能,还提供了更为强大的功能,其相关实现组件如下图所示。

    image.png

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:36:02
    回答了问题 2021-11-26 16:36:02

    容器服务大批量的在线数据处理任务的场景是什么样的?

    根据业务数据处理需求,能够短时间快速创建大量处理节点,满足业务的大数据及 AI 在线处理诉求。

    • 混合调度:提供 CPU/GPU、虚拟机 / 神龙的混合调度与部署能力。

    • 灵活的任务规格:提供细粒度实例规格,满足上层应用和服务对计算能力的 包装。

    • 按需付费:容器实例根据资源规格及使用时长付费。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:34:15
    回答了问题 2021-11-26 16:34:15

    容器服务根据业务流量自动扩容的场景是什么样的?

    根据业务流量自动对业务进行扩容,不需要人工干预, 避免流量激增扩容不及时导致系统故障,以及平时大量闲置资源造成的浪费。

    • 简单可控:便捷获取计算资源,兼容 Kubernetes。

    • 快速弹性:秒级启动和弹性伸缩。

    • 按需使用:容器实例按需创建释放,不需要预先准备底层资源。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 11.26 16:33:29
    回答了问题 2021-11-26 16:33:29

    容器服务混合云架构下的统一管理的场景是什么样的?

    在容器服务控制台上同时管理云上和云下资源,无须在多种云管理控制台中反复切换。基于容器基础设施无关的特性,使用同一套镜像和编排同时在云上和云下部署应用。

    • 在云上伸缩应用:业务高峰期,在云端快速扩容,把一些业务流量引到云端。

    • 云上容灾:业务系统同时部署到云上和云下,云下提供服务,云上容灾。

    • 云下开发测试:云下开发测试后的应用无缝发布到云上。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
  • 回答了问题 2021-11-26

    函数计算如何保证安全性?

    在函数计算中,应用的安全性由用户和平台共同负责。函数计算系统管理服务器 等IT 基础设施,负责平台的安全,包括硬件、操作系统及编辑语言运行时安全补丁升级、网络安全等。用户负责应用在平台上的安全,包括代码管理、敏感数据安全访问、身份认证和授权等。

    每个函数都在独立、隔离的环境中被执行。函数计算提供与弹性计算相同的隔离强度。不同用户不会共享 VM,但同一个 VM 上能运行同一用户下的不同函数。函数计算会周期性地重置运行时环境,并自动更新操作系统及运行时依赖软件的安全补丁。函数计算隔离模型如下图所示。

    image.png

    在函数计算中,用户数据包括函数代码、函数配置、异步调用消息。函数代码和函数配置加密持久化存储在对象存储和表格存储中。异步调用消息临时存储在消息队列中。对象存储、表格存储和消息队列资源都由函数计算系统管理,用户不可见。函数计算系统通过 HTTPS 读写数据。

    通过共享责任的安全模型,函数计算大幅度地降低了应用安全的复杂度。作为一个新兴领域,函数计算应用安全处于高速发展的时期。业界在系统可观察性、运行时 风险注入测试、应用安全分析等领域涌现出大量新兴的工具和最佳实践,帮助用户以更低的代价实现更好的安全性。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    函数计算的负载均衡和流控是什么?

    函数调用请求到达前端服务器(Frontend Server)后,首先向资源调度服务申请函数实例,再将请求发送给相关的函数实例处理。因此资源调度服务是系统的关键链路。为了支撑每秒近百万次的资源调度请求,我们将资源调度服务的负载进行分片(Partition),横向扩展到多台机器上,避免单点瓶颈。

    分片机制包含两层信息的映射:首先将指定函数的资源调度请求映射到对应的分片上;然后将分片调度请求映射到对应的分片服务器(Partition Server)上。函数实例服务负载均衡架构如下图所示,前端服务器首先确定请求所属的分片,然后通过分片映射表找到对应的分片服务器(函数实例调度节点),再将请求发送给该节点处理。

    image.png

    分片管理器(Partition Manager)将负载拆分为 N 个分片,并为每个分片指定对应的分片服务器,将分片的位置信息存储在分片映射表中(Partition Map Table)。分片服务器通过周期性的心跳向分片管理器汇报分片和节点的负载信息,分片管理器通过以下三种分片操作实现负载均衡。

    分片迁移(Partition Move),将分片迁移到另一台分片服务器。当分片管理器发现某一台服务器的负载较高时,可通过分片迁移来平衡负载。

    分片分裂(Partition Split),将负载很高的分片分裂为多个分片。通常一个分片上主要的请求来自少数被密集调用的函数。当函数负载增加超过一台分片服务器的处理能力时,分片管理器将相关分片分裂为多个分片,并指派给不同的分片服务器处理。

    分片合并(Partition Merge),将多个低负载的分片合并为一个分片。

    分片管理器监控整个集群的分片和服务器负载,通过分片的迁移、分裂、合并三种操作实现集群处理能力的横向扩展和负载均衡。集群不但可以支撑近乎无限的函数,而且单个函数的处理能力没有上限。

    在多租户环境下,流控是保证服务质量的关键。对用户而言,当函数的调用量超过预期值时,例如函数逻辑错误产生大量非预期调用,系统应当及时流控,确保用户的费用可控。函数计算允许用户配置最大函数运行实例数来限制应用负载。当应用负载上升、系统在扩容时,如果函数实例数达到配额上限,那么将停止扩容并返回流控错误。

    除了用户层面的流控,当函数的负载动态变化导致节点过载时,系统也应当及时流控,避免用户间互相影响。例如在一个分片上,多个用户函数负载增加, 导致分片服务器过载。此时即使每个用户都未用满配额,系统也需要流控。在该场景下的流控,不但要及时,更要做到公平。调用量越大的函数,请求被流控的概率应当越高。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    函数计算的计算资源弹性调度是什么?

    在函数计算中,应用所需的计算资源由平台负责管理。平台要能够识别应用特征,在负载快速上升时,及时扩容计算资源,保证应用性能稳定 ;在负载下降时, 及时缩容计算资源,加快资源在不同账户 / 函数间的流转,提高资源利用率。因此更实时、更主动、更智能的弹性伸缩是函数计算系统具备良好用户体验的关键。函数计算的资源伸缩过程是一个指标收集、在线决策、离线分析、决策优化的闭环。

    系统收集多个维度的指标,既有节点维度的信息,包括 CPU、内存、网络资源 使用率、系统负载等;也有应用维度的信息,包括请求速率、函数实例启动延时、函数执行延时等。这些指标按照用户、函数、不同大小的时间窗口等被聚合,最终作为决策依据,被在线伸缩和流控算法使用。

    随着平台规模的扩大,记录和聚合海量函数的信息在工程实现上面临较大的挑战。实践中,信息的处理代价和方式应当被仔细考量,以避免影响系统性能。比如, 统计 95 分位请求延时的成本较高,这类信息一般只在离线算法中使用,并通过统计算法计算近似的 95 分位信息,降低计算复杂度。

    用户函数的调用通常是不均匀的,例如 1 秒内发生了 1000 次调用的函数,可能所有的调用请求都是在前 100 毫秒内发生的。如果所有请求都立即被响应,无疑需要在短时间内扩容更多的函数实例。待突发请求过后,很多函数实例又处于闲置状态。这样不但增加了系统压力,也降低了资源使用率。函数计算系统通过队列平滑负载毛刺的压力。函数调用请求首先在队列中排队,只有在有可用的函数实例后才被处理。系统按照如下的步骤计算所需的函数实例数。

    (1)根据函数负载特点确定聚合请求数据的时间窗口,计算请求入队速率。对于 被密集调用的函数,数据聚合时间窗口不能太大,否则无法识别快速变化的负载,影响性能。对于被稀疏调用的函数,太小的聚合时间窗口可能聚合不到请求,没有意义。

    (2)根据入队速率、队列长度、函数实例启动时长、实例生命周期、实例资源利用率等指标,计算期望的请求出队速率。

    (3)根据出队速率及函数的执行时间,计算期望的函数实例数。

    (4)对比已有实例数、正在启动的实例数和期望实例数,创建或销毁实例。

    在创建新实例时,系统需要决定如何将函数实例放置在下层计算节点上。放置算法应当满足多方面的要求,如下图所示。

    image.png

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    函数计算系统架构是怎样的?

    函数计算采用微服务架构,如下图所示,主要由以下几部分组成。

    image.png

    • 账户管理服务。负责新账户的集群分配,以及从集群水位管理、用户隔离角度出发,在不同集群间迁移账户。

    • 前端服务。提供函数计算对外的 API,验证请求的身份,将请求发送给对应的函数实例,收到结果后将其返回给用户。

    • 函数实例调度服务。函数实例是执行函数请求的容器。实例调度服务追踪函数 / 用户的负载变化,实时伸缩函数实例,并在实例数超过配额时进行流控。

    • 计算资源。对底层计算资源进行抽象,能够对接多种资源池,包括容器、虚拟机或者物理机。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    设计函数计算系统时需要注意什么?

    在设计函数计算系统时,根据内外部用户的场景和需求要实现以下目标。

    • 可靠性。系统在面对进程、机器、网络、可用区等不同程度的故障时,要有 自愈能力。在应用负载快速变化时,系统应当能及时准备好所需计算资源, 保障稳定的服务质量。

    • 多租户资源共享和隔离。由于用户按实际使用的资源付费,所以计算资源要被不同用户的不同应用共享、降低系统成本。系统要具备出色的隔离能力, 避免应用相互干扰。

    • 安全性。函数计算的定位是通用计算服务,要能执行任意用户代码,因此安全是不可逾越的底线。系统应当从权限管理、网络安全、数据安全、运行时安全等各个维度全面保障应用的安全性。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    函数计算有哪些典型的应用场景?

    函数计算能够弹性可靠地执行用户代码。通过和云端大量服务以事件驱动的方式连接,用户可以快速构建弹性高可用的云原生应用。典型应用场景包括以下几种。

    数据大规模并行处理

    通过函数计算和对象存储的集成,用户既可以通过事件增量处理对象存储上的新增数据,也可以创建大量函数实例并行处理存量数据,如下图所示。

    image.png

    数据实时流式处理

    通过函数计算和日志服务、消息队列等管道类云服务的集成,用户能够使用函数实时流式处理日志、消息或者物联网等场景下的数据,如下图所示。

    image.png

    移动和 Web 应用后端

    函数计算提供 HTTP 触发器,用户用函数实现 HTTP/HTTPS 请求的处理逻辑, 实现弹性高可用的应用后端服务,如下图所示。

    image.png

    开发运维自动化

    通过定时触发器,用户能够用函数快速完成定时任务,无须管理执行任务的底层服务器。通过云监控触发器,用户可以接收 ECS 重启 / 宕机、OSS 对象存储流控等 IaaS 层服务的运维事件,并自动触发函数处理。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    Serverless 和Serverful 有哪些差异?

    如下图所示:

    image.png

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    函数计算具备哪些特点?

    函数计算具备以下特点。

    事件驱动

    函数计算通过事件驱动的方式和对象存储、日志服务、消息队列、API 网关等云服务无缝集成,用户只需要编写少量代码即可串联多个云服务,完成复杂的业务逻辑。例如用户上传图片到对象存储,就能够自动产生事件触发函数进行相应的处理。当前函数计算已经被大量云服务集成。典型的应用场景包括利用函数计算大规模并行处理对象存储数据,或者流式的处理消息队列、日志、数据库的增量数据。

    丰富的计量模式,次秒级计量

    函数计算提供了预付费(包年包月)和后付费(按量)两种模式。和其他类型的计算服务不同,函数计算的后付费真正做到了让用户不为任何闲置资源付费,即只有实际处理了用户的请求,才会计费;如果没有请求,则没有费用。针对动态变化的负载,用户能够无缝地结合两种计量模式,根据用户的实际使用情况来看,通常能有 10% - 90% 的成本降低。

    实时弹性伸缩

    函数计算根据用户的负载实时伸缩,管理底层计算资源。全自动的资源管理方式

    不但减小了用户水位预估,资源扩缩容的复杂度,也提高了资源利用效率。

    卓越的工程效率

    在服务器等IT 基础设施由函数计算平台管理后,用户能够专注于应用层逻辑的编码、测试和运维。在实践中,在函数计算平台上采用微服务架构构建应用,用户服务的版本发布节奏通常从数月一次提升到数天甚至数小时一次。表3-3 对比了 Serverless 和Serverful 的差异。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    什么是Virtual Kubelet 技术?

    Virtual Kubelet 最初是由微软 Azure 发起的开源项目,目标是让公共云的弹性容器实例类产品能与 Kubernetes 更好地集成,实现 Kubernetes 的 Serverless 能力。在实现上, Virtual Kubelet 提供了一种机制,可以与多家不同的供应商集成,如 Azure 的 ACI、AWS 的 fargate、华为的 CCI。 Virutal Kubelet 启动时会伪装成一个Kubelet 计算节点,即虚拟节点(Virtual Node),向 Kubernetes API Server 发起注册,并持续监听 Pod 变化事件。当Kubernetes 将Pod 调度到虚拟节点上时,Virtual Kubelet 会调用provider 的API 接口,将创建请求动态转发给底层的provider 的API 接口。在阿里云的Serverless Kubernetes 中, Virtual Kubelet 是Serverless Kubernetes 和 ECI 的连接器。如下图所示。

    image.png

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    云上多租户隔离方法有哪些?

    众所周知,虽然内核的namespace 和cgroup 技术有很强的隔离能力,但是内核是一个很大很复杂的系统,因此基于独立内核的容器技术(如 Docker)是不够安全的,很难从根本上彻底保证云上多租户安全,进而需要更好的隔离。业界主要有四种方法来实现这种隔离,如下图所示。

    image.png

    第一种方法是最简单和直接的,就是把容器放在虚拟机里运行,这种方式不需要对软件栈做改动,只是让同一个用户的容器运行在自己的虚拟机里,但这样除了有额外的开销和不够高效,还有两层的维护复杂度。

    第二种方法是MicroVM,仍然使用虚拟化技术来实现安全隔离,但是它的出发点是针对容器场景实现轻量化的虚拟机,并且实现运行时无缝对接容器生态,在保证兼容性的前提下尽量降低运行时和维护开销,并保证原生容器的用户体验。Kata Containers 就是一个MicroVM 方案。首先,对应用来说, 这是一个兼容runC 的容器运行时引擎,可以被Kubernetes 通过containerd/ CRI-O 调用,可以直接运行任何Docker 镜像或OCI 镜像。但与runC 不同的是,它使用了硬件虚拟化技术,直接面对用户应用的不再是宿主机的独立内核,而是一个装在轻量级虚拟机里的内核,即使有未知的安全漏洞导致这个内核被攻击,攻击者仍然无法轻易突破虚拟化技术构建的沙箱。Kata 的思路很不错,但是目前还在迭代完善中。

    第三种方法基于进程虚拟化,使用一个特定的内核来提供Linux ABI,直接虚拟化进程的运行环境。Google 的gVisor 就是这样的进程虚拟化方案,实现了一个新的内核并努力去补齐和兼容Linux 的系统调用。这种方法的问题是很难做到Linux 的全兼容,无法支持部分应用。

    第四种方法基于Unikernel/LibOS, 让应用带上自己的内核,好处在于简化的LibOS 有更小的开销和攻击面,但是妨碍它被更广泛应用的问题在于它往往需要修改应用,只适合比较特定的应用场景。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    如何减少ECI 启动时从远端的容器镜像仓库拉取镜像的时间?

    为了减少拉取时间,业界主要有以下三种优化方法。

    第一种方法是在所有的计算节点上都缓存基础镜像层,比如centos、ubuntu 等, 如果本地存储资源足够,还可以缓存部分常用的业务镜像。

    第二种方法是采取P2P 传输的方式,从多台物理机并行拉取业务镜像的不同层,已缓存该业务镜像的物理机越多,并行拉取镜像的效率越高。

    第三种方法是把系统盘和数据盘保存至分布式存储系统,借助存储系统的快照技术,在启动容器时,将快照克隆出的云盘动态挂载到容器中去。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    ECI启动速度有哪些重要性?

    ECI 的弹性能力在很大程度上取决于ECI 并发创建时的启动速度,因此优化ECI实例的并发启动速度非常关键。

    这里以Nginx 容器的端到端的创建时间(如下图所示)为例,除去实例启动占到的7% 的时间,资源调度的时间占到了43%,而镜像拉取的时间占到了50%。

    image.png

    容器在每次启动时,都会检查本地是否有相应的镜像,如果不存在,则会从远端的容器镜像仓库拉取镜像。在阿里云上的容器实例是运行在阿里云的安全沙箱内的,实例每次重建时都会销毁整个安全沙箱,其中也包括了已缓存到本地的镜像, 这就导致容器重建后依然会拉取镜像。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    ECI 和ECS 的区别是什么?

    ECI 和ECS 最大的不同就在于ECI 是按量秒级计费的,而不是ECS 常用的包年包月形式。ECI 只会收取用户从开始拉取业务镜像,到实例状态从Running 变成Succeed 或者Failed 之间的费用。ECI 与ECS 如下图所示,用一个2C4G 的实例来说明,如果每天业务运行的时间正好是14 个小时的话,那么ECI 按量付费的成本和ECS 包月的成本是持平的。如果业务每天运行的时间小于14 个小时,那么按量的ECI 成本会比包月的ECS 更低。

    除了帮助用户降低显性的使用成本,ECI 还能帮助用户降低隐性成本。Serverless 容器不向用户收取机器的资源成本,而直接按应用消耗的资源来收费。

    Serverless Kubernetes 提供了开箱即用的容器服务,大大降低了环境部署成本和时间, 同时阿里云在官网上提供了大量的帮助文档和最佳实践,大大降低了开发人员的使用门槛。

    image.png

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    ECI 实例支持哪些资源申请和计费模式?

    ECI 实例能够支持两种资源申请和计费模式。

    模式一:根据 CPU/ 内存进行资源申请和计费。ECI 会利用 ECS 多个规格族的库存,保障资源的交付。例如:2C4G,会尝试使用 ECS 的 ecs.c6.large、ecs.sn1ne. large、ecs.se1ne.large 等规格进行资源的交付。

    模式二:根据 ECS 规格进行资源申请和计费,价格参考各地域 ECS 按量价格, 用户可以根据需要指定 ECS 规格族来使用各规格族的指定能力,例如:指定使用 ecs. sn1ne 规格族,来使用网络增强能力。网络的使用费用主要包括VPC 网络中的负载均衡设备、弹性公网IP、privateZone 等费用;存储的使用费用主要包括NAS、OSS、EBS 快照等的使用费用。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    ECI 的成本包含哪些?

    ECI 的成本主要包含ECI 实例、网络和存储的使用费用。

    踩0 评论0
  • 回答了问题 2021-11-26

    弹性容器实例ECI 技术实现是什么样的?

    弹性容器实例ECI 提供面向云原生的免运维容器组(Pod)资源交付。用户只需要提供容器镜像,指定ECI 实例规格,即可运行容器实例,无须关心容器运行在哪台物理服务器上。

    作为弹性计算的“一等公民”,ECI 充分发挥底层的计算、网络、存储能力,不仅在资源上与ECS 复用整个阿里云弹性计算资源池,还复用了阿里云网络的基础设施,ECI 和ECS 可以在同一个VPC 内,中间没有虚拟网关的转发开销。ECI 也复用了阿里云存储的基础设施,基于ESSD 的系统盘和数据盘最高可以支持100 万的随机读写IOPS,稳定性和读写带宽都有充分的保障。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    Kubernetes实现组件有哪些?

    与社区开源的Kubernetes 相比,阿里云Kubernetes 服务除了提供便捷的安装、升级及轻松地实现 Kubernetes 集群的扩容和缩容等管理功能,还提供了更为强大的功能,其相关实现组件如下图所示。

    image.png

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    容器服务大批量的在线数据处理任务的场景是什么样的?

    根据业务数据处理需求,能够短时间快速创建大量处理节点,满足业务的大数据及 AI 在线处理诉求。

    • 混合调度:提供 CPU/GPU、虚拟机 / 神龙的混合调度与部署能力。

    • 灵活的任务规格:提供细粒度实例规格,满足上层应用和服务对计算能力的 包装。

    • 按需付费:容器实例根据资源规格及使用时长付费。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    容器服务根据业务流量自动扩容的场景是什么样的?

    根据业务流量自动对业务进行扩容,不需要人工干预, 避免流量激增扩容不及时导致系统故障,以及平时大量闲置资源造成的浪费。

    • 简单可控:便捷获取计算资源,兼容 Kubernetes。

    • 快速弹性:秒级启动和弹性伸缩。

    • 按需使用:容器实例按需创建释放,不需要预先准备底层资源。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
  • 回答了问题 2021-11-26

    容器服务混合云架构下的统一管理的场景是什么样的?

    在容器服务控制台上同时管理云上和云下资源,无须在多种云管理控制台中反复切换。基于容器基础设施无关的特性,使用同一套镜像和编排同时在云上和云下部署应用。

    • 在云上伸缩应用:业务高峰期,在云端快速扩容,把一些业务流量引到云端。

    • 云上容灾:业务系统同时部署到云上和云下,云下提供服务,云上容灾。

    • 云下开发测试:云下开发测试后的应用无缝发布到云上。

    资料来源:《弹性计算—无处不在的算力》

    踩0 评论0
正在加载, 请稍后...
滑动查看更多