2017-04-10 24 views
0

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

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

    Load balancer  
        -> API Gateway project 
        -> Load balancer 
         -> Microcervice read part 
         -> Database 
         -> Microcervice write part 
         -> Akka cluster 
    

优点:

API网关与自己的抽象

缺点单独的项目:

两个均衡,并没有那么快的代理在API网关项目

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

    Load balancer 
        -> Microcervice read part (with public API) 
        -> Database 
        -> Microcervice write part (with public API) 
        -> Akka cluster 
    

优点:

  1. 直接访问群集和数据库
  2. 快速响应

缺点:

复杂的微服务部分,混合图层

什么变体更可取或者是另一个最好?

回答

0

签出Kong项目,在他们的github page上有一个很好的图表,展示了你想如何考虑一个API网关。你也可以考虑使用它们来实现。