【发布时间】:2018-07-31 08:30:50
【问题描述】:
我正在尝试构建一个实现简单搜索功能的服务集合。我有服务 A、B、C 和 D。A 充当 B、C 和 D 的外观和聚合器。
所以客户端会调用 A 来搜索某些东西。然后,A 将调用 B、C 和 D,并在获得所有数据后聚合来自它们的数据,然后以同步模式返回响应。
我已经开始使用 AWS Lambda 和 Api Gateway 实施这些服务。目前 A 有一个名为 B 的环境变量,我用它在 A 内部调用 B。我希望 A 在运行时发现 B,因为将来我们可能会将其他服务添加为 E 或 F,或者可能删除一些服务和我不想修改A的代码。
我已经阅读了 here 和 here 关于某些人希望在亚马逊生态系统中拥有的功能。我还阅读了 Martin Fowler 建议 here 的发现部分。
因此,根据我对异步调用的理解,最好的方法应该是使用 SNS 并拥有发布者/订阅者。对于同步调用,有些人建议使用 Api Gateway。我真的不喜欢在每个 lambda 函数(B、C 和 D)前面都有一个 Api 网关。另一个问题是如何实现服务注册。我希望在添加和删除 A 使用的服务方面具有一定的灵活性。
目前我的想法是将必须用作参数的服务存储在每个环境的 System Manager Parameter Store 中。然后让 A 查询商店并为每个函数名调用它。
可以将 System Manager Parameter Store 用作服务注册表吗?如果没有,你能指出我正确的方向吗?
【问题讨论】:
标签: amazon-web-services service aws-lambda serverless service-discovery