加入收藏 | 设为首页 | 会员中心 | 我要投稿 莆田站长网 (https://www.0594zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

发布时间:2019-06-20 22:17:16 所属栏目:优化 来源:誓嘉
导读:副标题#e# AWS Lambda 是 Serverless 领域的标志性产品,但如果将其应用于核心业务,可能会遇到以下难题:(仅代表作者个人观点) 要求用户以 Function 为单位进行开发,全新的开发框架,云厂商强绑定,社区主流技术栈迁移成本高; Function 启动速度要足够快

L2 是通过将应用程序启动后在 RAM 中的指令和数据结构 dump 到磁盘文件,只需要在机器之间拷贝文件即可以达到横向弹性的能力,这个时间消耗主要是数据的网络传输时间+内存拷贝时间,大约在5秒左右就可以完成。L2 的成本开销只有网络磁盘容量,开销极低,可忽略不计。

L2 的每个 SNAOSHOT 对应一个可运行的实例,例如预计一个应用需要最大启动100个实例,那么需要提前生成100个 SNAOSHOT,每个 SNAOSHOT 对应一个运行实例,需要启动时,从远程磁盘加载这个 SNAPSHOT。

此方案通过 L1 和 L2 的组合来达到加速应用启动的目的,在支持一定流量脉冲能力下,可以最大50ms内启动任意应用,平均在10ms内完成。

方案二:应用热复制启动加速方案

L1 采用通过 fork 种子进程达到快速启动的效果,操作系统团队专门为此开发了 fork2 技术,与 Linux Native fork 的关键区别在于可以指定 PID 来 fork 一个进程。

  1. pid_t fork2(pid_t pid); 

L2 的单个 SNAPSHOT 可以创建多个进程,一对多关系。

两种自研方案的对比

  • 方案一:不存在 UUID 问题,但是每种语言的 VM 要单独定制,成本效果相比方案二略差。
  • 方案二:会存在 UUID 问题,若开发者希望应用的每个实例启动时,都赋值一个 UUID 给一个静态变量,但通过 fork 会导致每个实例的这个静态变量都相同,这与开发者预期不符。方案二的优势是更易实现、和语言无关、成本效果更优,适合 FaaS、NBF 这类场景或者开发者自己定义的开发框架,能避免 UUID 的问题。

整体来看,方案一的适用场景更广,但是实现成本更高,方案二较适合 FaaS、NBF 这类场景。

和 AWS Lambda 相比

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

Lambda 为了做到快速扩缩容,要求用户的应用以 Function 为单位开发,Lambda Runtime 动态加载 Function 来快速增加实例。

CSE 则通过将一个应用的多个实例启动后,共享相同的指令数据,抽取出不同的指令数据,每次启动实例只需要加载多实例的差异部分。因此可以透明兼容社区主流技术栈,如 Spring Boot,PHP/Java/Python/Node.JS 等。

CSE 的成本优势

理论模型:

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

Serverless 方式应用占用的实例数随时在变化,因此可以多个应用错峰使用同一台机器。

量化分析:

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

Serverless 的成本优势是可以和 CPU Share &离在线混部等调度技术的成本优势做叠加,能给最终用户一个更优的总体成本。

CSE 的代码样例

HSF demo

  1. package com.test.pandora.hsf; 
  2.  
  3. import com.alibaba.boot.hsf.annotation.HSFProvider; 
  4.  
  5. @HSFProvider(serviceInterface = HelloWorldService.class) 
  6. public class HelloWorldServiceImpl implements HelloWorldService { 
  7.     @Override 
  8.     public String sayHello(String name) { 
  9.         return "hello : " + name; 
  10.     } 

(编辑:莆田站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读