03 | 高级属性:应对生产级别的应用,你需要掌握哪些技能?
如何提取公共的服务能力?
- 深入了解
- 翻译
- 解释
- 总结
函数计算平台在应对生产级别的应用时,需要掌握一些高级技能。通过层的提出,可以将函数依赖的公共库提炼到层,以减少部署、更新时的代码包体积,实现函数程序包更小、避免错误、减少存储资源浪费的好处。其次,函数计算平台支持用户以自定义镜像的方式上传应用来运行,通过构建和使用自定义镜像,实现快速开发和交付的能力。这种方式对于老的服务改造迁移成本也非常低。通过这些高级技能,读者可以更好地驾驭Serverless平台,实现复杂场景和生产环境的应用服务。 文章介绍了函数计算平台的流量切换和灰度发布机制,通过版本和别名的概念,实现了优雅的流量切换、版本回滚和灰度发布等功能。另外,针对流量突增和服务处理异常的情况,文章提到了通过引入消息队列的方式来应对流量峰值,并介绍了函数计算平台的容灾能力,包括同步重试、异步延时重试的逻辑以及流量转发和调度层的处理方式。 总结来看,函数计算平台通过提供层、自定义镜像、别名和版本、异步策略等高级属性,让用户能够更好地应对复杂的生产环境需求。同时,文章还提到了函数计算平台在处理流量突增和服务异常时的应对策略,以及容灾能力的实现机制。这些内容为读者提供了深入了解函数计算平台的能力和应用场景的重要参考。
《Serverless 进阶实战课》,新⼈⾸单¥59
全部留言(8)
- 最新
- 精选
- 李原文:一般来说,云厂商会选择在函数计算引擎之上增加流量转发和调度层。 我的问题:这个层或者流量转发的增加,会不会是制约云函数的瓶颈,比如说一个云函数有一百万的并发,是不是意味着转发层的并发≥一百万,那假如某一瞬间有一百万的云函数同时有一百万的并发呢?这瞬间这个层接受的流量岂不是一百万乘以一百万,能扛得住吗
作者回复: 赞,看的很仔细,这个问题提的很好,正好是万亿级的流量转发了,一般我们使用的云厂商的触发器等,都要经过这一层,比如BFE这种。但我们同时也有两个点得明确一下哦,一个是账号和并发度在函数上的并发受限,第二是在集群中部署的调度组件,比如通过HPA也是具备扩缩容能力的。
2022-09-06归属地:上海23 - 奕FaaS 平台如何集成消息队列的?
作者回复: 好问题,通常两个地方,一个是消息触发器,这里的平台需要在用户创建之时以Consumer Group 方式消费配置的消息,需要有鉴权验证,有的云厂商平台如果涉及VPC ,需要跨VPC 操作,这里可以到时候看第九小节,消息的访问平台通常有用户授权特权模式打通,第二个是内部的消息处理,这里跟我们之前处理微服务的架构就差不多了,但不同的是我们需要考虑资源的利用和闲置,如果是因为历史的原因采用了非存算分离的消息队列,可以在后续的架构中考虑引入类似pulsar ,Rocket MQ Serverless 形态的中间件集成。除此之外呢,在日志收集等地方也会用到,参考微服务处理方式就行。欢迎交流哦
2022-09-03归属地:上海32 - 坚信光明就在远方!还有就是我理解不仅是流量转发层,调度层应该也是百万乘百万的流量吧,所以才有了,调度组件通过HPA也是具备扩缩容能力的这句话。还有就是HPA让想到了,FAAS平台的所有组件应该都是容器化部署在容器云上的吧,类似istio+envoy。因此可以认为serverless或service mesh其实都是基于容器云去做更多丰富功能的拓展,service mesh实现了流量治理,serverless实现了函数级粒度的微服务(FAAS),及各种中间件的api式资源申请使用(BAAS)
作者回复: 👍,赞,很不错哦,可以结合第五讲连起来看
2022-09-23归属地:上海1 - 码小呆想知道部署Serverless 与 部署到服务器有什么区别,感觉没有区别呀
作者回复: 从部署上来说,其实我们更多的还是考虑如何让使用Serverless 技术或者产品的开发者能有一个平滑过渡的体验,保持和原来更接近的开发部署体验,才更有利于工程师转型或者探索。那么在运行态,最主要的是Serverless 平台自动伸缩的特性,使得在新的实例上有一个拉取镜像启动运行的时间,下节课开始会逐步聊这块。
2022-09-03归属地:上海1 - Wang Yifei1.建议基于 HTTP 和事件的触发方式,实现相应的接口功能; 2.需要根据接口协议规范,实现请求 Header 和 Body 中值的解析和处理; 对于第一点,实现相应的接口功能是指在HTTP Server程序中编写相应的代码逻辑? 对于第二点,HTTP请求,相应的标准格式和事件格式之间的转化是由应用程序代码逻辑还是云服务商负责实现?
作者回复: 看的很仔细👍,都是自己按照云厂商的标准来实现,或者如果你是平台侧,你得实现类似这样的能力,让你的业务方来开发,类似我们平时做一个框架一样,然后按照框架规范来实现一个server 即可
2023-04-02归属地:北京 - Wang Yifei需要根据接口协议规范,实现请求 Header 和 Body 中值的解析和处理; 这句话意思是说吧HTTP请求中body的内容解析成标准的事件格式? 这个工作需要由开发者自己处理还是云平台处理?
作者回复: 开发者,自定义镜像是开发者自己实现的一个Http server 或者一个任务服务等
2023-04-02归属地:北京 - Geek_1cd59f1、针对延时敏感的流量突增,扩容跟不上速度的情况应该怎么处理呢? 2、另外,传统的java微服务模块,一般都是多个api 在一个模块里开发的,例如分为:controller、service、dao 层。多个api 是复用 service、dao层的。当业务rd开发函数时,一般不会接受将每个api 单独开发,还是会习惯复用 service、dao 层的。这样就会导致每个函数不是的代码,都是多个api相关的代码。导致函数重。这种情况有什么方案吗?
作者回复: 1. 预留实例,预留buffer ,异步调用,预测预取,抢占等都是常用的手段,看你具体是业务方还是平台方,平台方还要考虑底层资源准备情况,看你是用vm 还是容器实例了,可以找极客助理加微信具体来聊聊哈2.我倒是建议直接用自定义镜像或者层依赖,还不如使用SAE 这种托管服务,具体可以参考服务选型一节哦
2023-01-31归属地:北京 - Wisdom老师你图中faas平台,是指云厂商的?
作者回复: 你好,不一定云厂商,私有化部署也可以,这里的FaaS平台指的是函数计算的中控调度模块,具体可以设计成2个子模块(即异步接收消息暂存和消息处理); 子模块1,假设叫eventProc,用于接收消息的请求,并发往消息队列;子模块2,假设叫MsgProc,用户处理消息队列的请求,并同步调用函数来做处理,如果云函数没有资源否则处理出错,会做一层异步重试策略,或者按照消息的及时性,直接返回错误信息,写到用户配置的日志服务中存储,供用户查阅。或者按照用户配置的异步队列或者异步函数进行转发供用户进一步统计用。
2022-09-07归属地:上海