基于Akka集群的微服务的API网关模式实现

时间:2017-04-10 09:42:16

标签: api design-patterns akka microservices

我尝试使用CQRS创建一些基于Akka的微服务。所以我的微服务用Http端点写入(向集群发送命令)和读取端(从数据库读取预测),但这不是主要问题。由于许多微服务,出现了为客户收集复杂API的问题。我找到了答案:API网关模式。但我有下一个问题:我该如何实施呢?

  1. 我可以创建单独的项目,它将实现API网关模式(在简单的情况下,它是一个反向代理)。完整堆栈将是:

    Load balancer     
      -> API Gateway project 
        -> Load balancer 
          -> Microcervice read part
            -> Database 
          -> Microcervice write part
            -> Akka cluster 
    
  2. 优点:

    API Gateway将项目与自己的抽象分开

    缺点:

    两个平衡器,而不是API网关项目中的代理

    1. 在微服务部分实现的API网关(auth等),负载均衡器将在复杂的API中收集端点。完整堆栈将是:

      Load balancer
        -> Microcervice read part (with public API)
          -> Database 
        -> Microcervice write part (with public API)
          -> Akka cluster 
      
    2. 优点:

      1. 直接访问群集和数据库
      2. 快速回复
      3. 缺点:

        复杂的微服务部件,混合层

        哪种变体更优选或另一种更好?

1 个答案:

答案 0 :(得分:0)

查看Kong项目,它在github page上有一个很好的图表,显示了你想要如何考虑API网关。您也可以考虑将它们用于实施。