我尝试使用CQRS创建一些基于Akka的微服务。所以我的微服务用Http端点写入(向集群发送命令)和读取端(从数据库读取预测),但这不是主要问题。由于许多微服务,出现了为客户收集复杂API的问题。我找到了答案:API网关模式。但我有下一个问题:我该如何实施呢?
我可以创建单独的项目,它将实现API网关模式(在简单的情况下,它是一个反向代理)。完整堆栈将是:
Load balancer
-> API Gateway project
-> Load balancer
-> Microcervice read part
-> Database
-> Microcervice write part
-> Akka cluster
优点:
API Gateway将项目与自己的抽象分开
缺点:
两个平衡器,而不是API网关项目中的代理
在微服务部分实现的API网关(auth等),负载均衡器将在复杂的API中收集端点。完整堆栈将是:
Load balancer
-> Microcervice read part (with public API)
-> Database
-> Microcervice write part (with public API)
-> Akka cluster
优点:
缺点:
复杂的微服务部件,混合层
哪种变体更优选或另一种更好?