我的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下载链接

  1. 添加到环境变量
  • Linux:通过 export PATH=$PATH:***/apache-maven-3.5.0/bin 完成添加。
  • Windows:通过 计算机>右键>属性>高级系统设置>高级>环境变量 进入到环境变量设置页面,选择 Path 变量编辑,在变量值最后添加 ;D:\\Maven\\bin;(路径填写自己的实际路径)
  1. 检查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>
  1. 编译打包
    在项目文件夹根目录下执行命令 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 实战 — Serverless 腾讯云文字识别(OCR)详细部署过程

我的 Serverless 实战 — serverless中的CLS服务应用详解

我的 Serverless 实战 — 腾讯云Serverless 应用开发部署并调用云函数看这一篇就够了

我的 Serverless 实战 — 腾讯云Serverless 应用开发部署并调用云函数看这一篇就够了