我正在尝试构建实现简单搜索功能的服务集合。我有服务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所使用的服务时具有一定的灵活性。
当前,我在想的是将必须用作参数的服务存储在每个环境的系统管理器参数存储中。然后让A查询存储,并为每个函数名称调用它。
可以将系统管理器参数存储用作服务注册表吗?如果不能,您能指出我正确的方向吗?