Озадачился я на днях выбором решения для серверного бэкенда одного нагруженного конструктора сайтов. Текущая архитектура построена на популярном MVC-фреймворке на старом-добром PHP. Такой фреймворк хорош для быстрой разработки большого количества функционала и быстрого старта, все мы это знаем. Только после этого старта довольно скоро наступает момент, когда возникают узкие места, которые требует повышенной производительности и обычный универсальный фреймворк уже не справляется.
В процессе поиска решения мне попалась аналитика скорости обработки запросов по большому количеству фреймворков, существующих на сегодняшний день. Я выбрал из них те, у кого больше 5000 звезд на GitHub и которые обрабатывают больше 150 000 запросов в секунду. В формуле подсчета рейтинга второй параметр взят в квадрате, поскольку флуктуации звезд куда амплитудней.
В итоге формула такая:
Количество звезд на GitHub * (Количество запросов в секунду) ^ 2
Жирным выделены лидеры по скорости обработки запросов.
1. Beego [go] — 359 279
2. Gin [go] — 252 895
3. FastHttp [go] — 420 498
4. Echo [go] — 262 940
5. ASP.NET Core [csharp] — 263 725
6. Workerman [php] — 349 897
7. Mux [go] — 263 585
8. Koa [js] — 159 032
9. Perfect [swift] — 218 634
10. Chi [go] — 274 507
11. Fastify [js] — 177 372
12. Falcon [python] — 208 805
13. Bottle [python] — 168 776
14. Ktor [kotlin] — 162 842
15. Сowboy [elixir] — 160 063
Замеры количества запросов в секунду проводились с помощью wrk. Механизм подсчета основан на ответах в трех сценариях:
— открытие главной страницы с ответом 200 и пустым содержанием
— открыите страницы /user с ответом 200 и пустым содержанием
— открыите страницы /user/__ID__ с ответом 200 и c __ID__ в содержании
Если не нашли свой любимый фреймворк, то посмотрите в первоисточник, там их больше сотни. Если и там нет, значит скоро появится и рейтинг будет пересмотрен. Вы можете ускорить это создав pull request с вашим фреймворком.
Источник данных: GitHub и web-frameworks
Если у вас есть опыт использования каких-либо из указанных фреймворков, буду рад обсудить с вами в комментариях.
CrazyElf
Хорошо бы написать формулу подсчёта рейтинга и сам рейтинг в явном виде. А то несколько раз пришлось перечитать, чтобы понять — почему именно в таком порядке рейтинг идёт и скор не по порядку получается, который справа написан. И если открыть исходную статью, то тоже не сразу что-то понятно становится, только ещё больше путаешься сначала. :)
lkg0dzre Автор
Формула такая:
Количество звезд на GitHub * (Количество запросов в секунду) ^ 2
Siemargl
Мне кажется, такая методика достойна медали Эффективного Менежера!