通过ESB公开API的最佳方法是什么?

时间:2013-11-20 00:51:12

标签: api soa esb

目前,我们有许多组件在REST和SOAP上公开其API,并且还存在Web应用程序的数量。下面是使用示例域模拟某些端点的一些端点的高级视图,将是example.com

restsvc.example.com/v2 --ELB ---> | svr1.example.com/v2 |

soapsvc.example.com/v3 --ELB ---> | svr2.example.com/v3 |

corpwebapp.example.com --ELB ---> | svr1.example.com/someapp/index.html |

ncorpwebapp.example.com --ELB ---> | svr2.example.com/anotherapp/index.html |

为了解决各种使用场景,我们引入了ESB,现在所有这些API甚至Web应用程序都通过ESB进行代理。

restsvc.example.com/v2 -ELB - > | esb.example.com:8280/service/v2 | - > | svr1.example.com/v2 |

soapsvc.example.com/v2 -ELB - > | esb.example.com:8280 / service / v3 | - > | svr2.example.com/v3 |

corpwebapp.example.com -ELB - > | esb.example.com:8380 / someapp / index.html | - > | svr1.example.com/someapp/index.html |

nonwebapp.example.com -ELB - > | esb.example.com:8480 / someapp / index.html | - > | svr2.example.com/anotherapp/index.html |

所有这些公共api都指向ESB,但现在ESB已经在不同的端口和端点公开了这些API和Web应用程序。例如:现在v2 app使用path / service / v2

侦听端口8280

由于端点已更改,为了支持使用默认端口的现有端点,ELB必须满足这些要求。但这似乎与ELB紧密耦合,因为端口和路径之间需要进行一些转换。

我有几个问题

  1. 这是通过ESB公开apis的正确方法吗?
  2. 处理ELB级别的端口和路径是正常且正确的行为吗?
  3. AWS ELB是否有能力支持此要求?
  4. 如果问题一回答“否”,那么根据子域URL模式等将中介级逻辑路由到不同的服务器是否合适?

1 个答案:

答案 0 :(得分:0)

在分析了一些信息并通过专家反馈后,我们将介绍这些政策并在我们的基础架构中实施。

理想情况下,ESB应该侦听公共端口(80或443)。然后,它应该查看请求详细信息并将请求路由到各种应用程序。它可以根据内容类型,请求URL等进行路由。

当需要在ELB和ESB之间映射变体数量时,ELB会将请求转发给一个或多个ESB。配置更改应该是简约的。问题中引入的实现在ELB端绑定了一些核心映射逻辑。可以更改ESB中的内部路由逻辑以满足此类要求。