内容简介:[云框架]FaaS & Serverless架构
[云框架]FaaS Serverless架构
FaaS (Function as a Service)/ Serverless 概念在最初并不为大众所接受,但随着微服务架构及 事件驱动架构 的发展成熟,越来越多人认识到了其中价值。( Serverless架构综述 )
简单来说,FaaS/Serverless是一种新的计算范例,为开发者和运营商提供简单、高效、可扩展的计算方法,我们可以把它看作是比微服务更细粒度的架构模式。FaaS/Serverless并不意味着没有服务器,而是通过将复杂的服务器架构透明化,使开发者专注于业务/任务本身,强调了一种减少计算资源关注、工作粒度从服务器切换到“任务”的思想。( FaaS、PaaS和无服务器体系结构的优势 )
对于开发者来说,FaaS/Serverless意味着:
-
无需管理服务器,仅需关注业务代码,其他工作将由平台完成
-
代码微小化,只完成一个功能,维护升级非常简单
-
需要时执行计算任务,无需支付闲时费用(真正的按需计算和付费)
对于平台运营者来说,FaaS/Serverless意味着:
-
资源利用率极高,只在实际计算时消耗资源
-
一个适用于任何语言、任何技术设计的方法的统一运行平台
本篇 云框架 将以一个自建FaaS平台 http://www.faas.pro 及两个FaaS方法(function)实例 ETCD_v3 、 Twitter Function Image 为例介绍FaaS/Serverless及其最佳实践。
适用于以下场景:
-
低频请求场景
-
流量突发场景
内容概览
- 在线演示
- 快速部署
- 平台部署
- 方法实例
- 框架说明-平台
- FaaS方法开发
- 生产环境
- 常见问题
- 更新计划
- 社群贡献
在线演示
快速部署
平台部署
- 增加本地域名解析(可能需要使用
sudo su
命令切换到root账户)
sudo echo "机器IP www.faas.org" >> /etc/hosts sudo echo "机器IP api.faas.org" >> /etc/hosts sudo echo "机器IP hub.faas.org" >> /etc/hosts
- 获取SSL证书(此处使用faas.org域名,你可以 构建自签证书并使用自己的域名 )
sudo wget -P /etc/ssl/faas.org/ fs.faas.pro/faas.org.key sudo wget -P /etc/ssl/faas.org/ fs.faas.pro/faas.org.crt
-
平台安装
-
docker-compose安装(执行前请确认已完成系统环境准备)
sudo curl fs.faas.pro/dc-up |sh
-
镜像仓库注意:此处部署过程使用自签的ssl证书,使用仓库时需要注意添加自签CA证书或者域名的信任,参考: 搭建安全的Docker Private Registry完全指南
-
-
安装Fn客户端( Fn - CLI tool )
curl http://fs.faas.pro/fn | sh export API_URL=http://api.faas.org fn --help
-
访问平台
- 通过 http://www.faas.org:9999 查看服务:
- 通过 http://www.faas.org 进入控制台:
方法实例
在进行操作实例前需注意:
-
确保上文平台及Fn客户端已完整部署
-
确认配置环境变量
API_URL=http://api.faas.org
ETCD v3 FaaS方法实例
-
部署一个ETCD_v3应用 ,若已部署忽略本步骤。 ( 部署方式 )
-
创建应用(etcd_v3 server地址替换
***
)
fn apps create --config ETCD_SERVER=*** etcd_v3
- 创建路由
fn routes create etcd_v3 /command -i hub.faas.pro/etcd_v3:0.0.1
- 运行方法
- PUT
echo '{"method":"put","key":"hello","value":"world"}' | fn call etcd_v3 /command
- GET
echo '{"method":"get","key":"hello"}' | fn call etcd_v3 /command
Twitter Function Image方法实例
Twitter Function Image可用于查看推文( 需要科学上网 )
-
创建应用(根据你的twitter账号信息更改
***
)
fn apps create --config ACCESS_SECRET=*** --config ACCESS_TOKEN=*** --config CUSTOMER_KEY=*** --config CUSTOMER_SECRET=*** twitter
- 创建路由
fn routes create twitter /tweets -i hub.faas.pro/func-twitter:0.0.1
- 运行方法,可以使用任何人的账号名替换
***
(username值)
echo '{"username":"***"}' | fn call twitter /tweets
框架说明-平台
平台架构图如下所示:
-
Traefik :了解学习现代化反向代理/负载均衡
-
FunctionAPI:提供一个无状态的API服务。提供FaaS方法创建,配置,运行等API
-
Mysql:存储FaaS方法元数据
-
Redis:消息队列,每次方法调用API产生的任务送往消息队列,调度与执行器从消息队列获取任务并执行
-
Fn:命令行客户端,使你本地开发、本地部署
-
Hub:存储你的方法镜像,使用docker官方镜像仓库服务。项目地址: https://github.com/docker/distribution
开发你的FaaS方法
如果想要自己开发FaaS方法,可参考 ETCD_v3 、 Twitter Function Image 这两个例子。
需要注意的是,与普通应用相比,FaaS方法有以下特点/不同:
- FaaS方法可使用任何语言进行开发
- FaaS方法具有一定的运行时间,即完成计算后退出
- FaaS方法从标准输入或环境变量获取输入数据,以标准输出输出计算结果
- FaaS方法需要以dockerfile进行镜像打包
步骤:
- 使用fn命令构建你的代码:
# 创建func.yaml文件 - 用Docker Hub username替换$USERNAME fn init $USERNAME/hello # 创建function fn build # 测试 - 通过管道传入数据, 例如:`cat hello.payload.json | fn run` fn run # 完成后构建并将其push至Docker Hub fn build && fn push # 创建一个app - 每个app仅执行一次 fn apps create myapp # 为function创建一个route fn routes create myapp /hello
- 使用lambda函数(确保你的node.js主处理函数文件名为:
func.js
)
fn init --runtime lambda-node hub.faas.org/lambda-node
生产环境
TODO
常见问题
TODO
更新计划
TODO
点击查看 历史更新
社群贡献
云框架 系列主题,遵循 APACHE LICENSE 2.0 协议发布。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 架构认知(二):企业架构的框架和作用
- 花椒移动端基础框架架构
- 『互联网架构』软件架构-Spring boot集成日志框架(89)
- [云框架]FaaS & Serverless架构
- 闲鱼 Flutter 图片框架架构演进
- 集群调度框架的架构演进过程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
处理器虚拟化技术
邓志 / 电子工业出版社 / 2014-5-1 / CNY 109.00
《处理器虚拟化技术》针对在Intel处理器端的虚拟化技术(Intel Virtualization Technology for x86,即Intel VT-x)进行全面讲解。在Intel VT-x技术下实现了VMX(Virtual-Machine Extensions,虚拟机扩展)架构平台来支持对处理器的虚拟化管理。因此,VMX架构是Intel VT-x技术的核心。《处理器虚拟化技术》内容围绕V......一起来看看 《处理器虚拟化技术》 这本书的介绍吧!