Геокартирование с акторами с отслеживанием состояния

Можно ли использовать надежные субъекты Azure Service Fabric с отслеживанием состояния для решения проблем географического сопоставления? Допустим, у меня есть актер, представляющий событие. Это событие создает пользователь, установивший такое событие на карте. Многие пользователи могут создавать множество событий. Каждое событие, представляющее актора, хранит геокоординату и одно другое состояние. Это приведет к тому, что я могу иметь миллионы событий, распределенных по карте.

Итак, теперь я хочу иметь группирующий актор, представляющий акторов событий на основе области карты или на основе прямоугольника координат. Группирующий актор хранит список всех акторов событий в этой области карты. Учитывая проблемы с производительностью, возможно ли и рекомендуется ли динамически создавать такое группирующее действующее лицо? Область будет определяться пользовательским вводом.


person CPA    schedule 08.01.2016    source источник


Ответы (1)


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

Вероятно, было бы проще и эффективнее просто использовать Надежный словарь в Надежный сервис. Каждая координата и любые связанные данные могут быть записью в словаре. Вы можете перечислять, выполнять запросы LINQ и вообще программировать так же, как с обычным словарем.

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

person Vaclav Turecek    schedule 08.01.2016
comment
Использование геохэширования для разделения сервиса — действительно хорошая идея. Но как мне добиться, чтобы нагрузка на каждую часть распределялась поровну? - person CPA; 13.01.2016