Baas与Serverless Faas

Posted 架构师的历练

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Baas与Serverless Faas相关的知识,希望对你有一定的参考价值。

一、背景

在Iaas和Paas中,开发者开发业务时,仍然需要关心很多东西,比如缓存、消息服务、Tomcat容器、数据库,需要对服务器进行性能优化,考虑负载和扩展等。如果让开发者无需在服务器实现和部署服务,直接租用服务或者开发服务而无需关注如何在服务器中运行部署服务,这是一种去服务器而直接使用服务的架构。


二、主流的Baas

国外有Lambda、Parse、Kinvey。

国内有LeanCloud、Bomb和MaxLeap

提供的服务大同小异,主要目都是一个,为开发者专注于核心业务的开发和定制,减少云端基础功能的开发和运维投入。也有一些专注于某些领域的,如友盟、极光推送、Mob-ShareSDK等


三、提供的服务

主流有版本管理、移动支付、代码托管、推送、即时消息、对象存储、数据采集与统计、应用分发、大数据及用户画像、内容管理、安全等。


1、版本管理

检查更新和升级,并提供下载最新APP的接口


2、数据存储

主要是update和select操作,但每个应用总有各种不同的数据模块,而且复杂点的数据模型之间还有嵌套和其它关联关系,所以平台应该提供灵活的SDK,方便数据模型的扩展。有关系型的如mysql、Orace,NoSql型的如Redis、MongoDB、HBase等

同时,还可以提供自定义API来增加脚本,对数据操作前后进行处理。


3、用户管理

用户数据模型的管理和数据存储类似。用户关系主要包括好友关联、群组、关注等等


4、角色管理

不同的用户具备哪些角色,可以访问哪些API,并对这些角色进行统计


5、权限管理

基于SSO的方案对API和数据的访问权限进行控制,常用的算法有Auth0,Auth0 2.0、jwt等


6、文件管理

包括上传下载文件压缩、断点续传、对象存储、进度显示


7、推送服务

基于移动端的各个管道,提供Push能力,包括APNS、华为\小米\ov通道等


8、地理位置

在埋点信息中加入地理位置坐标点,基于坐标提供四边形区域、圆形区域内的信息检索


9、数据采集和统计

产品运营信息的统计,通过前端sdk或web数据埋点采集,通过大数据平台进行ETL和存储之后,再基于定制规则展现,比如UV、PV、NU、留存率等


10、移动支付

对接支付宝、理财通、银联接口,进行鉴权后,实现实时支付,并提供API进行消费记录的查询。


11、代码托管

最著名的代码托管平台就是github了,也可以提供更多的增殖服务,如静态代码质量检查、圈复杂度检查等等


12、应用分发

将ipa(ios)或APK(android)分别上传应用商店。

ios主要是APPStore

Android有豌豆荚、阿里九游、PP助手、UC应用商店、神马搜索,以及华为\小米\ov的厂商应用商城


13、安全

主要是提供安全机房服务进行流量清洗,以预防DDos和CC攻击,主要方法有二种,一是通过BGP路由牵引流量进入安全机房进行流量清洗,二是通过物理分光棱镜进行流量包复制检查。


四、Baas的架构分层

个人理解Baas的架构分层大致可以分为四层:



五、Baas的核心技术框架

1、Baas是云端一体的开发架构,而Serverless-Faas是Baas的云端实现的主要架构方式。

Baas = 云API+端API

云API= Service with Serverless-Faas(API网关+微服务+容器化+...)

端API=多端SDK+Component Framework


2、Serverless运行于无状态的容器中,由事件触发、短暂的。当开发一个Web应用时,会需要一些服务端的定制,可能由一个Faas形成提供服务,也可能由多个Faas一起形成调用Chain关系来完成。


六、技术方案

1、开发者直接开发在云端业务代码,实现Faas

2、实现API网关,对用API代表服务的入口,并进行治理

3、微服务架构

4、利用Docker容器技术部署运行微服务


七、Faas

1、功能上Faas就是不需要关心后台服务器或者应用服务,只需要关心自己的代码即可。Faas代替了点击处理服务器,甚至不需要一个一直运行的应用模块来处理。


2、Faas并不需要特定框架或库,可以使用任何语言。


3、没有应用服务需要部署,只需要上载代码到Faas提供者就足够了。意味着上载一个代码包(以zip或jar形式),然后调用API初始化此更新。


4、Faas功能如果使用本地状态,会有很多严格限制。简单说需要假设任何进程间或者主机状态对子进程都不可见,包括在RAM和写到本地盘上的状态。一般来说Faas功能要么是自然无状态,也就是提供纯功能调用,要么会使用数据库,Redis或者S3等来存放状态。


5、Faas一般会限制每个功能允许运行多长。Lambda最多5分钟。


八、Serverless Faas与Paas的区别

在使用方法上,都是基于API的调用,Serverless具备请求来了启动,请求结束就关闭,启动毫秒级的特点,对比Paas更轻量化。

在属性上,Paas为Serverless Faas提供更底层的集群管理、容器、调度、弹性扩容、Devops等能力。而Faas更偏业务向一些,更像是Saas。


以上是关于Baas与Serverless Faas的主要内容,如果未能解决你的问题,请参考以下文章

Serverless 入门学习

Serverless 入门学习

认识与设计Serverless

什么是serverless无服务?

理解serverless无服务架构原理

架构之:serverless架构