Таблицы Erlang ETS в сравнении с передачей сообщений: Проблемы оптимизации?

Я вхожу в существующий (игровой) проект, серверный компонент которого полностью написан на erlang. Иногда бывает мучительно получить часть данных из этой системы (меня интересует, сколько виджетов есть у игрока 56) из процесса, которому они принадлежат. Предполагая, что я могу найти процесс, который владеет данными, я могу передать сообщение этому процессу и ждать, пока он не вернет сообщение, но это плохо масштабируется на несколько машин и убивает время отклика.

Я подумывал о замене многих задач, существующих в этой игре, на систему где информация, к которой часто обращаются несколько процессов, будет храниться в защищенной таблице ets. Владелец таблицы не будет делать ничего, кроме как получать сообщения об обновлении (игрок только что потратил пять виджетов) и обновлять таблицу соответствующим образом. Он перехватывает все исключения и просто перейти к следующему сообщению об обновлении. Любой процесс t Он хотел знать, достаточно ли у игрока виджетов, чтобы купить игру, нужно было только взглянуть на стол. (Да, я понимаю, что в буфере может находиться сообщение, уменьшающее количество виджетов, но я держу эту проблему под контролем.)

Боюсь, что мой вопрос - это не столько вопрос, сколько запрос на Комментарии. Я буду поддерживать все, что является полезным и достаточно объясненным или указанным.

Каковы вероятные недостатки такой реализации? Меня интересуют детали конфликта блокировок, которые я, вероятно, увижу при наличии одного-писателя-нескольких-читателей, какие проблемы у меня возникнут при распределении этого на нескольких машинах, и особенно: ввод от людей, которые сделали это раньше.

14
задан Brian Tompsett - 汤莱恩 21 August 2017 в 23:01
поделиться