Sid*_*Sid 4 python compression networking latency ruby-on-rails
我有一个应用程序,它从我们的其他服务器之一获取 JSON 格式的数据。我面临的问题是,在请求此信息时存在显着延迟。由于传递了大量数据(每个请求大约 1000 条记录,其中每条记录都非常大),有没有一种方法可以通过压缩来帮助降低速度。如果是这样,您会推荐哪种压缩方案。
我在另一个线程上读到,他们的数据模式对需要使用的压缩类型也很重要。数据的模式是一致的,类似于以下
:desc=>some_description
:url=>some_url
:content=>some_content
:score=>some_score
:more_attributes=>more_data
Run Code Online (Sandbox Code Playgroud)
有人可以推荐一个解决方案来减少这种延迟。他们的延迟大约是 6-8 秒。我正在使用 Ruby on Rails 开发这个应用程序,而提供数据的服务器大部分使用 Python。
我会先看看这个 8s 延迟有多少与:
服务器端处理(生成数据需要多少时间)这次有很多技术可以改进,包括:
数据库索引
缓存
更快的 to_json 库
一些优秀的资源是关于 Rails 可扩展性的 NewRelic 播客http://railslab.newrelic.com/2009/02/09/episode-7-fragment-caching
传输延迟(服务器和客户端之间发送数据需要多长时间)
如果密钥几乎相同,您可以为 JSON 编码的数据包实现压缩算法的解决方案吗? ; 您可能想查看https://github.com/WebReflection/json.hpack/wiki/specs-details和http://www.nwhite.net/?p=242
除此之外,您还可以从前端服务器压缩(gzip)它 http://httpd.apache.org/docs/2.0/mod/mod_deflate.html http://wiki.nginx.org/NginxHttpGzipModule
如果数据结构不变,你也可以尝试实现一个二进制服务,速度快得多,包括压缩,但也更难维护,比如 thrift:http ://www.igvita.com/2007/11/ 30/ruby-web-services-with-facebooks-thrift/
如果这适合您的需求,也许您可以制作某种版本控制/缓存系统服务器端,并仅发送修改过的记录(但实现起来非常繁重)
| 归档时间: |
|
| 查看次数: |
5046 次 |
| 最近记录: |