ucc

Serverless 如何落地?揭秘阿里核心业务大规模落地实现

£可爱£侵袭症+ 提交于 2020-12-15 01:49:26
来源| 阿里巴巴云原生公众号 2020 年,新冠肺炎疫情催化数字化生活方式渐成常态。在企业积极进行数字化转型、全面提升效率的今天,几乎无人否认背负“降本增效”使命诞生的 Serverless 即将成为云时代新的计算范式。 Serverless 将开发者从繁重的手动资源管理和性能优化中解放出来,正在引发云计算生产力的新变革。 然而,Serverless 的落地问题却往往很棘手,例如传统项目如何迁移到 Serverless,同时保障迁移过程业务连续性,在 Serverless 架构下如何提供完善的开发工具、有效的调试诊断工具,如何利用 Serverless 做更好的节约成本等,每一个都是难题。 尤其涉及到在主流场景大规模的落地 Serverless ,更是并非易事。正因为这样,业界对于 Serverless 核心场景规模化落地最佳实践的呼唤更加迫切。 总交易额 4982 亿元,订单创建峰值 58.3 万笔/秒,2020 年天猫 双11 又一次创造记录。对于阿里云来说,今年的 双11 还有另一个意义: 阿里云实现了国内首例 Serverless 在核心业务场景下的大规模落地,扛住了全球最大规模的流量洪峰,创造了 Serverless 落地应用的里程碑 。 Serverless 落地之痛 挑战一:冷启动耗时长 快弹是 Serverless 天然自带的属性

无服务计算应用场景探讨及 FaaS 应用实战

佐手、 提交于 2020-12-11 23:58:35
作者 | 宋文龙(闻可) 阿里云全球技术服务部高级交付专家 来源 | Serverless 公众号 什么是无服务计算 无服务器计算(Serverless Computing)在构建和运行应用时无需管理服务器等基础设施。它描述了一个细粒度的部署模型,在该模型中,应用被拆解为一个或多个细颗粒度的函数,在云端托管环境中被触发运行,然后根据需要执行、扩展容量并且计费。各大云厂商 Amazon、微软、Google、IBM、阿里云、腾讯云、华为云相继推出 Serverless 产品。 无服务计算本身是一个概念或者理论模型,落地到具体技术上主要有函数即服务(FaaS)以及后端即服务(BaaS)两种形式,阿里云提供函数即服务 FaaS 产品。 阿里云对于 FaaS 的定义如下: 函数计算是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码。函数计算为您准备好计算资源,弹性地、可靠地运行任务,并提供日志查询、性能监控和报警等功能。 关于 FaaS 的详细介绍 官方文档 已经讲的很清楚,本文不再赘述。本文重点讨论无服务计算的应用场景以及应用实践。 无服务计算应用场景 1. 无服务计算的优势 无服务计算有很多优点,个人认为其中最主要的有三点: 使用无服务计算,用户无需考虑基础设施,可以更加专注于业务逻辑; 无服务计算支持弹性伸缩,按需使用,按量计费

Knative 带来的极致 Serverless 体验

…衆ロ難τιáo~ 提交于 2020-12-11 01:42:01
作者 | 冬岛 阿里巴巴高级技术专家 来源 | Serverless 公众号 导读 :Serverless 如今已是万众期待未来可期的状态,但一个系统到底具备怎样的能力才能更好地支撑 Serverless 应用?随着 Kubernetes 和云原生概念的崛起,Serverless 在 Kubernetes 之上应该怎么玩?本文就从 Serverless 应用的核心特质出发,讨论作为 Serverless 应用管理平台应该具备哪些特质。通过本文让您对 Knative 的 Serverless 应用管理方式有一个深刻的了解。 为什么需要 Knative Serverless 已经是万众期待,未来可期的状态。各种调查报告显示企业及开发者已经在使用 Serverless 构建线上服务,而且这个比例还在不断增加。 在这个大趋势下,我们再来看 IaaS 架构的演进方向。最初企业上云都是基于 VM 的方式在使用云资源,企业线上服务都是通过 Ansible、Saltstack、Puppet 或者 Chef 等工具裸部在 VM 中的。直接在 VM 中启动应用,导致线上服务对 VM 的环境配置有很强的依赖,而后伴随着容器技术的崛起,大家开始通过容器的方式在 VM 中部署应用。 但如果有十几个甚至几十个应用需要部署,就需要在成百上千的 VM 快速部署、升级应用,这是一件非常令人头疼的事情。而

2020 阿里云原生实战峰会即将开幕 云原生落地的正确姿势

