1. 什么是微服务?

微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的 API 进行通信的小型独立服务组成。这些服务由各个小型独立团队负责。

微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间。

2. 整体式架构与微服务架构

通过整体式架构,所有进程紧密耦合,并可作为单项服务运行。这意味着,如果应用程序的一个进程遇到需求峰值,则必须扩展整个架构。随着代码库的增长,添加或改进整体式应用程序的功能变得更加复杂。这种复杂性限制了试验的可行性,并使实施新概念变得困难。整体式架构增加了应用程序可用性的风险,因为许多依赖且紧密耦合的进程会扩大单个进程故障的影响。

使用微服务架构,将应用程序构建为独立的组件,并将每个应用程序进程作为一项服务运行。这些服务使用轻量级 API 通过明确定义的接口进行通信。这些服务是围绕业务功能构建的,每项服务执行一项功能。由于它们是独立运行的,因此可以针对各项服务进行更新、部署和扩展,以满足对应用程序特定功能的需求。
通过整体式架构,所有进程紧密耦合,并可作为单项服务运行。这意味着,如果应用程序的一个进程遇到需求峰值,则必须扩展整个架构。随着代码库的增长,添加或改进整体式应用程序的功能变得更加复杂。这种复杂性限制了试验的可行性,并使实施新概念变得困难。整体式架构增加了应用程序可用性的风险,因为许多依赖且紧密耦合的进程会扩大单个进程故障的影响。

使用微服务架构,将应用程序构建为独立的组件,并将每个应用程序进程作为一项服务运行。这些服务使用轻量级 API 通过明确定义的接口进行通信。这些服务是围绕业务功能构建的,每项服务执行一项功能。由于它们是独立运行的,因此可以针对各项服务进行更新、部署和扩展,以满足对应用程序特定功能的需求。
AWS 上的微服务 - 图1

3. AWS 上的微服务

AWS 上有一套完整的服务来支持微服务:

  • 微服务的计算服务:
    • 容器 Amazon Elastic Container Service:一种可高度扩展的高性能容器管理服务,支持 Docker 容器,可让您轻松地在 Amazon EC2 实例的托管集群上运行应用程序。
    • 无服务器 AWS Lambda:通过 AWS Lambda,无需预置或管理服务器即可运行代码。只需上传您的代码,Lambda 会管理运行和扩展高可用性代码所需的一切工作。
  • 微服务的存储与数据库服务:
    • NoSQL 数据库 Amazon DynamoDB:一项快速灵活且完全托管的 NoSQL 数据库服务,适合所有需要一致性且延迟低于 10 毫秒的任意规模的应用程序。
    • **关系数据库 Amazon RDS、:在云中轻松设置、操作和扩展关系数据库。有六种常见的数据库引擎可供选择,其中包括 Oracle、Microsoft SQL Server、PostgreSQL、MySQL 和 MariaDB。
    • 缓存 Amazon ElastiCache:允许您从快速的托管内存缓存中检索信息,而无需完全依赖于速度较慢的基于磁盘的数据库,从而提高了服务性能。
    • 对象存储 Amazon S3:为开发人员和 IT 团队提供适用于所有数据(无论大小)的高度可靠、安全且可扩展的对象存储。
  • 网络服务:
    • 服务发现 AWS Cloud Map:是一种针对所有云资源的服务发现功能。借助 Cloud Map,您可以为应用程序资源定义自定义名称,并维护这些动态变化资源的更新位置。
    • 服务网格 AWS App Mesh:使您可以轻松监控和控制运行于 AWS 上的微服务。App Mesh 标准化了微服务的通信方式,为您提供端到端的可见性,并有助于确保应用程序的高可用性。
    • 负载均衡
      • 应用负载均衡器 Application Load Balancer:对应用程序层(第 7 级)的 HTTP 和 HTTPS 流量进行负载均衡,面向交付包括微服务和容器在内的现代应用程序架构,提供高级请求路由功能。
      • **网络负载均衡器 :网络负载均衡器提供高性能负载均衡,在网络连接层(第 4 级)运行,并且允许您根据 IP 协议数据路由到微服务的连接。网络负载均衡器每秒可以处理数百万个请求,同时保持超低延迟。
    • API 代理 Amazon API Gateway:为 API 管理提供了一个综合平台。借助 Amazon API Gateway,您可以处理成千上万个并发 API 调用和流量管理、授权、访问控制、监控以及 API 版本管理。
    • DNS Amazon Route 53:是一种具备高可用性和可扩展性的云域名系统 (DNS) Web 服务,可将请求有效连接到在 AWS 中运行的基础设施。它可用于微服务的 IP 运行状况检查和服务发现。
  • 微服务的消息收发服务(发布和协调进程间的通信):
    • 消息发布和订阅 Amazon Simple Notification Service (Amazon SNS):Amazon SNS 是一种完全托管的发布/订阅消息收发服务,可轻松分离和扩展微服务、分布式系统和无服务器应用程序。
    • 消息队列 Amazon Simple Queue Service (Amazon SQS):Amazon SQS 是一种完全托管的消息队列服务,可让您轻松分离和扩展微服务、分布式系统和无服务器应用程序。
  • 微服务的日志记录和监控(监控服务性能和资源利用率。跟踪复杂的架构,以进行问题排查和优化)
    • API 监控 AWS CloudTrail:借助 CloudTrail,您可以记录日志、持续监控并保留与整个基础设施中的操作相关的账户活动。CloudTrail 事件历史记录可以简化安全性分析、资源更改跟踪和问题排查工作。
    • 应用程序和资源监控 Amazon CloudWatch:使用 Amazon CloudWatch 来收集和跟踪各项指标、收集和监控日志文件、设置警报,以及自动应对正在运行的服务和 AWS 资源中的更改。
    • 分布式跟踪 AWS X-Ray:可在请求通过应用程序时提供请求的端到端视图,并展示应用程序底层组件的映射。由于一组微服务协同工作才能处理请求,因此 AWS X-Ray 可以帮助您集中浏览日志,从而监控复杂的交互并对其进行故障排除。
  • 微服务的开发运营(管理从提交到运行的代码生命周期)
    • 容器映像存储库 Amazon Elastic Container Registry (Amazon ECR):一种完全托管的 Docker 容器注册表,可用于存储、管理和部署 Docker 容器映像。Amazon ECR 与 Amazon Elastic Container Service (Amazon ECS) 集成,从而简化容器生产工作流程的开发。
    • 持续交付 AWS 开发人员工具:AWS 开发人员工具是一组服务,利用这些服务,模拟开发运营的开发人员和 IT 运维专业人员可以快速安全地交付软件。这些服务结合起来,可以帮助您安全地存储应用程序的源代码并对其进行版本控制,同时还可自动构建、测试应用程序并将其部署到 AWS 或您的本地环境中。