快速部署 Spring PetClinic 到函数计算平台
简介
首先介绍下在本文出现的几个比较重要的概念:
函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息参考。
Funcraft:Funcraft 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档参考。
spring-petclinic:PetClinic 是一个 Spring Boot 、Spring MVC 和 Spring Data 结合使用的示例项目,是学习 Spring Boot 经典案例。
Spring 框架是由一些小而美的 Java 框架以松散耦合的方式集成在一起。这些 Java 框架可以独立或者集成使用以构建许多不同类型的工业级应用程序。PetClinic 示例应用程序是为了说明如何使用 Spring 应用程序框架来构建简单且功能强大的面向数据库的应用程序。它演示了 Spring 核心功能用法。
使用控制反转和 MVC 的 Web 表示层,基于 JavaBeans 的应用程序配置,通过 JDBC,Hibernate 或 JPA 进行数据库访问,基于 JMX 声明式事务管理的应用程序监视,使用 AOP 数据验证来支持但不依赖于表示层的 Spring 框架提供了大量有用的基础结构,以简化应用程序开发工作。
本应用模板使用函数计算的 Custom 运行时和 RDS-MySQL 云服务作为 Spring Boot 应用的运行环境。借助于资源编排服务(ROS)的能力,该模板会自动创建 VPC、VSwitch、SecurityGroup、RDS 和绑定了 HTTP Trigger 的函数,以及绑定到 HTTP 函数的自定义域名,并自动配置好这些服务,以达到迅速上线开箱即用的效果。
注意:
- 需要提供一个域名(支持二级域名),如果部署在国内 Region 该域名需要在阿里云备案,然后把域名的 CNAME 记录指向
12345.cn-shanghai.fc.aliyuncs.com
,其中12345
换成您的 AccountID,如果是在国外 Region 可以免去备案环节,请查看更多参考 - 模板创建的 RDS-MySQL 云服务选用了最便宜的按量付费实例,费用大约为:¥0.236/小时,使用前需要确保账户有 100 元的余额,并且试用完成以后建议通过 ROS 控制台删除该应用,以免产生超出预期的费用。
快速开始
下面我们借助于函数计算的应用中心,快速地将 Spring PetClinic 快速部署到函数计算平台。
- 打开函数计算 Spring PetClinic 应用详情页。如果您尚未开通函数计算服务可能需要先,开通服务是免费的,另外函数计算有每月免费额度,试用服务不会产生费用。
- 滚动到 Spring PetClinic 应用详情页的最底部,点击“立即部署”按钮。
- 填写应用名称和域名,其中域名需要先去设定 DNS 的 CNAME 记录,然后点击“部署”按钮。
- 稍等片刻,等到部署成功以后,拷贝 URL 网址。
- 在浏览器中打开上面拷贝的网址
工作原理
本示例中,我们打算使用函数计算的 Custom 运行时 来移植 Petclinic 项目。顾名思义, Custom Runtime 就是自定义的执行环境, 用户基于 Custom Runtime 可以完成以下目标:
- 可以随心所欲持定制个性化语言执行环境(例如 Golang、Lua、Ruby)以及各种语言的小版本(例如 Python3.7、Nodejs12 )等,打造属于自己的自定义 Runtime
- 现有的 Web 应用或基于传统开发 Web 项目基本不用做任何改造,即可将项目一键迁移到函数计算平台
该应用的架构图如下:
定制化开发
依赖工具
本项目是在 MacOS 下开发的,涉及到的工具是平台无关的,对于 Linux 和 Windows 桌面系统应该也同样适用。在开始本例之前请确保如下工具已经正确的安装,更新到最新版本,并进行正确的配置。
Fun 工具依赖于 docker 来模拟本地环境。
对于 MacOS 用户可以使用 homebrew 进行安装:
brew cask install docker
brew tap vangie/formula
brew install fun
Windows 和 Linux 用户安装请参考:
安装好后,记得先执行 fun config
初始化一下配置。
注意, 如果你已经安装过了 funcraft,确保 funcraft 的版本在 3.2.1 以上。
$ fun --version
3.2.1
初始化
git clone https://github.com/awesome-fc/spring-petclinic-for-serverless
cd spring-petclinic-for-serverless
编译打包
mvn package -Dmaven.test.skip=true
本地运行
MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_DBNAME=petclinic MYSQL_USER=root MYSQL_PASSWORD= ./bootstrap
请在运行上述命令前启动好本地的 MySQL 数据库,并将上述 MYSQL_*
的值替换为您本地 MySQL 数据库的配置。
部署
make deploy
为了获得更好的开发体验,建议安装 Aliyun Serverless VSCode Extension
参考链接
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”
快速部署 Spring PetClinic 到函数计算平台的更多相关文章
- 手把手教您将 libreoffice 移植到函数计算平台
LibreOffice 是由文档基金会开发的自由及开放源代码的办公室套件.LibreOffice 套件包含文字处理器.电子表格.演示文稿程序.矢量图形编辑器和图表工具.数据库管理程序及创建和编辑数学公 ...
- 如何迁移 Spring Boot 到函数计算
作者 | 田小单 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上 ...
- 从函数计算架构看 Serverless 的演进与思考
作者 | 杨皓然 阿里巴巴高级技术专家 导读:云计算之所以能够成为 DT 时代颠覆性力量,是因为其本质是打破传统架构模式.降低成本并简化体系结构,用全新的思维更好的满足了用户需求.而无服务器计算(S ...
- 一元建站-基于函数计算 + wordpress 构建 serverless 网站
前言 本文旨在通过 快速部署一个 wordpress 网站到阿里云函数计算平台 这个示例来展示 serverless web 新的开发模式, 包括 FUN 工具一键初始化 NAS, 同步网站到 NAS ...
- 使用函数计算三步实现深度学习 AI 推理在线服务
目前深度学习应用广发, 其中 AI 推理的在线服务是其中一个重要的可落地的应用场景.本文将为大家介绍使用函数计算部署深度学习 AI 推理的最佳实践, 其中包括使用 FUN 工具一键部署安装第三方依赖 ...
- 基于函数计算 + TensorFlow 的 Serverless AI 推理
前言概述 本文介绍了使用函数计算部署深度学习 AI 推理的最佳实践, 其中包括使用 FUN 工具一键部署安装第三方依赖.一键部署.本地调试以及压测评估, 全方位展现函数计算的开发敏捷特性.自动弹性伸缩 ...
- 开发函数计算的正确姿势——OCR 服务
作者 | 杜万(倚贤) 阿里云技术专家 简介 首先介绍下在本文出现的几个比较重要的概念: OCR(光学字符识别):光学字符识别(Optical Character Recognition, OCR)是 ...
- 从零入门 Serverless | 函数计算的开发与配置
导读:在本篇文章中,"基本概念"部分主要对函数计算最核心的概念进行详细介绍,包括服务.函数.触发器.版本.别名以及相关的配置:"开发流程"部分介绍了基于函数计算 ...
- 第九章 webase 分布式中间件平台快速部署
鉴于笔者以前各大博客教程都有很多人提问,早期建立一个技术交流群,里面技术体系可能比较杂,想了解相关区块链开发,技术提问,请加QQ群:538327407 参考资料:https://webasedoc.r ...
随机推荐
- C# 显示实现接口
显示实现接口的目的就是为了同名方法. 接口是多实现的,比如说一个方法要实现多个接口,然后这几个接口中有同名方法,这个时候就用到了接口的显示实现. 显示实现接口 成员方法的调用: 接口名.方法名 访问 ...
- 实现ios后台缩略图模糊的一种方法
http://blog.sina.com.cn/s/blog_64cfe8f00102ux5t.html 今天玩手机(Iphone)发现应用切换支付宝会变模糊,不禁感叹,细节处理的太到位了. 怎么 ...
- JavaScript 开发者都应该知道的十个概念
1. 原始值和引用值(Value vs. Reference) 理解对象.数组和函数是如何复制和传递到函数中的.了解引用值是被复制了什么,理解原始值是通过复制值来进行复制和传递的. 简析:ECMASc ...
- Python中的生成器(generator)
生成器: 在函数内部包含yield关键字,那么该函数执行的结果就是生成器(生成器即是迭代器) yield的功能:1.把函数的执行结果做成迭代器(帮函数封装好__iter__(),__next__()方 ...
- [C#] 查标准正态分布表
C#里面要计算正态分布是一件比较麻烦的事情,一般是通过查表来实现的. static double[] ayZTFB = null; /// <summary> /// 计算标准正态分布表 ...
- selenium webdriver学习(五)------------iframe的处理(转)
selenium webdriver学习(五)------------iframe的处理 博客分类: Selenium-webdriver 如何定位frame中元素 有时候我们在定位一个页面元素的时 ...
- ORACLE 创建pfile和spfile
使用服务器参数文件spfile创建文本参数文件pfile:1,SQL> create pfile from spfile="/u01/app/oracle/product/9. ...
- 【t065】最敏捷的机器人
Time Limit: 1 second Memory Limit: 128 MB [问题描述] [背景] Wind设计了很多机器人.但是它们都认为自己是最强的,于是,一场比赛开始了~ [问题描述] ...
- [Err] 1062 - Duplicate entry '0' for key 'PRIMARY'
问题描述: sql语句执行的时候,插入语句无法正确执行 问题原因: 主键 重复 出现 0 解决方案: 将主键设置为自增 然而,设置自增后还是可能会出现下面的问题 #1062 – Duplicate e ...
- 原生js实现选字游戏
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...