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

Posted

技术标签:

【中文标题】基于 Akka 集群的微服务 API Gateway 模式实现【英文标题】:API Gateway pattern implementation for microservices based on Akka cluster 【发布时间】:2017-09-05 07:10:18 【问题描述】:

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

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

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

优点:

API Gateway 独立项目,具有自己的抽象

缺点:

API Gateway 项目中的两个平衡器,而不是那么快的代理

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

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

优点:

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

缺点:

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

哪个变体更可取或另一个最好?

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于基于 Akka 集群的微服务 API Gateway 模式实现的主要内容,如果未能解决你的问题,请参考以下文章

带有 API 网关的 AWS ECS 中基于路径的微服务路由

Akka 集群单例Cluster Singleton

基于spring-cloud的微服务API网关zuul

Akka(10): 分布式运算:集群-Cluster

使用 API 网关 Ocelot 与 Nginx 的微服务

基于Spring cloud gateway定制的微服务网关