我们正在计划一个主要用于JSON响应的新API服务器,它具有RESTful接口.我们关注规模和可用性.我们是否使用Restlet with Jetty(或其他连接器)在正确的轨道上?
我们要问的一个问题是,Java世界中有什么像Phusion Passenger?例如,一个预先构建的解决方案,用于保持服务器实例正常运行?
您的问题实际上并不是关于Restlet,而是关于设计高可扩展性,高可用性的站点.我们发现Restlet使用正确的系统架构可以很好地扩展.
一般来说,你想:
运行一组 Web服务器计算机,而不仅仅是一台.
确保您的应用程序没有任何共享,即,如果可能的话,不会在Web服务器中存储应用程序状态.
使用负载平衡器将请求分散到负载最少的Web服务器.
确保您的JSON响应可缓存.
在站点的边界添加HTTP 反向代理缓存(例如,Squid).当您的站点和客户之间的缓存预热时,大多数入站流量将由它们处理,而不是您的Web服务器.
编写客户端代码以重试失败的请求.这样,如果Web服务器死机,下一个请求将被负载平衡到幸存的机器.
当然,您希望自动化您的站点以启动崩溃的Web服务器等(这可能是在ServerFault.com上更好的部分.)
REST是一种体系结构样式,非常适合此类设置.
正如@matt所提到的那样,你需要注意原始性能,但通常你应该首先关注的是如何实现可扩展的高可用性架构.
一些很好的消息来源是:
建立可扩展的网站,Cal Henderson.
可扩展的互联网架构,Theo Schlossnagle.
Restful Web Services,Len Richardson和Sam Ruby.
特别是:
highscalability.com,托德霍夫.
Overstock.com运行一个高度扩展的网站,并大量使用Restlet来完成它.