2016-08-10 37 views
0

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

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

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

User login service example

现在,流量为以下几点:

  1. 用户访问Web服务,该服务提供登录UI
  2. 用户输入电子邮件地址和密码,点击“登录”
  3. web服务发送POST请求到帐户服务,这是在account.example.org/api/
  4. 公布的帐户服务验证凭证和将结果返回给网络服务

这是一种在SOA中处理/构造服务的可接受方式(真的很简单)。如果是,我如何使用其他服务验证服务,这些服务不会公开/公开地访问网络(如帐户服务)?基本身份验证?或通过auth服务器?

我是否应该在api.example.org之类的东西上拥有所有的东西,而不是在其他子域(如account.example.org/api/)上的每个服务都带有相应的/api/端点?如果是的话,我该如何处理沉重的负载,或者如何扩展部分服务而不是整个API?

还有什么重要的是要留意?

当然,我也希望任何recommandations有关分布式SOA API的

回答

1

这个工作流草案的设计读数似乎确定一目了然,但主题是非常宽泛的,而不是琐碎简单的单一岗位覆盖。

  • 是的,基本身份验证可以肯定是一种方式去,一旦你通过 注册;
  • 我看到在这一点上不需要的子域,而是单独的API端点,如: api.example.org/accountapi.example.org/order
  • 除了在部署在多台机器的API(Web场这将扩展您的整个API),你可以下降回复查询大数据的呼叫的缓存;显然,帐户方案并不是一个好例子,但如果您要在这里提出很多请求,它们可能会扩展到api的其他部分;一个例外是试图暴力强制用户登录的安全攻击,在这种情况下,您可以在Web服务上设置某种验证码机制,并为您的api设置一些保护措施(拒绝来自同一ip超过某个阈值的连接,例如)
+0

感谢您的回答。为什么我想要使用不同的子域名的问题如下:我将如何在不同的机器上拥有不同的apis?因此,我基本上需要一个代理或类似的东西,然后将api.example.org/{resource}路由到内部域? –