У меня проблема с несколькими компьютерами, очередями сообщений и транзакциями.Так, например, пользователь нажимает на веб-страницу, щелчок отправляет сообщение на другой компьютер, который добавляет платеж в учетную запись пользователя.Там может быть много тысяч кликов в секунду.Все аспекты транзакции должны быть отказоустойчивыми.
Раньше мне никогда не приходилось сталкиваться с чем-то подобным, но после небольшого прочтения это хорошо известная проблема.
мои вопросы.Правильно ли я полагаю, что безопасный способ сделать это с двухфазной фиксацией, но протокол блокирует, и поэтому я не получу требуемую производительность?Я обычно пишу на Ruby, но кажется, что БД, такие как redis и система очередей сообщений, такие как Rescue, RabbitMQ и т. Д., Не очень мне помогают - даже если я реализую какую-то двухфазную фиксацию, данные будут потеряны, если redis завершится сбоем, потому чтопо сути, это только память.
Все это заставило меня взглянуть на эрланг и скалу - но прежде чем я зайду и начну изучать новый язык, я действительно хотел бы лучше понять, стоит ли это тогоусилия.В частности, правильно ли я считаю, что из-за своих возможностей параллельной обработки эти языки являются лучшим выбором для реализации протокола блокировки, такого как двухфазное принятие, или я запутался?И если да, есть ли причина выбирать одну, а не другую (особенно в этом контексте - я знаю, что есть много тем и блогов, сравнивающих эти два в более общем смысле)
Извинения за перекрестную публикацию - это было первымопубликовал в стек-обмене, но я добавил к вопросу, и эта версия, вероятно, лучше подходит здесь