Быстрый ID для объектов сетевого протокола
От: Barbar1an Украина  
Дата: 20.04.18 15:53
Оценка:
например есть у нас протокол где команда это ObjectcId.Property = Value

мне интересно как можно организовать самый быстрый переход от объекта к его указателю, и на сервере и на клиенте

1. генерировать один GUID, но тогда придется искать каждый айди в таблице на каждую команду

2. тупо обменяться адресами в памяти — сервису сказать где объект лежит на клиенте, и наоборот, тогда можно просто привести айди к указателю что супербыстро, но тут нужен запрос-ответ, а это тормоза
глобальная уникальность будет обеспечиваться уникальностью пары айди процесса(или айпи, или сессии) и адреса в памяти

как компромис — клиент создает объект и шлет его адрес, а сервер помещает его в таблицу, и наоборот

3. выделять доступный один айди как HANDLE в винде, тут доступ быстрый — просто по индексу в массиве, но если объект создается клиентом то нада както обеспечить синхрронизацию с серверйно таблицей, либо опять ждать овтета


мож чтото лучше есть, мне лично нравится идея адреса, тогда не нада на каждую команду лукап делать


4. еще придумал извратный: севрер создает пул объектов заранее и рассылает клиентам пачки доступных адерсов, когда клиент исчерпал пул — он просит новую пачку адресов
это решение просблемы тормозов зарпос-ответа через предварительную аллокацию сразу кучи объектов
ну и тут у нас будет перерасход памяти на сервере
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Отредактировано 20.04.2018 16:05 Barbar1an . Предыдущая версия . Еще …
Отредактировано 20.04.2018 16:02 Barbar1an . Предыдущая версия .
Отредактировано 20.04.2018 15:56 Barbar1an . Предыдущая версия .
Отредактировано 20.04.2018 15:55 Barbar1an . Предыдущая версия .
Отредактировано 20.04.2018 15:53 Barbar1an . Предыдущая версия .
Re: Быстрый ID для объектов сетевого протокола
От: kov_serg Россия  
Дата: 20.04.18 16:10
Оценка:
Здравствуйте, Barbar1an, Вы писали:

B>мне интересно как можно организовать самый быстрый переход от объекта к его указателю, и на сервере и на клиенте

Вы ловите блох. Вы уверены что именно это узкое место вашего сервера?

B>1. генерировать один GUID, но тогда придется искать каждый айди в таблице на каждую команду

cache?

B>2. тупо обменяться адресами в памяти — сервису сказать где объект лежит на клиенте, и наоборот, тогда можно просто привести айди к указателю что супербыстро, но тут нужен запрос-ответ, а это тормоза

B> глобальная уникальность будет обеспечиваться уникальностью пары айди процесса(или айпи, или сессии) и адреса в памяти
А еще придётся проверять не лажули прислали в качестве адреса.

B>как компромис — клиент создает объект и шлет его адрес, а сервер помещает его в таблицу, и наоборот

Копромис просто индекс в массиве он же handle.
Re: Быстрый ID для объектов сетевого протокола
От: bnk СССР http://unmanagedvisio.com/
Дата: 20.04.18 18:04
Оценка:
Здравствуйте, Barbar1an, Вы писали:

B>например есть у нас протокол где команда это ObjectcId.Property = Value

B>мне интересно как можно организовать самый быстрый переход от объекта к его указателю, и на сервере и на клиенте

Если у тебя есть сервер и клиент, разделенные пространственно, то любой из твоих вариантов будет занимать 0.00..01% от операции
Поэтому правильный вариант — 1 (использовать GUID), остальное — бред
Отредактировано 20.04.2018 18:05 bnk . Предыдущая версия . Еще …
Отредактировано 20.04.2018 18:04 bnk . Предыдущая версия .
Re: Быстрый ID для объектов сетевого протокола
От: ononim  
Дата: 25.04.18 15:51
Оценка: +3
B>2. тупо обменяться адресами в памяти — сервису сказать где объект лежит на клиенте, и наоборот, тогда можно просто привести айди к указателю
Хакерам такой протокол определенно понравится
Как много веселых ребят, и все делают велосипед...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.