2

我正在设计一个 RESTful Service Oriented Architecture Web 应用程序,以使其尽可能地扩展,并将不同类型的服务放在不同的机器上(将资源密集型操作与其他服务分开)。

我还希望用户能够访问他们的数据来制作自己的应用程序。我不确定是否必须将这些服务设计为向世界开放,因此只需让它们在 Web 域(如 AWS)上侦听或创建另一个服务来处理 API 请求。

拥有安全的开放式 Web 服务对我来说是有意义的,但它确实给架构本身增加了很多复杂性,因为每个服务都成为必须被同一套件中的其他服务识别(信任)的客户端,就像我一样必须识别试图访问自己数据的 3rd 方应用程序。

这是正确的 SOA 方法吗?我想确定的是,我没有混合错误的概念来设计错误的面向服务的架构。

所有服务都有 crud 接口,因此可以使用 REST 原则对其进行查询。

4

1 回答 1

0

根据您系统的性质,拥有不安全的 Web 服务可能是可行的,因此它们都可以在没有安全开销的情况下相互通信。为了使服务可供第三方使用,您可以使用服务外围防护作为从外部访问服务并在此层应用安全性的唯一机制。这样做的好处是为您的所有服务提供一致的安全性,但是如果外围受到损害,则可以获得对所有服务的访问。

这种方法可能不适用于所有服务。例如,被认为是“个人机密”的信息(例如,家庭住址、紧急联系方式、健康数据等员工数据)需要得到保护,以便未经授权的员工无法访问它。

关于您将不同服务放在不同机器上的评论,这将导致某些机器上的资源利用不足,而另一些机器上的资源可能过度利用。为避免这种情况,请将所有服务部署到所有机器并使用负载均衡器。这将提供更优化的资源使用并简化部署(例如,使用 Chef 或 Puppet),因为所有节点都是相同的。随着资源使用量的增加,您可以简单地添加更多节点。同样,如果资源使用率低,您可以删除节点。

关于您的最后一句话,REST 比 CRUD(例如 HATEOAS)要多得多。

于 2012-10-07T12:57:13.550 回答