我们建立了一个30M +用户的在线社区,它在后端提供RESTful服务,并使用它们的前端。 我担心的是:使用REST作为内部数据传输协议是否可以,或者与Java的二进制序列化协议(取决于语言)相比,它会显着降低性能?还可以使用哪些其他方法/协议来保持语言独立性和最快速度?
答案 0 :(得分:3)
REST方法可以很好,但http层可以减慢速度。 如果您在后端使用REST,则应确保后端和前端之间的连接保持打开状态,并且不会随每个请求重新打开。
有关http keep-alive的更多详细信息,请访问:http://en.wikipedia.org/wiki/HTTP_persistent_connection
答案 1 :(得分:2)
在做出决定之前,您必须先测量和比较这些内容。这取决于传输的信息,频率等。序列化可能不是瓶颈。但是,在这个范围内考虑Protocol Buffers是个好主意。
答案 2 :(得分:2)
REST为前端层和后端层提供的一个优势是可以灵活地在其间添加一层HTTP缓存,以提高性能,而无需修改任何现有层。对于扩展后端的负载平衡也是如此,因为HTTP负载均衡器非常易于理解且易于部署。
REST的这两个好处可以带来比传统的RPC序列化技术更大的优势,具体取决于具体情况,特别是如果您有“缓慢”的后端进程,可以从缓存或负载平衡中受益。
REST胜出的另一个地方是,如果您需要使用后端服务扩展客户端基础(我认为您暗示了语言独立性的愿望)。基于REST的服务层不仅可以让您自由地混合使用客户端语言,而且还可以让您轻松地向第三方开发人员轻松打开API,而且几乎不需要额外的努力。已经证明,为其他人构建平台已经证明作为一种商业模式非常成功,并且保持开发尽可能开放和灵活永远不会受到伤害。