2012-01-16 35 views
0

项目要求:REST或SOAP的高交易量和大数据项目

我需要建立一个将收到的文本数据块,任何地方从几KB高达10兆字节的网络服务,但平均徘徊在几百千字节左右。会有大量的交易,我希望通过身份验证,SSL和最终的一些加密来保护服务。

我希望服务支持XML和JSON,如果可能的话,我想用开源工具 - 很可能是PHP/MySQL来构建它。

有关可能的PHP框架的建议值得欢迎。

我已经开始使用Tonic框架在PHP中构建REST Web服务的路径,但我认为我可能会受限于可以在URI中发布的数据量以及在URL中发布如此多的数据听起来很麻烦。所以我一直在看SOAP解决方案。

问题:

上午我的数据,我可以张贴到一个REST服务量的限制?

SOAP协议是否存在数据限制?

您是否建议我根据项目需求使用SOAP或REST,为什么?

回答

2

无论您是使用REST架构还是使用通过HTTP隧道传输的SOAP协议,HTTP在协议级别都完全不受限制。

您的主要限制是内存,尤其是如果您要传输几个数兆字节的有效负载。使用一个足够聪明的处理程序和一个兼容的请求,您可以选择在处理之前将较小的请求直接传输到内存,将较大的请求直接传输到磁盘。

像这样的细节可能会限制你选择的框架可以为你做多少,因为大多数可能会直接进入内存。无论你是否可以改变这种状况,或者根据请求提出请求,都取决于框架,并可能希望改变它。

SOAP作为协议的选择可能不相关。它只是一个简单的XML信封,除非您也选择使用SOAP编码对消息进行编码。

既然您也想支持JSON,那么SOAP堆栈可能只会阻碍原始HTTP处理后端。

你没有提到你的API的复杂性,但你可能会用一个框架来解决大部分问题,并且为大型的重要事务编写一个自定义处理程序。

您的每秒交易量不会很高,因为交易本身会非常大。如果你正在流入磁盘,你也会有很大的I/O影响(不管怎么样,除非你将RAM中的数据转换并从插槽中分离出来,而不是保存它) 。所以,I/O吞吐量可能会成为您的主要瓶颈,因为它会限制您的整体性能。

如果你从消费者那里获得上传,你可能会得到每秒大约150K字节(例如大量消费者上传速度)。如果您有一个可以推动的I/O通道,例如持续60MB /秒,那就是400个同时连接。所以,这应该能让你对基于预期交易量的机器扩展有所了解(当然,你已经完成了这个分析 - 我只是在做这件事情)。每笔交易上传300K,这是每笔交易2美元,所以200 TPS。这是另一个可用的数字(根据您的数据库可能支持的数据等等,特别是如果您将有多台机器供应它时)。

现代的CPU很恶心,所以PHP或其他应该没问题 - 这不会是你的问题。

+0

也许我误解了这个过程,但是REST有效载荷没有作为HTTP/S上的URL的一部分传播,因此将如下所示:http://site.com/action/?var= { 3:{foo:“bar”}}?我认为SOAP背后的想法是,有效载荷被封装,并没有作为URI的一部分。我想这可能是我困惑的地方。如果这种情况不明显,我对此不熟悉......我关心在URL中推送大量数据。 – skub 2012-01-16 13:35:40