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

发布于 2024-09-24 09:45:04 字数 185 浏览 7 评论 0原文

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

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

We're planning a new API server that will mainly serve JSON responses, with a RESTful interface. We're concerned about scale and availability. Are we on the right track using Restlet with Jetty (or another connector)?

One question we're asking is, is there anything in the Java world like Phusion Passenger? For example, a pre-built solution for keeping server instances up and healthy?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

左秋 2024-10-01 09:45:05

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

一般来说,您希望:

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

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

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

一些很好的资料来源是:

特别是:

Overstock.com 运营着一个大规模的网站,使得大量使用 Restlet 来做到这一点。

Your question actually is not as much about Restlet as it is about designing a high-scalability, high-availability site. We find that Restlet does scale very well with the right system architecture.

Generally speaking you want to:

  • Run a cluster of web server machines, not just one.
  • Make sure your application is shared nothing, ie, no application state stored in your web servers, if at all possible.
  • Use a load balancer to spread requests to the least loaded web servers.
  • Make sure your JSON responses are cacheable.
  • Add an HTTP reverse proxy cache (eg, Squid) at the border of your site. As the caches between your site and your clients warm up, most of the inbound traffic will be handled by them, and not your web servers.
  • Write your client code to retry requests that fail. This way if a web server dies the next request will be load balanced to a surviving machine.
  • And of course you want to automate your site to bring up crashed web servers, etc. (This is the part that is perhaps better asked on ServerFault.com.)

REST is an architectural style that is ideal for this type of setup.

As @matt mentions you do need to watch out for raw performance, but generally your first concern should be to get the scalable, high availability architecture in place.

Some good sources on this are:

and especially:

Overstock.com runs a highly scaled web site and makes heavy use of Restlet to do it.

羞稚 2024-10-01 09:45:05

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

The scalability and performance is ultimately going to depend much much more on how the application handling these requests is designed, its algorithms, if it accesses a database efficiently, how/if you cache data, etc than the choice of servlet containers or frameworks.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文