概述
- Serverless(SCF)无服务器云函数是一种能够让普通企业免去相当一部分运维的技术,
自我认为并非是一个新的技术,有点像容器和微服务的一种结合产物!
基础原理
- 用户使用云函数时,基本上可以免去部署操作,作为核心开发人员,只需要将自己的业务逻辑按照云函数的规范去编写代码,
编写完成后,上传到云平台,由云平台控制器,动态分配一个容器来执行业务云函数!
简单对比
- 传统项目部署:直接将服务1,2,3 直接部署在服务器上(多个服务堆叠在一起,耦合重,维护复杂,租用期内持续付费)
- 按量付费:结合传统部署形式,但付费更灵活,可在举办活动等业务时使用(随时可停,无请求时段服务器依旧收费)
- SCF:服务自动分开部署(由云平台的控制器自动分配到合适的容器中),收费更为人性化(有请求则收费,无请求不收费)
基础示例
- 示例说明:利用云函数自动拨测存储在指定数据库的url,来达到监测项目接口的健康状况的目的!
# -*- coding: utf-8 -*-
from datetime import datetime
from time import time
import re
import operator
import pymysql.cursors
import logging
import sys
import os
import requests
import random
def main_handler(event,context):
connection = pymysql.connect(host='rm-bp1z24bqm9p22b8fbwo.mysql.rds.aliyuncs.com',
user='newurl',
password='Newurl123',
port=3306,
db='newtest',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor)
try:
with connection.cursor() as cursor:
# Clean dirty data
for m in range(1,20):
sqls="select url from testUrl where id=%s"
#cursor.execute(sqls,m)
cursor.execute(sqls,m)
results = cursor.fetchall()
print(type(results))
url=results[0]['url']
print(type(url))
data_url=requests.get(url, timeout=10)
result_data=data_url.status_code
val_re=(result_data)
sql = "INSERT INTO `testUrl` (`url`) VALUES (%s)"
cursor.execute(sql,val_re)
connection.commit()
finally:
connection.close()
return "LogAnalysis Success"
https://www.bilibili.com/video/av59020925