我的Serverless实战——Maven项目部署
Posted 啊~小 l i
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的Serverless实战——Maven项目部署相关的知识,希望对你有一定的参考价值。
简介
Serverless架构,或者称为无服务器架构,是最近几年新冒出来的一种架构风格。这究竟是一种什么样的架构?无服务器,就是真的没有服务器了么?其实,对于Serverless来说,只是用户不用更多的去考虑服务器的相关内容了,无需再去考虑服务器的规格大小、存储类型、网络带宽、自动扩缩容问题了;同时,也无需再对服务器进行运维了,无需不断的打系统补丁、应用补丁、无需进行数据备份、软件配置等工作了。
但是没有服务器,如何来将程序、应用运行起来呢?这里要介绍的是Serverless下包含的两个概念:函数即服务,Function as a Service FaaS,后端即服务,Backend as a Service BaaS。
FaaS(Function as a Service) 就是一些运行函数的平台,比如阿里云的函数计算、AWS 的 Lambda 等。
BaaS(Backend as a Service)则是一些后端云服务,比如云数据库、对象存储、消息队列等。利用 BaaS,可以极大简化我们的应用开发难度。
Serverless 则可以理解为运行在 FaaS 中,使用了 BaaS 的函数。
深入了解
以腾讯云为例
Tencent Serverless优势:
- 通用 Serverless 计算服务,提高业务场景解决方案
- 一站式平台,秒级部署,快速构建、发布和监控 Serverless应用
- 弹性伸缩,按用量计费,1ms计费粒度,成本降低70%;每月享受定额免费资源
支持的开发语言
- python
- java
- php
- golang
- node.js
java说明
云函数 SCF 在 Java 运行时环境中提供了 Java8 的运行环境。
不支持上传代码:使用 Java 语言,仅支持上传已经开发完成,编译打包后的 zip/jar 包。SCF 环境不提供 Java 的编译能力。
不支持在线编辑:不能上传代码,所以不支持在线编辑代码。Java 运行时的函数,在代码页面仅能看到再次通过页面上传或 COS 提交代码的方法
执行方法
由于 Java 包含有包的概念,因此执行方法和其他语言有所不同,需要带有包信息。代码例子中对应的执行方法为 example.Hello::mainHandler,此处 example 标识为 Java package,Hello 标识为类,mainHandler 标识为类方法。
Maven创建jar部署项目
环境准备
window:Maven zip下载链接
Linux: Maven tgz.gz下载链接
- 添加到环境变量
- Linux:通过 export PATH=$PATH:***/apache-maven-3.5.0/bin 完成添加。
- Windows:通过 计算机>右键>属性>高级系统设置>高级>环境变量 进入到环境变量设置页面,选择 Path 变量编辑,在变量值最后添加 ;D:\\Maven\\bin;(路径填写自己的实际路径)
- 检查Maven是否配置成功
mvn -v
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2021-05-20T03:39:06+08:00)
Maven home: C:\\Program Files\\Java\\apache-maven-3.5.0\\bin\\..
Java version: 1.8.0_271, vendor: Oracle Corporation
Java home: C:\\Program Files\\Java\\jdk1.8.0_271\\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
出现上述文字即为配置成功
3. 代码准备
此处需要引入Maven Central 库处理包依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>examples</groupId>
<artifactId>java-example</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>java-example</name>
<dependencies>
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>scf-java-events</artifactId>
<version>0.0.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
- 编译打包
在项目文件夹根目录下执行命令mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building java-example 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.785 s
[INFO] Finished at: 2021-05-21T17:15:53+08:00
[INFO] Final Memory: 17M/211M
[INFO] ------------------------------------------------------------------------
打包成jar格式(java-example-1.0-SNAPSHOT.jar)
即可
函数使用
编译打包后生成的 jar 包,可在创建或修改函数时,根据包大小,选择使用页面上传(小于10M),或将包上传 COS Bucket 后再通过 COS 上传的方式更新到函数内。
以上是关于我的Serverless实战——Maven项目部署的主要内容,如果未能解决你的问题,请参考以下文章
Serverless入门——实战部署VuePress前端项目
我的 Serverless 实战 — Serverless 腾讯云文字识别(OCR)详细部署过程
我的 Serverless 实战 — serverless中的CLS服务应用详解