Web Service请求数据报文有木有限制

大清早,被产品汪问道Web Service接口的数据报文大小是多少?正在吃早餐的我被问了个措手不及,脑袋还算灵光的我反应过来Web Service是POST请求,应该是没有大小限制的,但是,怀抱严谨的态度,还是去谷歌求证了一下!

  • 首先,明确一下Web Service数据传输量最大是多少,理论上Web Service用的post方法是没有大小限制的,但是http服务器(比如tomcat、jetty)可能对接受数据大小有限制。实际上,传输大量的数据(比如几个G),很多现成能够调用的方法和函数库都会有限制。

如果你必须在网络上传输大量数据,条件允许的情况下,搭建SFTP服务器,先把产生的数据写入到一个本地文件,然后通过程序里的ftp命令把这个文件传到ftp服务器,与接口调用方约定好规则,去读SFTP服务器上传过来的文件。这样也是系统自动完成的,且ftp传输不会有大小限制。

  • 如果你不想搭建ftp服务器,基于如下几方面考虑:

主要性能还是取决于自身程度代码的性能

webservice ,用来传数据,1G的网卡基本可以达到80%的流量,再高容易丢包。

和服务器、网络都有关系。
网络是专线光纤,服务器不够可以加。如果真的需要实时交互,同时几百并发,传送数据可能不多(每次也就是一条或几条相关数据),但是不能丢包。
如果说考虑对方服务器挂掉导致数据丢失,可以考虑补偿机制啊,比如:设置标志位,若发送失败则重发。

  • 那就考虑从网络、服务器入手

搭建专线网络,比如专线光纤,单词发送2G数据没问题

  • 我们最常见的Nginx加Jetty的作为接入层和web容器,这两个开源软件都会限制body的大小,我们可以使用以下方式来修改这个限制来支撑我们自己的业务。

Jetty

Jetty的默认值为200k,我们可以在配置内修改这个默认设置,修改JETTY_HOME/etc/jetty.xml,对maxFormContentSize重新赋值,-1表示不限制,正数值表示所允许的最大bytes:

<Call class="java.lang.System" name="setProperty">    
         <Arg>org.mortbay.jetty.Request.maxFormContentSize</Arg>    
         <Arg>-1</Arg>    
</Call> 

Nginx

修改nginx目录下nginx.conf,在http模块中设置client_max_body_size便可,0为不设置,可以使用M作为单位:

http {   
    #......   
    client_max_body_size 300M;   
    #......   
}

Tomcat

默认限制为2097152bytes(2MB)。
修改默认限制值的方法如下:

修改tomcat的配置文件$TOMCAT_HOME$/conf/server.xml,找<Connector>节点,在该节点中添加”maxPostSize”属性,将该属性值设置成你想要的最大值(单位:byte,0表示不限制)。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值