【问题标题】:Scalable API server, with Restlet?可扩展的 API 服务器,带有 Restlet?
【发布时间】:2010-09-22 23:28:16
【问题描述】:

我们正在计划一个新的 API 服务器,它主要提供 JSON 响应,并带有一个 RESTful 接口。我们担心规模和可用性。我们是否在使用带有 Jetty(或其他连接器)的 Restlet 时走在正确的轨道上?

我们要问的一个问题是,Java 世界中是否有像 Phusion Passenger 这样的东西?例如,用于保持服务器实例正常运行的预构建解决方案?

【问题讨论】:

  • 应该在ServerFault上

标签: java scalability restlet


【解决方案1】:

您的问题实际上并不是关于 Restlet,而是关于设计一个高可扩展性、高可用性的网站。我们发现 Restlet 在正确的系统架构下可以很好地扩展。

一般来说你想要:

  • 运行一个集群网络服务器机器,而不仅仅是一台。
  • 确保您的应用程序不共享任何内容,即尽可能不将应用程序状态存储在您的网络服务器中。
  • 使用负载平衡器将请求分散到负载最少的网络服务器。
  • 确保您的 JSON 响应可缓存
  • 在您网站的边界添加一个 HTTP 反向代理缓存(例如 Squid)。随着您的网站和客户端之间的缓存预热,大部分入站流量将由它们处理,而不是由您的网络服务器处理。
  • 将您的客户端代码写入重试失败的请求。这样,如果 Web 服务器死机,下一个请求将被负载平衡到幸存的机器上。
  • 当然,您还希望自动化您的网站以启动崩溃的 Web 服务器等。(这部分在 ServerFault.com 上可能会更好。)

REST 是一种架构风格,非常适合这种类型的设置。

正如@matt 所提到的,您确实需要注意原始性能,但通常您首先要考虑的是获得可扩展的高可用性架构。

这方面的一些很好的来源是:

尤其是:

Overstock.com 运营着一个规模很大的网站,并通过 makes heavy use of Restlet 来做这件事。

【讨论】:

    【解决方案2】:

    可扩展性和性能最终将更多地取决于处理这些请求的应用程序的设计方式、算法、是否有效地访问数据库、如何/是否缓存数据等,而不是选择 servlet 容器或框架。

    【讨论】:

      猜你喜欢
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多