99封情书 提交于 2020-12-10 01:06:59
来源| 阿里巴巴云原生公众号 2020 的各种意外, 让数字创新成为应对不确定性最为确定的发展动能 。一方面,数字化成为提升企业核心竞争力的关键;另一方面,云原生取代传统 IT 成为企业数字化最短路径,加速数字化创新进程。过去十年,企业通过云计算、大数据、人工智能等新兴技术搭上了数字化的第一趟高速列车,初尝数字化红利。今天,云原生凭借高效、便捷、低成本等特性,最大化释放云计算红利,帮助企业在数字化的基础上极速创新, 升级为数字创新型企业 。 2020 年 12 月 23 日,阿里云将在北京国贸大酒店召开以“原生加速·数创升级”为主题的 “2020 阿里云原生实战峰会” 。峰会分为主论坛和在线教育、互动娱乐、企业数字化转型、互联网 CTO 数创先锋营四大分论坛。300 多个行业数字创新企业先锋,共同探讨云原生落地的现状、挑战与创新实践,寻找云原生化最佳路径驱动业务增长和创新。 2020 阿里云原生实战峰会 5 大亮点值得期待 主论坛及四大分论坛汇聚 300 位技术管理者,共话云原生定义及应用实践 。来自云原生实践先锋企业的技术负责人、资深架构师、技术专家现场分享,议题覆盖在线教育、互动娱乐、数字化转型等不同领域,为企业落地云原生提供有力参考。 发布云原生落地权威报告,深度剖析云原生驱动企业转型落地痛点 。阿里云与德勤强强联手,以数百家来自不同行业大中小型企业为样本,结合各行业实践案例

我在阿里巴巴做 Serverless 云研发平台

坚强是说给别人听的谎言 提交于 2020-12-04 17:47:56
作者 | 林昱(苏河) 来源| 阿里巴巴云原生公众号 技术的成熟度源自大规模的实践,在 Java 领域,阿里将自身的实践源源不断的反哺给微服务技术体系;在 Node.js 领域,阿里正掀起了前所未有的前端革命浪潮,将实践反哺给 Serverless 技术体系,并逐渐拓展到其他多语言体系和后端 BaaS 上。 Serverless 云研发平台作为阿里巴巴集团前端委员会发起的一体化云研发平台,底层基于函数计算 FC,是整个 Node Serverless 体系中的研发入口,承接了淘宝、飞猪、ICBU、考拉、高德、文娱等研发、交付和运维工作。目前,集团已经有上千位前端和客户端的工程师使用 Serverless 云研发平台进行业务的开发工作,包括但不限于营销导购、中后台、行业前台等规模化场景。 从今年 双11 整体的大盘数据来看, 仅淘系 Node Serverless 的支撑流量就已经从去年的 2K QPS 峰值增加到今年的 30K QPS 峰值,峰值流量增加了近 15 倍,集团整体更加是从近 5.8K QPS 到达今年的 50K QPS 峰值。 解决方案上,我们定制了面向更多场景的能力,包括考拉 Dart 解决方案的落地,以及一些面向导购的模型驱动解决方案;运维上,我们优化了大促态和日常态流程,让开发者在应对更高 QPS 规模时,精力花费降低至少 50%;在研发体验侧,打造解决方案体系

OpenYurt 深度解读:如何构建 Kubernetes 原生云边高效协同网络?

試著忘記壹切 提交于 2020-11-09 15:26:35
作者 | 郑超 导读 :OpenYurt 是阿里巴巴开源的云边协同一体化架构,与同类开源方案相比,OpenYurt 拥有可实现边缘计算全场景覆盖的能力。在 之前的一篇文章 中,我们介绍了 OpenYurt 是如何在弱网和断网场景下实现边缘自治的。本文作为 OpenYurt 系列文章的第四篇,我们将着重介绍 OpenYurt 的另一个核心能力——云边通信,以及相关组件 Yurttunnel。 使用场景 在应用的部署和运维过程中,用户常常需要获取应用的日志,或直接登录到应用的运行环境中进行调试。在 Kubernetes 环境中,我们通常使用 kubectl log,kubectl exec 等指令来实现这些需求。如下图所示,在 kubectl 请求链路上, kubelet 将扮演服务器端,负责处理由 kube-apiserver(KAS) 转发来的请求,这就要求 KAS 和 kubelet 之间需要存在一条网络通路,允许 KAS 主动访问 kubelet 。 图一:kubectl 执行流程 然而,在边缘计算场景中,边缘节点常位于本地专有网络中,这虽然保证了边缘节点的安全,但也造成位于云端管控节点的 KAS 无法直接访问位于边缘节点的 kubelet。因此,为了支持通过云端节点对边缘端应用进行运维操作,我们必须在云、边之间建立反向运维通道。 反向通道 Yurttunnel 是

Kubernetes 是一个“数据库”吗?

