JetBrains YouTrack服务器如何应对负载扩展?

huangapple go评论76阅读模式
英文:

How does Jetbrains YouTrack server scales over load?

问题

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

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

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

那么一般情况下,YouTrack如何克服这个限制,能够作为生产Web应用程序运行?

英文:

If Youtrack uses Xodus as the underlying database then how can YouTrack handle scalability?

  1. Xodus write lock system prevents scalability of application built with the database (see: https://stackoverflow.com/questions/62012463/remove-lock-on-environment-at-every-transaction-end and https://youtrack.jetbrains.com/issue/XD-807)

In a typical Java server environment, when the server encounters more load, it spawns new processes of the same application (typically); this is where Xodus breaks since it's lock mechanism is always bound to the first process that used or accessed the environment.

So how does YouTrack, in general, get around this limitation and be able to work as a production web application?

答案1

得分: 1

When it comes to scalability, the are two main design approaches to consider.

在考虑可扩展性时,有两种主要的设计方法要考虑。

Vertical scalability assumes that a single-node application can scale up with more CPU and more RAM added.

垂直可扩展性假设单节点应用程序可以通过增加更多的CPU和RAM来扩展。

Horizontal scalability, on the contrary, relies on multiple copies of the same application to handle the load.

相反,水平可扩展性依赖于多个相同应用程序的副本来处理负载。

There's a great answer that goes into more details on both approaches. Although it uses database servers as an example, it is equally applicable to the most application types one can encounter today.

有一个很好的答案详细介绍了这两种方法。尽管它以数据库服务器为例,但同样适用于今天大多数应用类型。

Horizontally scalable applications may seem more typical these days, as they are generally easier to implement.

这些天,水平可扩展的应用程序似乎更加典型,因为它们通常更容易实现。

Any kind of a critical issue with your code, like a race condition, is likely to bring down a single node only. So this approach is a bit more forgiving to the programming errors we all make at times.

与您的代码有关的任何严重问题,比如竞态条件,可能只会使单个节点崩溃。因此,这种方法对我们在某些时候都会犯的编程错误更加宽容。

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

> Xodus写锁系统阻止了使用数据库构建的应用程序的可扩展性。

Now it should be clear, that Xodus architecture disallows horizontally scalable solutions only. Vertically scalable applications in turn are perfectly fine with it. This also answers your question about YouTrack. It scales in a vertical manner and is quite good at it.

现在应该很清楚,Xodus架构只允许垂直可扩展的解决方案。垂直可扩展的应用程序与之完全兼容。这也回答了您关于YouTrack的问题。它以垂直方式扩展,而且做得相当不错。

英文:

When it comes to scalability, the are two main design approaches to consider. Vertical scalability assumes that a single-node application can scale up with more CPU and more RAM added. Horizontal scalability, on the contrary, relies on multiple copies of the same application to handle the load. There's a great answer that goes into more details on both approaches. Although it uses database servers as an example, it is equally applicable to the most application types one can encounter today.

Horizontally scalable applications may seem more typical these days, as they are generally easier to implement. Any kind of a critical issue with your code, like a race condition, is likely to bring down a single node only. So this approach is a bit more forgiving to the programming errors we all make at times.

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

Now it should be clear, that Xodus architecture disallows horizontally scalable solutions only. Vertically scalable applications in turn are perfectly fine with it. This also answers your question about YouTrack. It scales in a vertical manner and is quite good at it.

huangapple
  • 本文由 发表于 2020年8月2日 07:54:48
  • 转载请务必保留本文链接:https://go.coder-hub.com/63211112.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定