我正在设计一个面向RESTful服务的架构web应用程序,以使其尽可能好地伸缩,并将不同类型的服务放在不同的机器上(将资源密集型操作与其他服务分开)。
我还希望用户能够访问他们的数据来制作自己的应用程序。我不确定我是否必须设计这些服务来向世界开放,所以这只是一个问题,让它们在一个web域(如AWS)上侦听,或者创建另一个服务来处理API请求。
对我来说,拥有安全的开放well服务是有意义的,但它确实增加了架构本身的复杂性,因为每个服务都变成了一个客户端,必须被同一套件中的其他服务识别(信任),就像我必须识别试图访问自己数据的第三方应用程序一样。
这是一种正确的SOA方法吗?我想确定的是,我没有混淆错误的概念来设计一个错误的面向服务的体系结构。
所有服务都有crud接口,因此可以使用REST原则进行查询。
发布于 2012-10-07 20:57:14
根据您系统的性质,拥有不安全的may服务可能是可行的,这样它们都可以在没有安全开销的情况下相互通信。要使服务对第三方可用,您可以使用Service Perimeter Guard作为从外部访问服务的唯一机制,并在这一层应用安全性。这样做的好处是为您的所有服务提供一致的安全性,但是,如果边界被破坏,则可以访问所有服务。
这种方法可能并不适用于所有服务。例如,被认为是“个人保密”的信息(例如,诸如家庭地址、紧急联系方式、健康数据等的雇员数据)将需要受到保护,以便未经授权的工作人员不能访问它。
关于您关于将不同服务放在不同机器上的评论,这将导致某些机器上的资源未得到充分利用,而其他机器上的资源可能被过度利用。要避免这种情况,请将所有服务部署到所有计算机并使用负载均衡器。这将提供更优化的资源使用并简化部署(例如,使用Chef或Puppet),因为所有节点都是相同的。随着资源使用量的增加,您可以简单地添加更多节点。同样,如果资源使用率较低,则可以删除节点。
关于你的最后一句话,除了CRUD (比如HATEOAS),还有很多东西需要休息。
https://stackoverflow.com/questions/12761827
复制相似问题