课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
Serverless架构随着互联网的不断发展而被越来越多的程序员学习并应用到不同软件开发项目之中,而本文我们就通过案例分析来简单了解一下,Serverless架构是否可以替代微服务架构。
人们在理解Serverless时,"FunctionasaServices(FaaS)"的概念很容易与编程语言中的函数语句相混淆。目前,我们正在处在一个没有办法划出完美界限的时期,但经验表明,使用非常小的Serverless函数并不是一个好主意。
当你决定将一个(微)服务分拆成独立的功能时,你就将不得不面对Serverless难题。因此,在此提醒,只要有可能,将相关的逻辑保持在一个函数中会好很多。
当然,决策过程也应该考虑拥有一个独立的微服务的优势
你可以这样设想:"如果我把这个微服务分拆出来......
它能让不同的团队独立工作吗?
能否从细粒度的资源分配或选择性的扩展能力中获益?
如果不能,你应该考虑将这个服务与另一个需要类似资源、上下文关联并执行相关Workload的服务捆绑在一起。
松耦合的架构
通过组成Serverless函数来协调微服务的方法有很多。
当需要同步通信时,可以直接调用(即AWSLambdaRequestResponse调用方法),但这会导致高度耦合的架构。更好的选择是使用LambdaLayers或HTTPAPI,这样可以让以后的修改或迁移服务对客户端不构成影响。
对于接受异步通信模型,我们有几种选择,如队列(SQS)、主题通知(SNS)、EventBridge或者DynamoDBStreams。
跨组件隔离
理想情况下,微服务不应向使用者暴露细节。像Lambda这样的Serverless平台会提供一个API来隔离函数。但这本身就是一种实现细节的泄露,理想情况下,我们会在函数之上添加一个不可知的HTTPAPI层,使其真正隔离。
使用并发限制和节流策略的重要性
为了减轻DDoS攻击,在使用AWSAPIGateway等服务时,一定要为每个面向公众的终端设置单独的并发限制和节流策略。这类服务一般在云平台中会为整个区域设置全局并发配额。如果你没有基于端点的限制,攻击者只需要将一个单一的端点作为攻击目标,就可以耗尽你的配额,并让你在该区域的整个系统瘫痪。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。