坚强是说给别人听的谎言 提交于 2020-10-29 06:37:00
作者 | 张磊,阿里云高级技术专家、CNCF 官方大使,CNCF 应用交付领域 co-chair,Kubernetes 项目资深维护者 最近,Kubernetes 社区里有一个关于“Kubernetes is the new database”的论述,引起了很多人的关注。当然,这个论述更确切的含义,指的是 Kubernetes 项目本身的工作原理类似于数据库 ,而不是说你应该把 Kubernetes 当数据库用。 粗看起来,这个 “Kubernetes 是一个数据库” 的论述还是比较匪夷所思的。毕竟我们平常所说的 Kubernetes 的工作原理,比如控制器模式、声明式 API 等等,好像跟“数据库”这个东西并没有什么直接关系。但实际上,这个论述背后却有着其非常本质的含义。这里的缘由,得从 Kubernetes 项目里一个最基础的理论谈起。 Kubernetes 声明式应用管理理论基础 在我们讨论 Kubernetes 的时候,往往会提到这样一个概念,叫做“声明式应用管理”。实际上,这也是 Kubernetes 项目跟其他所有基础设施项目都不一样的一个设计,是 Kubernetes 所独有的一个能力,那么,你有没有思考过,声明式应用管理在 Kubernetes 中具体的表现到底是什么呢? 1. 声明式应用管理不仅仅是“声明式风格的 API” 如果我们回顾一下 Kubernetes

让容器应用管理更快更安全,Dragonfly 发布 Nydus 容器镜像加速服务

拟墨画扇 提交于 2020-10-27 14:25:35
镜像对容器部署的挑战 在容器的生产实践中,偏小的容器镜像能够很快地部署启动。当应用的镜像达到几个 GB 以上的时候,在节点上下载镜像通常会消耗大量的时间。Dragonfly 通过引入 P2P 网络有效提升了容器镜像大规模分发的效率。然而,用户还是必须等待镜像数据完整下载到本地,然后才能创建自己的容器。我们希望进一步缩减镜像下载的时间,让用户能够更快地部署容器应用。同时,如何更好地保护用户数据,也是容器行业近年来的重要关注点。 为此,我们为 Dragonfly 项目引入了一个 容器镜像加速服务 Nydus 。Nydus 能够极大缩短镜像下载时间,并提供端到端的镜像数据一致性校验,从而让用户能够更安全快捷地管理容器应用。Nydus 由阿里云和蚂蚁集团的工程师合作开发,并大规模部署在内部的生产环境中。作为云原生生态的一部分, Nydus 在生产环境的优秀表现,让我们有信心现在将项目开源,让更多的容器用户能够体验到容器快速启动和安全加载方面的能力。 容器镜像加速服务 Nydus 地址: https://github.com/dragonflyoss/image-service Nydus: Dragonfly 的容器镜像服务 Nydus 项目优化了现有的 OCI 镜像标准格式,并以此设计了一个用户态的文件系统。通过这些优化,Nydus 能够提供这些特性: 容器镜像按需下载

从零入门 Serverless | 教你 7 步快速构建 GitLab 持续集成环境

旧街凉风 提交于 2020-10-25 03:57:50
作者 | 存诚 阿里云弹性计算团队 本文整理自 《Serverless 技术公开课》 ,“Serverless”公众号后台回复“入门”,即可获取系列文章 PPT。 **导读:**本节课程为您介绍如何基于阿里云 Serverless Kubernetes(简称 ASK)服务,来快速构建 GitLab 持续集成环境。 ASK 介绍 首先,ASK 是什么?ASK 是阿里云推出的无服务器版 Kubernetes 容器服务。与传统的 Kubernetes 服务相比,ASK最大的特点就是通过虚拟节点接入 Kubernetes 集群,而 Kubernetes 的 Master 节点也完全由阿里云容器服务托管。因此,在整个 ASK 集群中,用户无需管理和运维真实节点,只用关心 Pod 资源即可,ASK 中的 Pod 则由阿里云弹性容器实例 ECI 承载。 ASK 的优势主要有以下几点: 降低用户使用 Kubernetes 的门槛,无需管理 Node 节点; 无需考虑节点的容量规划; 以 Pod 为单位按需计费; 宕机故障影响面小,Pod 级别。 同时,ASK 主要适用的场景有: 在线业务弹性(视频直播、在线教育); 大数据计算(Spark); 定时任务; CI/CD 持续集成。 GitLab CI on ASK 的优势 说到 CI/CD,大家最熟悉的两个工具,一个是 Jenkins,另一个是

Java 虚拟机诊断利器

我怕爱的太早我们不能终老 提交于 2020-10-23 20:42:26
作者 | 小白一只 【Arthas 官方社区正在举行征文活动,参加即有奖品拿~ 点击投稿 】 背景 最近学习Java字节码过程中遇到了反射,有段代码是这样的: package com.example.classstudy; import java.lang.reflect.Method; /** * @author TY */ public class ReflectionTest { private static int count = 0; public static void foo() { new Exception("test#" + (count++)).printStackTrace(); } public static void main(String[] args) throws Exception { Class<?> clz = Class.forName("com.example.classstudy.ReflectionTest"); Method method = clz.getMethod("foo"); for (int i = 0; i < 20; i++) { method.invoke(null); } } } 就是一段简单的反射调用 foo 方法,执行 20 次,然后看执行结果: 可以看到在 15 次调用 foo 方法后,第 16 次调用