Serverless架构下的Elasticsearch探索:查询与写入、计算与存储的分离
在serverless架构下,用户只需关注业务逻辑,无需管理服务器,云提供商负责置备、维护和扩展服务器基础架构等例行工作,云提供商对用户进行按量计费。
Serverless 的定义
Serverless 不如 IaaS 和 PaaS 那么好理解,因为它通常包含了两个领域 BaaS(Backend as a Service)和 FaaS(Function as a Service)。
BaaS
BaaS(Backend as a Service)后端即服务,一般是一个个的 API 调用后端或别人已经实现好的程序逻辑,比如身份验证服务 Auth0,这些 BaaS 通常会用来管理数据,还有很多公有云上提供的我们常用的开源软件的商用服务,比如亚马逊的 RDS 可以替代我们自己部署的 MySQL,还有各种其它数据库和存储服务。
FaaS
FaaS(Functions as a Service)函数即服务。FaaS本质上是一种事件驱动的由消息触发的服务,FaaS供应商一般会集成各种同步和异步的事件源,通过订阅这些事件源,可以突发或者定期的触发函数运行。
优点
-
可运维性:无需管理服务器,比如操作系统的安全补丁升级、故障升级、高可用性,这些云服务(OSS,CDN)都帮着做了;
-
可扩展性:无需对资源做预估和考虑未来的扩展。横向扩展是完全自动的、有弹性的、且由服务提供者所管理
-
成本:按实际使用的资源付费,包括存储费用和请求费用,没有请求时不收取请求费用,通过使用iaas时是申请固定数量的服务器,即使低峰期服务器没有流量,也需要付费;运营成本也会降低,由于这个云服务使用者的数量会非常庞大,于是就会产生规模经济效应;服务的储存和计算被分开部署和收费
-
安全性:这样一个系统甚至看不到服务器,不需要通过 SSH 登录,DDoS 攻击也交给云服务来解决。
缺点
- 影响灵活性,不能做定制化的配置
- 受制于供应商技术锁定。即便您决定要更换提供商,也可能需要升级系统以符合新供应商的规范,而这无疑会增加成本。