AWS服务设计和微服务

时间:2018-12-24 01:48:05

标签: amazon-web-services rest microservices

我很好奇AWS服务的设计方式。例如,采用S3之类的服务及其REST API:https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html

此服务的端点有 alot 个,涵盖了“ S3服务”的全部功能。但是,在幕后,肯定是许多微服务的集合,至少这就是我的想法。

有人对此有任何见识吗?您可以使用一种常见的设计模式将我指向顶层服务层,其中封装了对多个微服务的单个调用(如果事实上,这就是它们在做什么)?

谢谢。

1 个答案:

答案 0 :(得分:3)

构建此类存储服务的典型模板基于中央请求代理,该代理与其他服务和专用数据库进行交互:

  • 存储代理处理来自S3 API用户的REST请求(但不仅来自用户,我们稍后还会看到)
  • 该经纪人利用其他服务来运行:
      例如,
    • 容器或计算云服务被代理用来处理服务存储节点或容器,
    • 某些数据库服务(通常是nosql flexible数据库)用于维护存储服务数据库,
    • 身份服务,使经纪人可以验证请求。
  • 此代理维护一些数据库:
    • 对象存储数据库,为用户维护长期存储对象,
    • 一个帐户数据库,其中包含有关所有者和对存储在对象库中的对象的访问权的特定信息,
    • 一个存储策略数据库,用于根据用户和对象类型维护服务级别,功能和行为。

经纪人既为用户提供服务,也为其他一些服务:

  • 计算服务可以使用对象存储服务来维护其配置和状态:计算服务将REST请求发送到存储服务,
  • 仪表板服务可以使用对象存储服务来维护数据收集,

进一步研究开源存储服务的某些实现,例如OpenStack Swift模块,可以帮助您基于其他微服务找到用于实现这种服务的通用设计模式。例如,您可以查看本指南的1.2.2节:https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/10/pdf/architecture_guide/Red_Hat_OpenStack_Platform-10-Architecture_Guide-en-US.pdf

S3与Swift非常相似,因为相应的API之间存在一些网关。

下面是带有这种模式的图:

object storage service pattern