Я вхожу в существующий (игровой) проект, серверный компонент которого написан полностью в erlang. Время от времени, может быть мучительным, чтобы получить часть данных из этой системы (меня интересует, сколько виджета игрока 56) от процесса, которому это принадлежит. Предполагая, что я могу найти процесс, который владеет данными, я могу передать сообщение этому процессу и дождаться его передачи сообщения назад, но это не масштабируется хорошо для нескольких машин, и оно убивает время отклика.
Я рассматриваю возможность замены многих задач, которые существуют в этой игре, с системой, в которой информация, к которой часто обращаются несколько процессов, будет храниться в защищенной таблице ets. Владелец таблицы ничего не делал, кроме как получать сообщения об обновлениях (игрок только что потратил пять виджетов) и соответствующим образом обновил таблицу. Он перехватит все исключения и просто перейдет к следующему сообщению об обновлении. Любой процесс, который хотел бы знать, есть ли у игрока достаточные виджеты для покупки fooble, должен был бы только заглянуть за стол. (Да, я понимаю, что сообщение может быть в буфере, что уменьшает количество виджетов, но я имею эту проблему под контролем.)
Я боюсь, что мой вопрос - это не вопрос, а вопрос о комментариях. Я поддержу все, что полезно и достаточно объяснено или указано.
Каковы вероятные недостатки такой реализации? Меня интересуют подробности споров о блокировке, которые я, скорее всего, увижу, когда у вас есть один-писатель-несколько читателей, какие проблемы я буду распространять на разных компьютерах, и особенно: вклад от людей, которые сделали это раньше.