“无服务器/serverless是什么?”
“微服务器是什么?”
“FaaS是什么?”
这是笔者在研究时曾碰到过的一些问题。看了大神们的解答,理解如下。理解可能略有浅薄,之后会不断学习持续更新:
1. 无服务器/serverless是什么?
- 服务器是什么?
1)“高配版”计算机。是计算机的一种,结构差不多,需要cpu、硬盘、内存等。更高配,运算能力、数据存库空间更强,使其能在短时间内完成大量工作及负载大量的文件资料存储。
2)作用:在网络中为其它机器提供计算或应用服务。
3)配套技术:①服务器需要7*24小时工作,需要稳定性技术RAS(可靠性、可用性和可维护性,Reliability, Availability and Serviceability);②ECC,修正错误存储器;③服务器OS,Linux发行版(红帽企业Linux、SUSE)、Windows Server等
4)分类:网页服务器(Web server)、FTP服务器(FTP server)、邮件服务器(mail server)...
2. 分布式架构是什么?微服务器是什么?无服务器是什么?
一种架构。此外还有分布式架构、微服务架构、单体架构
1)分布式架构:将一个系统分为多个业务模块,不同模块部署在不同的服务器
分布式=多个模块分布在多个server
优点:有负载均衡能力,防高并发;解耦、系统扩展方便
缺点:系统之间需要远程通信,接口开发工作量大
现实中架构不会那么简单。稍微复杂一些的话:
2)微服务架构:进一步拆解模块,变成很多小应用/微服务。微服务部署在服务器或(同一个服务器的)容器上。代表框架有Spring cloud、Dubbo等
优点:易于开发和维护、开发和交付节奏加快;容易改;易拓展;团队权责清晰
缺点:运维成本高,因为应用实例变多;接口调整成本高;一些功能重复管理
出现微服务治理赛道:微服务之间的通信、调用链的跟踪管理、状态监控、错误跟踪排查等
3)Serverless:开发者不用管底层服务器、资源。需要用的时候直接找“平台”,获得计算资源。按调用次数计费
和其它架构的核心区别:别的架构需要申请一定数量、规格(CPU、内存、存储空间)的服务器。serverless不需要用户申请,有需要平台自动分配(“事件驱动”)
不等于没有服务器。而是用户无需在意是否有服务器,以及服务器运维
优点:简化设备运维,应用和服务器解耦,不用维护基础设施;开发速度提高;降低运营成本
缺点:vendor-lock-in,和云厂商绑定。例如用AWS的serverless,只能用AWS的数据库
技术尚不成熟,缺少成功案例和行业标准
遗留问题:现在主流的是什么?微服务?
3. Serverless怎么用?FaaS是什么?
Serverless本质上是个“理念”。实现的方法之一是用云厂商提供的FaaS服务
Function-as-a-Service,"函数即服务"
什么是函数?
有个输入,需要一定处理,获得输出。所有应用开发本质上就是写“函数”
什么是FaaS?
是个计算平台。写应用/程序的开发者,可以直接写&跑函数,不用管服务器、资源等
产品是什么?
包括:AWS Lambda(最早的)、Azure Functions、Google Cloud Functions、腾讯云 Serverless Cloud Fucntion...
给谁用?
绝大多数程序、服务都能改成FaaS
遗留问题:
serverless需要FaaS+BaaS。BaaS是什么?
如何构建一个serverless的应用case?
参考资料:感谢各位大神答疑!
四种软件架构,看看你属于哪个层次,https://www.jianshu.com/p/e7b992a82dc0
【Faas科普】云计算的未来: Serverless/Faas https://www.youtube.com/watch?v=EixgGyxbIWY