Serverless 架构近年来越来越受到前端开发者的关注,它让开发者更加便捷地部署应用,节省了服务器维护的时间和成本。但是,对于初学者来说,使用 Serverless 还有一定的难度,特别是在架构设计方面。为此,本文将介绍一种图形化实现 Serverless 架构的方法,以方便开发者快速上手。
Serverless 架构优势
在介绍 Serverless 架构图形化实现之前,我们先来了解 Serverless 架构的优势。
- 提高开发效率: Serverless 架构简化了应用的开发、测试、部署和监测等环节,开发者专注于代码编写即可。
- 节省成本:不需要长期租用服务器,按需购买、使用,节省了硬件成本和服务器维护成本。
- 更安全:Serverless 架构提供了隔离的环境,降低了应用授权和接口被攻击的风险。
针对这些优势,Serverless 架构渐成前端开发新的选择。下面,我们将介绍如何使用图形化方式来实现 Serverless 架构设计。
Grafana 及其优势
在 Serverless 架构设计中,我们可以使用 Grafana 这个工具,它支持将数据可视化以及通过交互式图形和面板查看应用的性能和状态。而且,由于 Grafana 是开源工具,可以在各个平台上运行,比如 Windows、Linux 和 Mac OS 等。
Grafana 有一些其他的优势,比如:
- 支持多种数据源,如 Prometheus 和 Graphite 等。
- 通过插件扩展了其他数据源和硬件设施的支持。
- 有活跃的社区和全球支持。
有了这些优势,我们可以很方便地使用 Grafana 来实现 Serverless 架构的图形化设计,具体步骤如下。
Grafana 实现 Serverless 架构设计
以下是实现 Serverless 架构图形化设计的步骤。
安装 Grafana
首先,我们需要在本地或服务器上安装 Grafana。Grafana 可以在多个平台上安装,这里我们以 Ubuntu 为例,执行以下命令即可:
$ wget https://dl.grafana.com/oss/release/grafana_7.4.3_amd64.deb $ sudo dpkg -i grafana_7.4.3_amd64.deb
添加数据源
完成了 Grafana 的安装之后,需要添加数据源。此处以 Prometheus 为例,执行以下命令:
$ sudo apt-get update && sudo apt-get install prometheus
然后,进入 Grafana 界面,在左侧导航栏选择“Configuration”->“Data Sources”,新建数据源。
填写必要信息,然后测试数据源,如果显示“Data source is working”,就表示数据源已经添加成功。
安装 Cloud Function
Cloud Function 是谷歌云平台上的一个 Serverless 服务,我们使用它来实现 Serverless 架构。Cloud Function 支持以下多种编程语言:
- Node.js (8, 10, 12)
- Python 3 (3.7, 3.8)
- Go 1.11
在这里,我们使用 Node.js。安装 Cloud Function 的步骤如下:
1.安装 gcloud:
$ curl https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-319.0.0-linux-x86_64.tar.gz -o google-cloud-sdk.tar.gz $ tar zxvf google-cloud-sdk.tar.gz $ cd google-cloud-sdk $ ./install.sh $ ./bin/gcloud init
2.安装 Cloud Function:
$ sudo apt-get update && sudo apt-get install curl $ curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/functions-framework-nodejs/master/docs/serving/samples/helloworld/package.json $ curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/functions-framework-nodejs/master/docs/serving/samples/helloworld/index.js $ npm install
创建云函数
接下来,我们创建一个云函数。在目录下创建 index.js
文件, 输入以下代码:
module.exports = (req, res) => { res.send('Hello World!'); };
执行以下命令,运行云函数:
$ export PORT=8080 $ export FUNCTION_TARGET=index $ export FUNCTION_SIGNATURE_TYPE=http $ npm start
此时,我们可以通过访问 localhost:8080
来验证云函数是否成功运行。
在 Grafana 上配置 Panel
在 Grafana 界面添加新 Panel,在 Panel 里添加一个新的 Query,选择数据源为 Prometheus,查询语句为:
sum(up{job="node_exporter"})
以上查询语句是 Prometheus 的一个默认查询语句。我们可以使用该语句来查询出所有在线的 Node Exporter 实例。
然后,我们需要绑定 Panel 到图表上。在 Panel 里选择时间范围、图表类型等信息,然后点击“Save”。
测试
在 Panel 上已经绑定了一个查询语句,我们可以根据需要进行调整。例如,我们只想查询 Node Exporter 中的单个指标,可以在查询语句中加入筛选条件,如下所示:
up{job="node_exporter",instance="hostname:port"}
其中,hostname:port
是我们需要查询的 Node Exporter 实例的地址。
示例代码
以上是 Serverless 架构图形化实现的方法,下面给出一个 Workshop 的示例代码,供读者参考。
https://github.com/future731/Serverless-Workshop
结论
本文详细介绍了如何使用图形化方式来实现 Serverless 架构设计。通过使用 Grafana 工具,我们可以将数据可视化以及通过交互式图形和面板查看应用的性能和状态。同时,与其他数据源和硬件设施的支持,以及全球支持。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f352d4e1e8e99bfaf5dde9