Java 可扩展的API服务器,带Restlet?

Java 可扩展的API服务器,带Restlet?,java,scalability,restlet,Java,Scalability,Restlet,我们正在计划一个新的API服务器,它将主要提供JSON响应,并带有RESTful接口。我们关心的是规模和可用性。我们使用带Jetty的Restlet(或其他连接器)的方法是否正确 我们要问的一个问题是,在Java世界中有没有像Phusion这样的东西?例如,用于保持服务器实例正常运行的预构建解决方案?可扩展性和性能最终将更多地取决于应用程序如何处理这些请求、其算法、是否高效访问数据库、如何缓存数据、,您的问题实际上并不是关于Restlet,而是关于设计一个高可伸缩性、高可用性的站点。我们发现Re

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


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

可扩展性和性能最终将更多地取决于应用程序如何处理这些请求、其算法、是否高效访问数据库、如何缓存数据、,您的问题实际上并不是关于Restlet,而是关于设计一个高可伸缩性、高可用性的站点。我们发现Restlet在正确的系统架构下确实可以很好地扩展

一般来说,您希望:

  • 运行web服务器计算机的群集,而不仅仅是一台
  • 如果可能的话,确保您的应用程序未共享任何内容,即web服务器中未存储任何应用程序状态
  • 使用负载平衡器将请求分散到负载最少的web服务器
  • 确保JSON响应是可缓存的
  • 在站点边界添加HTTP反向代理缓存(如Squid)。当站点和客户端之间的缓存预热时,大部分入站流量将由它们处理,而不是由web服务器处理
  • 将客户端代码写入失败的重试请求。这样,如果web服务器死亡,下一个请求将负载平衡到一台幸存的机器
  • 当然,您还想让您的站点自动化,以提供崩溃的web服务器等(这一部分最好在ServerFault.com上查询)
REST是一种体系结构样式,非常适合这种类型的设置

正如@matt提到的,您确实需要注意原始性能,但一般来说,您首先要考虑的应该是实现可扩展的高可用性体系结构

这方面的一些好消息来源是:

  • 卡尔·亨德森
  • ,西奥·施洛斯纳格尔
  • 、莱恩·理查森和萨姆·鲁比
特别是:

  • ,托德·霍夫

Overstock.com运行一个高度规模化的网站,并且要做到这一点。

应该在ServerFault上