Jetbrains YouTrack 服务器如何扩展负载?

How does Jetbrains YouTrack server scales over load?

如果 Youtrack 使用 Xodus 作为底层数据库,那么 YouTrack 如何处理可扩展性?

  1. Xodus 写锁系统阻止使用数据库构建的应用程序的可扩展性(参见:Remove lock on environment at every transaction end and https://youtrack.jetbrains.com/issue/XD-807

在典型的 Java 服务器环境中,当服务器遇到更多负载时,它会生成同一应用程序的新进程(通常);这是 Xodus 的问题所在,因为它的锁定机制总是绑定到使用或访问环境的第一个进程。

那么 YouTrack 通常如何绕过此限制并能够用作生产 Web 应用程序?

谈到可伸缩性时,有两种主要的设计方法需要考虑。垂直可扩展性假定 single-node 应用程序可以随着更多 CPU 和更多 RAM 的添加而扩展。相反,横向可扩展性依赖于同一应用程序的多个副本来处理负载。有一个很棒的 answer 详细介绍了这两种方法。虽然以数据库服务器为例,但同样适用于当今大多数应用类型。

如今,水平可扩展的应用程序似乎更为典型,因为它们通常更易于实施。您的代码的任何类型的关键问题,如竞争条件,都可能只会导致单个节点宕机。所以这种方法对我们有时会犯的编程错误更宽容一些。

Xodus write lock system prevents scalability of application built with the database

现在应该很清楚了,Xodus 架构只允许水平可扩展的解决方案。反过来,垂直可扩展的应用程序也非常适合它。这也回答了您关于 YouTrack 的问题。它以垂直方式缩放并且非常擅长。