如何用Serverless 架构去构建单体和微服务应用?
"静态页面和站点适合用于内容少、更新频率低的场景,反之,就需要动态站点了。比如 淘宝的商品页面,采用静态页面方式管理商品信息是不现实的。如何根据用户请求动态地返 回结果呢?我们来看两种常见的解决方案: Web 单体应用:所有的应用逻辑都在一个应用中完成,结合数据库,这种分层架构可 以快速实现一些复杂度较低的应用; 微服务应用:随着业务发展,功能多了,访问量高了,团队大了,这时候一般就需要将 单体应用中的逻辑拆分成多个执行单元,比如商品页面上的评论信息、售卖信息、配送 信息等,都可以对应一个单独的微服务。这种架构的好处是每个单元是高度自治的,易 于开发(比如使用不同技术)、部署和扩展。但是这种架构也引入了分布式系统的一些 问题,如服务间通信的负载均衡、失败处理等。 处在不同阶段不同规模的组织可以选择适合自身的方式,来解决它面临的首要业务问 题,淘宝最初被人们接受一定不是因为它使用了哪种技术架构。但是无论选择哪种架构,上 面提到的 Serverless 原生心智都有助于我们专注业务。比如: 是否需要自己购置服务器安装数据库,实现高可用、管理备份、升级版本等,还是可以 把这些事情交给托管的服务如 RDS;是否可使用表格存储、Serverless HBase 等 Serverless 数据库服务,实现按使用的弹性扩容缩容和付费; 单体应用是需要自己购置服务器运行,还是可以交给托管服务,如函数计算和 Serverless 应用引擎; 是否可以通过函数来实现轻量级微服务,依赖函数计算提供的负载均衡、自动伸缩、按 需付费、日志采集、系统监控等能力; 基于 Spring Cloud、Dubbo、HSF 等实现的微服务应用是否需要自己购置服务器 部署应用,管理服务发现,负载均衡,弹性伸缩,熔断,系统监控等,还是可以将这些 工作交给诸如 Serverless 应用引擎服务。 架构引入了 API 网关、函数计算或者 Serverless 应用引擎来实现计算 层,将大量的工作交给了云服务完成,让用户最大程度上专注实现业务逻辑。其中系统内部 多个微服务的交互如下图所示,通过提供一个商品聚合服务,将内部的多个微服务统一呈现 给外部。这里的微服务可以通过 SAE 或者函数实现。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。