Компанія Engine Yard, найбільший хостер web-проектів на мові Ruby, який виконує роботу по супроводу старих гілок Ruby, представила новий відкритий проект Puma, в рамках якого розвивається повністю перероблений форк проекту Mongrel, що відрізняється орієнтацією на забезпечення максимальної продуктивності і підтримки обслуговування великої кількості паралельних запитів. Незважаючи на те, що Puma створений на базі Mongrel, на даний час, крім коду HTTP-парсеру, стара кодова база повністю переписана. Безпосередньо розбором протоколу займається написаний мовою Сі компонент Ragel, всі оброблювані запити поміщаються в відособлений пул потоків, що забезпечує повноцінне розпаралелювання і задіяння всіх доступних в системі процесорних ядер. Код проекту поширюється під ліцензією BSD.
Puma може використовуватися в ролі платформи для розгортання додатків на базі Ruby on Rails і окремих додатків, що використовують інтерфейс Rack. Puma близький за можливостями до Mongrel і Webrick, і може виступати в якості їх прозорої заміни. Підтримується робота з різними реалізаціями Ruby, такими як Rubinius, JRuby і MRI. Для класичної реалізації MRI, нездатної виконувати одночасно кілька потоків через наявність глобального блокування, реалізована підтримка розпаралелювання на рівні введення/виводу. Для Rubinius і JRuby можливе повноцінне розпаралелювання на рівні ниток.
На графіку представлено відношення кількості оброблених у секунду запитів до кількості одночасних запитів (більше-краще); позначка KA позначає тести, в яких клієнти використовували keepalive запити.
Немає коментарів:
Дописати коментар