o7412369815963
Июнь 7, 2012 10:52:45
Скоро начнется большой (многолетний) проект (web сервис) с кучей народа, т.к. все программисты владеют разными языками/технологиями, а хочется задействовать всех максимально эффективно - рассматривается SOA, т.е. что-б продукт состоял из множества кусков (плагинов, модулей) написанных на разных языках, которые будут взаимодействовать друг с другом (может быть через некую шину). Например срабатывает событие “save” на конкретный объект, все плагины (python, js(nodejs), c#…) которые подписаны на это событие такого типа объектов вызовутся в порядке приоритета.
Какие подводные камни есть, какие альтернативы, что нужно поизучать, может есть что-то готовое на что можно посмотреть.
Сходу видно что при таком методе будет сложнее разворачивать инстанс и сложнее расширять при увеличении нагрузки.
Может есть какие-нибудь другие методы/технологи для этой цели: задействовать всех максимально эффективно.
Или игра не стоит свеч - всех обучать питону?
Если посмотреть на крупные компании, зачастую там используется большой зоопарк языков и технологий, хотя может в пределах конкретного проекта они использую 1 язык.
slav0nic
Июнь 7, 2012 11:17:45
сам не сталкивался, но смотреть наверно на всякие шины из энтерпрайз мира аля openesb/fuse esb и ESB в целом
я б наверно с чем-то попроще повозился (REST и тп), чем вникать в “мир прекрасного” энтерпрайза В)
Андрей Светлов
Июнь 7, 2012 14:40:36
В большом проекте и с использованием одного языка/платформы/архитектуры со временем всё равно получается зоопарк.
Зачем создавать его изначально?
o7412369815963
Июнь 7, 2012 18:08:41
Андрей Светлов
В большом проекте и с использованием одного языка/платформы/архитектуры со временем всё равно получается зоопарк.
Зачем создавать его изначально?
Конечно зоопарк изначально не хочется, но как задействовать всех максимально эффективно. Можно конечно всех переобучить, но это какое-то время (пока программист станет профессионалом в другом языке) , да и не все согласятся. Да и новых сотрудников набирать проще, если можно будет на любом языке разрабатывать.
o7412369815963
Июнь 7, 2012 18:20:31
slav0nic
сам не сталкивался, но смотреть наверно на всякие шины из энтерпрайз мира аля openesb/fuse esb и ESB в целом
я б наверно с чем-то попроще повозился (REST и тп), чем вникать в “мир прекрасного” энтерпрайза В)
спс. почитаю.
я подумываю на счет zeromq или подобного, хотя тут ещё надо рассмотреть варианты.
Посмотрите еще на AMQP. Мы в свое время использовали, чтобы развязать компоненты достаточно большой системы. Использовали RabbitMQ
http://www.rabbitmq.com/ и питоновые биндинги к нему от той же команды:
http://pika.github.com/ ну и celery
http://celeryproject.org/, как распределятель задач. celery показался тяжелым, но тоже работал в результате нормально.
Андрей Светлов
Июнь 7, 2012 19:21:09
Мое мнение: по крайней мере в рамках команды необходим единый стандарт. Команда — до дюжины программистов плюс сколько нужно всяких прочих тестеров.
Lexander
Июнь 7, 2012 22:15:09
Если смотрите в сторону Message Queue, то нужно решить, какие возможности вам нужны. Я не имею ввиду атомарность, кроссплатформенность и поддержку языков - это и так понятно.
Но, нужна ли отказоустойчивость или сохранение сообщений на диск?
0MQ - шустрая, простая в использовании и обслуживании, но без хранения на диске.
RabbitMQ - скорость приемлемая, но Erlang и установка, обслуживание немного усложнены (соблюдать соответствия версий и т.п.), код выглядит не таким простым, зато может хранить сообщения на диске и даже самом выбирать: хранить или нет.
AcitveMQ - скорость приемлемая, проста в обслуживания при условии заранее выбранной архитектуры, поддерживает REST и бинарный протокол, в зависимости от потребностей позволяет способ хранения сообщений, тем самым напрямую влияя на производительность.
Но, в отличие, от Кролика это нужно сделать заранее, на лету менять способ не выйдет.
Все они достаточно функциональны и масштабируемы.
ЗЫ
Если Питон-онли, тоесть PyMQ.
PooH
Июнь 8, 2012 05:34:04
Lexander
AcitveMQ - скорость приемлемая, проста в обслуживания при условии заранее выбранной архитектуры, поддерживает REST и бинарный протокол, в зависимости от потребностей позволяет способ хранения сообщений, тем самым напрямую влияя на производительность.
Да,
это впечатляет.
Lexander
Июнь 8, 2012 13:17:41
PooH
Ну, наращивать скорость можно и в RabbitMQ.
Разница именно в способе хранения очереди.
Использование аппенд-онли лога для обеспечения сохранности данных - известная штука.
Но это действительно самый быстрый способ.