Это - хороший рубин использования идеи для программирования сокета?

Gorgapor, mod_rewrite все еще часто использует GET. Это просто позволяет переводить более дружественный URL в URL с GET строка запроса.

5
задан Werner Echezuria 28 November 2009 в 19:47
поделиться

9 ответов

Компания, в которой я работаю, использует Ruby для нашего веб-сайта. На данный момент мы обработали немногим более 34 000 000 000 обращений. У нас нет проблем с обработкой около 10 000 000 обращений в день. Пиковые значения превышают 40 000 000 обращений в день.

Масштабируемость зависит от множества факторов. Например, наши базы данных выполняют непропорционально высокий процент операций записи по сравнению с чтением. В то время как большинство веб-сайтов выполняют примерно 90% чтения и 10% записи, мы приближаемся к 50% -50%. Я считаю, что на масштабируемость влияет множество факторов. Если вы ограничены базой данных, как это часто бывает с веб-приложениями, не имеет значения, какой язык вы используете, вы будете ждать своей базы данных.

Есть много над чем подумать, если вы смотрите на обработку крупные масштабы. Шардинг баз данных, memcached, и т. д. и т. д. и т. д. Язык, который вы используете для своего приложения, - это всего лишь один аспект, и часто, хотя и не всегда, небольшой аспект масштабируемости.

Ruby может быть для вас хорошим вариантом, но есть много чего как на других языках. Например, Erlang изо всех сил пытается упростить восстановление после ошибок.

15
ответ дан 18 December 2019 в 05:23
поделиться

Я не уверен, что какие-либо «уроки», которые команда Twitter извлекла из Ruby (в частности, Rails) и масштабирования, применимы к вашему проекту. Они смотрят на НАМНОГО больше трафика, чем большинство людей может ожидать увидеть.

Что касается сокетов и Ruby, посмотрите Мне нравится Unicorn, потому что это Unix . Это довольно интересное чтение о создании сокетов в Ruby.

13
ответ дан 18 December 2019 в 05:23
поделиться

Сначала я хотел бы предоставить немного контекста. Я довольно активен в сообществе Scala, и Я предпочел бы Scala Ruby для любого проекта.

Итак, сказав это, продолжайте использовать Ruby, если вы действительно не столкнетесь с препятствием. Если вы предпочитаете Ruby, то, возможно, вы никогда не будете довольны упомянутыми вариантами, особенно статически типизированными.

Было бы неплохо выучить новый язык, чтобы было что отступить. если вам нужна альтернатива. В вашем случае я бы рекомендовал Clojure или Erlang. Scala - хороший статически типизированный объектно-ориентированный язык с возможностями функционального программирования. Возможно, его легче выучить, чем другие, но люди, которым действительно нравится динамическая типизация, нелегко конвертируются в статическую типизацию.

Что касается Haskell, это один из самых классных языков (и гораздо более хорошо поддерживаются и популярны, чем такие же потрясающие альтернативы), и могут раскрыть ваш разум, как ничто другое. Это также сложно освоить.

4
ответ дан 18 December 2019 в 05:23
поделиться

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

3
ответ дан 18 December 2019 в 05:23
поделиться

В то время как вы можете получить лучшую производительность от функционального языка, такого как Erlang, пригодность Ruby действительно будет зависеть от того, чего вы пытаетесь достичь. Например, количество запросов, которые вы собираетесь обрабатывать, - это, вероятно, первый вопрос. Если преимущества в производительности от использования Erlang не имеют большого значения, используйте то, что вам удобно, зачем изучать новый язык, если вам не нужно?

1
ответ дан 18 December 2019 в 05:23
поделиться

Ключ в том, чтобы иметь низкоуровневую библиотеку на C / C ++, которая выполняет мультиплексирование сокетов за вас. Мультиплексирование сокетов - это то, что делает процесс TCP-сервера по-настоящему многопользовательским. такие библиотеки в C (а это то, что вы хотите) могут быть libevent / libev ... и в C ++ boost :: asio. В Python есть хитрости, которые делают это за кулисами.

Если вы получите такую ​​библиотеку и будете использовать ее в ruby, вы сможете довольно хорошо реализовать большинство программ сокетов. Это особенно верно для ОС UNIX, которые предпочитают многопроцессорность многопоточности.

0
ответ дан 18 December 2019 в 05:23
поделиться

У вас, по крайней мере, есть возможность остаться на вашем любимом языке высокого уровня, если вы используете быстрый, параллельный язык, такой как Haskell, Erlang или Scala. С Ruby узкие места в производительности будут означать переход на скомпилированный C (или Haskell, или ...) для повышения скорости в любом случае.

Ruby имеет преимущество хороших фреймворков внешнего интерфейса.

1
ответ дан 18 December 2019 в 05:23
поделиться

Я также использовал Ruby для многих проектов, хотя недавно перешел на Scala, и мне он очень нравится немного. Одна вещь, о которой я слышал хорошие отзывы (но никогда не пробовал) для сетевых вещей в Ruby, - это EventMachine . Он использует шаблон Reactor Pattern, как скрученный, и кажется довольно прочным.

1
ответ дан 18 December 2019 в 05:23
поделиться

Недавно написав (на самом деле все еще пишу) проект, использующий сокеты с Ruby и Java, я бы сказал нет. Реализация сокета ruby ​​плохо документирована, если вы не планируете писать базовый блокирующий чат-сервер. Я нашел, что писать на C или Java проще, Ruby заключает в себе нативные сокеты, и вы как бы задаетесь вопросом, как, черт возьми, его использовать сейчас. Раньше я писал много кода сокетов для Windows, Linux и других платформ на C с меньшим напряжением.

Мой код на Ruby сейчас очень мал и работает хорошо, добраться до этого момента было настоящей головной болью.

0
ответ дан 18 December 2019 в 05:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: