Что означает промежуточное ПО для Twitter и Scala? - PullRequest
4 голосов
/ 03 июня 2009

Ссылка другой SO вопрос У меня был, мне дали эта статья о переходе Twitter с Rails на Scala, и в статье есть этот комментарий:

К концу этого года Пейн сказал: Твиттер надеется получить всю свою инфраструктура промежуточного программного обеспечения и его API портирован на новый язык. Руби будет остаются, но только на переднем конце. «Мы по-прежнему довольны Rails для создание пользовательских функций ... с точки зрения производительности, это хорошо для людей перебирая веб-страницы. Это тяжелая работа, асинхронная обработка тип вещей, которые мы отошли от ".

Что означает здесь промежуточное ПО? Что именно означает иметь Ruby на переднем конце? Означает ли это, что рельсы на переднем конце используются очень мало ORM? Как это "встречается" со скалой? Что означает этот комментарий?

Просто пытаюсь понять архитектуру. Спасибо.

Ответы [ 4 ]

5 голосов
/ 03 июня 2009

Это форма Архитектура N-уровня . Первоначально большинство сайтов начинаются как двухуровневая архитектура с веб-сервером и базой данных. Веб-сервер будет обслуживать страницы, которые видит пользователь, а к динамическим страницам обращаются к базе данных.

Когда архитектура разделяется на несколько уровней, обычно перед вами будет веб-приложение с каким-то сервером приложений, который будет вызывать веб-приложение. Этот сервер приложений содержит бизнес-логику и делает приложение функциональным. «Лицо» приложения просто делает вещи красивыми и форматирует их для отображения пользователям.

Сервер приложений, или «промежуточное ПО», - это просто набор функций, которые могут вызываться веб-серверами. Промежуточное программное обеспечение должно быть мощным для сайта, такого как твиттер, где большая часть активности заключается в отправке сообщений, а людей, заходящих на сайт, не так много.

Взаимосвязь между слоями, вероятно, является стандартной технологией веб-службы, но это может быть пользовательская вещь, например, REST или какой-либо другой вид веб-службы, где веб-приложение (Ruby on Rails) может получать доступ к данным приложения.

В архитектуре такого типа Rails наверняка перенес все ORM и управление данными в промежуточное ПО.

Промежуточное программное обеспечение также является расплывчатым термином и может состоять из множества уровней, поэтому они называют его N-уровнем. Могу поспорить, что в Твиттере есть другая часть промежуточного программного обеспечения, посвященная обмену сообщениями, а другая часть посвящена управлению учетными записями, извлечению сообщений и т. Д.

Идея состоит в том, чтобы иметь возможность масштабирования вверх путем добавления аппаратного обеспечения, где у вас может быть кластер серверов, обслуживающих веб-страницы, другой кластер, обрабатывающий сообщения, а затем кластер серверов баз данных, которые поддерживают все это. Это не точная наука, каждая архитектура индивидуальна, но, как правило, об этом можно думать.

1 голос
/ 04 июня 2009

Насколько я понимаю, они перенесли в Scala сообщение "очередь": от решения на основе Ruby-ORM-DB к распределенной системе обмена сообщениями со Scala. К сервису с объемом Twitter предъявляются особые требования, и они создали собственное решение для сообщений. Называется "пустельга"

1 голос
/ 03 июня 2009

Попробуйте Googling для " ruby ​​twitter scala payne ", и вы получите больше, чем вам, вероятно, нужно по этому вопросу.

Мое (вероятно, неполное) понимание состоит в том, что большая часть "back-end" в Твиттере не очень хорошо написана (см. сообщение Оби Фернандеса , в котором приведены некоторые цитаты Алекса Пейна). Похоже, что это, по крайней мере частично, связано с первоначальным характером быстрого хакерского приложения, которое было охвачено событиями, они испытывали значительную боль, поскольку использование приложения начало расти в геометрической прогрессии. В то время на «Твиттер» (и ассоциацией Rails) указывалось любое количество «неудачных попыток масштабирования».

Твиттер в значительной степени опирается на очереди сообщений, и, как я понимаю, эта часть написана на Scala, что, вероятно (без личного опыта), является очень хорошим выбором языка для работы.

0 голосов
/ 03 июня 2009

Инфраструктура обмена сообщениями в этом случае. Вероятно, они переключились с какого-то пользовательского решения на основе ruby ​​на решение JMS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...