提交 8bd8bdd9 编写于 作者: H HexToString

update http

上级 22072484
...@@ -12,7 +12,7 @@ BRPC-Server会尝试去JSON字符串中再去反序列化出Proto格式的数据 ...@@ -12,7 +12,7 @@ BRPC-Server会尝试去JSON字符串中再去反序列化出Proto格式的数据
### Http+protobuf方式 ### Http+protobuf方式
各种语言都提供了对ProtoBuf的支持,如果您对此比较熟悉,您也可以先将数据使用ProtoBuf序列化,再将序列化后的数据放入Http请求数据体中,然后指定Content-Type: application/proto,从而使用http/h2+protobuf二进制串访问服务。 各种语言都提供了对ProtoBuf的支持,如果您对此比较熟悉,您也可以先将数据使用ProtoBuf序列化,再将序列化后的数据放入Http请求数据体中,然后指定Content-Type: application/proto,从而使用http/h2+protobuf二进制串访问服务。
实测随着数据量的增大,使用JSON方式的Http的数据量和反序列化的耗时会大幅度增加,推荐当您的数据量较大时,使用Http+protobuf方式,后续我们会在框架的HttpClient中增加该功能,目前暂没有支持。
**理论上讲,序列化/反序列化的性能从高到底排序为:protobuf > http/h2+protobuf > http** **理论上讲,序列化/反序列化的性能从高到底排序为:protobuf > http/h2+protobuf > http**
...@@ -109,7 +109,7 @@ repeated int32 numbers = 1; ...@@ -109,7 +109,7 @@ repeated int32 numbers = 1;
### Http压缩 ### Http压缩
支持gzip压缩,但gzip并不是一个压缩解压速度非常快的方法,当数据量较小时候,使用gzip压缩反而会得不偿失,推荐至少数据大于512字节时才考虑使用gzip压缩。 支持gzip压缩,但gzip并不是一个压缩解压速度非常快的方法,当数据量较小时候,使用gzip压缩反而会得不偿失,推荐至少数据大于512字节时才考虑使用gzip压缩,实测结果是当数据量小于50K时,压缩的收益都不大
#### Client请求的数据体压缩 #### Client请求的数据体压缩
......
...@@ -142,6 +142,15 @@ class HttpClient(object): ...@@ -142,6 +142,15 @@ class HttpClient(object):
else: else:
self.http_timeout_ms = http_timeout_ms self.http_timeout_ms = http_timeout_ms
def set_ip(self, ip):
self.ip = ip
def set_service_name(self, service_name):
self.service_name = service_name
def set_port(self, port):
self.port = port
def set_request_compress(self, try_request_gzip): def set_request_compress(self, try_request_gzip):
self.try_request_gzip = try_request_gzip self.try_request_gzip = try_request_gzip
...@@ -295,9 +304,10 @@ class HttpClient(object): ...@@ -295,9 +304,10 @@ class HttpClient(object):
raise ValueError( raise ValueError(
"feedvar is string-type,feed, feed can`t be a single int or others." "feedvar is string-type,feed, feed can`t be a single int or others."
) )
# 如果不压缩,那么不需要统计数据量。
total_data_number = total_data_number + data_bytes_number( if self.try_request_gzip:
data_value) total_data_number = total_data_number + data_bytes_number(
data_value)
Request["tensor"][index]["elem_type"] = elem_type Request["tensor"][index]["elem_type"] = elem_type
Request["tensor"][index]["shape"] = shape Request["tensor"][index]["shape"] = shape
Request["tensor"][index][data_key] = data_value Request["tensor"][index][data_key] = data_value
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册