배경
알리 클라우드 컴퓨팅 기능을 완벽하게 이벤트 중심의 컴퓨팅 서비스를 관리 할 수 있습니다. 계산 기능, 당신은 인프라 서버, 단지 쓰기 코드 및 업로드를 관리해야합니다. 함수 계산은 당신이 당신의 코드를 실행할 수있는 유연하고 신뢰할 수있는 방법으로 컴퓨팅 자원을위한 준비, 그리고 로그, 성능 모니터링, 알람 등의 기능을 제공합니다. 함수 계산을 이용하여 신속하게 관리, 운영 및 유지 보수없이 응용 프로그램 및 서비스의 모든 유형을 구축 할 수 있습니다. 또한, 당신은 단지 코드가 발생한 어떠한 비용을 실행하지되며, 실제로 지불하는 소비 코드 리소스를 실행해야합니다.
포장 및 모바일 애플리케이션의 분포가 중요한 피크 유틸리티를 보여, 사용자들은 후, 짧은 시간에 배포 릴리스 자원의 적시 완료에 대한 필요성을 자원의 분산 실시간 보호의 큰 숫자를 준비하고 비용을 절감 할 필요가있다. 여기서 우리는 제공하는 재미있는 우리가 빠른 기반 구축 할 수 있도록 템플릿 계산하는 기능을 건물의 건축 서버를 사용하지 않는 패키지 배달 서비스를하고, 운영 및 유지 보수 효율성, 성능 및 비용의 발전 사이의 적절한 균형을 달성했다.
하청 과정에서, 다운로드 / 수정 / 업로드 컴퓨팅 / 네트워크 리소스를 소모하는 많은 자원이 소요되는 작업, 필요합니다. 그리고 하위 작업이 출시 새 버전의 응용 프로그램에만 발생합니다, 최단 시간 내에 완료해야합니다. 이것은 봉우리와 계곡 장면에 대한 명백한 있으며, 계산 기능에 사용되는이 수행됩니다. 더 중요한 것은,이 서비스는 탄성 스케일링 및 고 가용성 기능입니다.
APK 외주 프로필
더 많은 참조 모바일 응용 프로그램 패키지 배포 서비스 - 기능 --Serverless 마이크로 서비스 연습을 계산합니다 .
준비 :
노드를 설치 (1)
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash
nvm install 8
재미있는 도구를 설치합니다
npm install @alicloud/fun -g
: 당신이 고정 표시기, 특정 참조 문서를 설치해야합니다 때문에 일부 하위 명령 재미 도구는 사용되는 고정 표시기 수 있습니다 재미 설치 자습서를 .
3.apk 패키지 준비를
이 실험에서, 우리는 APK 패키지의 예는 여기에서 다운로드 할 수 있습니다 사용하는 QQ-v2.apk .
下载 qq-v2.apk ,上传到自己的 oss bucket中:
快速开始:
1.通过 fun 模板生成项目骨架
使用 fun init
命令可以快捷的将本模板项目初始化到本地,执行命令 :
$ fun init -n apk https://github.com/coco-super/package-distribution-service-for-serverless
start cloning...
Cloning into '.fun-init-cache-2fc2d680-eeff-11e9-a930-6fd4d1ac6506'...
remote: Enumerating objects: 23, done.
remote: Counting objects: 100% (23/23), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 23 (delta 0), reused 18 (delta 0), pack-reused 0
Unpacking objects: 100% (23/23), done.
finish clone.
? Please input a oss bucket name? sunfeiyu
Start rendering template...
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/.funignore
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/pom.xml
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src/main
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src/main/java
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src/main/java/example
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src/main/java/example/App.java
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/target
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/target/classes
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/target/classes/example
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/target/classes/example/App.class
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/template.yml
finish rendering template.
其中 -n 表示要作为文件夹生成的项目名称。默认值是 fun-app。更多fun init 命令格式选项说明请参考云栖文章开发函数计算的正确姿势 —— 使用 Fun Init 初始化项目。
执行 fun init
后会提示:输入一个 oss 的 bucket,注意 oss Bucket 是全球唯一的,如已经被占用了,请换一个新的名称或者一个已经创建好的(已经创建好的,请确保 region 一致)。
ps: 输入的内容和 apk 包准备中提到的 oss bucket name 是同一个,本示例为:sunfeiyu
4. 编译
在模版项目的根目录下执行 fun build
命令编译:
$ fun build
using template: template.yml
start building function dependencies without docker
building apk/apk
running task flow MavenTaskFlow
running task: MavenCompileTask
running task: MavenCopyDependencies
running task: CopyMavenArtifacts
Build Success
Built artifacts: .fun/build/artifacts
Built template: .fun/build/artifacts/template.yml
Tips for next step
======================
* Invoke Event Function: fun local invoke
* Invoke Http Function: fun local start
* Deploy Resources: fun deploy
关于 Fun build 构建函数详细请参照云栖文章 开发函数计算的正确姿势 —— 使用 Fun Build 构建函数。
5.服务部署
在模版项目的的根目录下执行 fun deploy
部署到云端。
$ fun deploy
using template: .fun/build/artifacts/template.yml
using region: cn-shanghai
using accountId: ***********8320
using accessKeyId: ***********mTN4
using timeout: 60
Waiting for service apk to be deployed...
make sure role 'aliyunfcgeneratedrole-cn-shanghai-apk' is exist
role 'aliyunfcgeneratedrole-cn-shanghai-apk' is already exist
attaching policies AliyunOSSFullAccess to role: aliyunfcgeneratedrole-cn-shanghai-apk
attached policies AliyunOSSFullAccess to role: aliyunfcgeneratedrole-cn-shanghai-apk
Waiting for function apk to be deployed...
Waiting for packaging function apk code...
The function apk has been packaged. A total of 15 files files were compressed and the final size was 3.13 MB
function apk deploy success
service apk deploy success
6.执行函数
提供两种方式:
- 登陆阿里云函数计算控制台,手动执行。
- 项目根目录下
fun invoke apk
命令远端调用:
$ fun invoke apk
using template: template.yml
========= FC invoke Logs begin =========
FC Invoke Start RequestId: 23f34cc4-0cd3-40e0-9a04-f6586cf29be6
2019-10-14 17:06:35.971 [INFO] [23f34cc4-0cd3-40e0-9a04-f6586cf29be6] cmd: java -jar /code/walle-cli-all.jar put -c aliyun-fc /tmp/input.apk /tmp/output.apk
2019-10-14 17:06:36.152 [INFO] [23f34cc4-0cd3-40e0-9a04-f6586cf29be6] Success!
FC Invoke End RequestId: 23f34cc4-0cd3-40e0-9a04-f6586cf29be6
Duration: 666.13 ms, Billed Duration: 700 ms, Memory Size: 1024 MB, Max Memory Used: 254.55 MB
========= FC invoke Logs end =========
FC Invoke Result:
Success
查看结果
登陆 oss 查看已经生成新的 apk 包:
将 oss 中 qq-v2-signed.apk 下载到本地。
查看渠道信息是否写入:
~/Downloads ⍉
$ java -jar /Users/ellison/Downloads/walle-cli-all.jar show qq-v2-signed.apk
/Users/ellison/Downloads/qq-v2-signed.apk : {channel=aliyun-fc}
渠道信息 {channel=aliyun-fc}
已写入,成功!
참고 읽기
" 알리바바 클라우드 네이티브 우려 마이크로 서비스는 서버를 사용는, 컨테이너, 서비스 메쉬 및 클라우드 네이티브 인기있는 기술 동향 초점을 다른 기술 분야는, 대부분의 개발자의 기본 클라우드 기술 서클을 이해 할, 기본 대규모 상륙 연습 구름."