python-如何减少通过REST API发送的数据的延迟

我有一个应用程序,可以从其他服务器之一获取JSON格式的数据.我面临的问题是,在请求此信息时会有很大的延迟.由于传递了很多数据(每个请求大约有1000条记录,而每个记录都非常大),因此可以通过压缩来降低速度.如果是这样,您将推荐哪种压缩方案.

我在另一个thread上读到,它们的数据模式对需要使用的压缩类型也很重要.数据模式是一致的,类似于以下内容

 :desc=>some_description
 :url=>some_url
 :content=>some_content
 :score=>some_score
 :more_attributes=>more_data

有人可以为我如何减少这种延迟推荐解决方案.他们延迟大约6-8秒.我正在使用Ruby on Rails开发此应用程序,并且提供数据的服务器大部分使用Python.

解决方法:

我首先来看一下这8s延迟中有多少与以下内容有关:

>服务器端处理(生成数据要花费多少)
有很多技术可以改善这一时间,包括:

>数据库索引
>缓存
>更快的to_json库

一些出色的资源是Rails可扩展性http://railslab.newrelic.com/2009/02/09/episode-7-fragment-caching上的NewRelic播客

>传输延迟(服务器和客户端之间发送数据要花费多少时间)

>如果密钥几乎相同,则可以从Compression algorithm for JSON encoded packets?开始实施解决方案;您可能需要查看http://wiki.github.com/WebReflection/json.hpack/specs-detailshttp://www.nwhite.net/?p=242
>除此之外,您还可以从前端服务器压缩(gzip)它
http://httpd.apache.org/docs/2.0/mod/mod_deflate.html
http://wiki.nginx.org/NginxHttpGzipModule
>如果数据结构是恒定的,并且您还可以尝试实现二进制服务,则二进制服务的速度要快得多,包括压缩,但维护起来也更困难,例如节俭:
http://www.igvita.com/2007/11/30/ruby-web-services-with-facebooks-thrift/
>如果这适合您的需求,也许您可​​以在服务器端进行某种版本控制/缓存系统,并仅发送已修改的记录(但实现起来很繁重)

上一篇:PHP-如何判断ob_gzhandler是否正常工作?


下一篇:使用Docker快速搭建Zookeeper和kafka集群