分布式SOA结构&设计

时间:2016-08-10 13:50:08

标签: web-services rest authentication soa restful-architecture

所以基本上我正在计划重新启动已经建立的产品。该产品目前仅基于一大块,我想将其划分为单个服务,可以单独扩展。我已经挖掘了一段时间,但我找不到任何关于如何正确构建/设计SOA应用程序的良好输入。

以登录为例,以下设置是否是正确/可接受的处理登录方式?

  • Web服务,基本上处理所有传入流量
  • 处理用户身份验证的帐户服务

User login service example

现在流程如下:

  1. 用户访问提供登录UI的Web服务
  2. 用户输入电子邮件和密码,点击“登录”
  3. 网络服务向帐户服务发送POST请求,该请求已在account.example.org/api/
  4. 上发布
  5. 帐户服务验证凭据并将结果返回给Web服务
  6. 这是在SOA中处理/构建服务的可接受方式(真的很简单)。如果是,我如何使用其他服务对服务进行身份验证,这些服务不会公开/可访问网络(如帐户服务)?基本认证?或者通过auth服务器?

    我是否应该使用api.example.org之类的内容而不是具有相应account.example.org/api/端点的不同子域(如/api/)上的每项服务?如果是,我如何处理重负载或如何扩展部分服务而不是整个API?

    要注意什么其他重要事项?

    当然,我也非常感谢有关设计分布式SOA API的读物的任何建议

1 个答案:

答案 0 :(得分:1)

这个工作流草案一目了然,但这个主题非常广泛,并且在一个简单的单一帖子中也不容易。

  • 是的,一旦你过去,Basic Auth肯定是一种方法 注册;
  • 此时我认为不需要子域名,而是单独的api端点,例如: api.example.org/accountapi.example.org/order
  • 除了在多台计算机(一个可扩展整个api的Web场)上部署api之外,您还可以使用查询大数据的呼叫进行缓存;显然,帐户方案不是一个很好的例子,但如果你在这里有很多请求,他们可能会扩展到api的其他部分;一个例外是尝试强制用户登录的安全攻击,在这种情况下,您可以在Web服务上设置某种验证码机制,并为您的api提供一些保护(拒绝来自相同IP的连接超过某个阈值,例如)