LINUX.ORG.RU

Как работает маршрутизация...?

 , ,


0

2

Собственно имеем к примеру маршруты:

/
/api
/api/users
/api/users/:id
И например полученный путь:
/api/users/12345

Правильно ли я понимаю, что во всех роутерах происходит проверка на соответствие пути маршруту?
Т.е. если кол-во маршрутов к примеру 100 штук, каждый получаемый путь сравнивается со всеми 100 маршрутами в цикле, пока не будет совпадения?
Или я что-то не совсем правильно понимаю...?
P.S. Спасибо за ответы. Многое для себя прояснил.



Последнее исправление: Sorcus (всего исправлений: 2)

если кол-во маршрутов к примеру 100 штук, каждый получаемый путь сравнивается со всеми 100 маршрутами в цикле, пока не будет совпадения

и да, и нет. зависит от реализации.

upcFrost ★★★★★
()

Т.е. если кол-во маршрутов к примеру 100 штук, каждый получаемый путь сравнивается со всеми 100 маршрутами в цикле, пока не будет совпадения?
Или я что-то не совсем правильно понимаю...?

очевидно, что нет, т.к. самая наивная реализация сунуть статические маршруты в словарь и первым делом сверять с ними, а там операция емнип O(log(N)) , т.е. сильно быстрее перебора

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

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

Как напишут, так и работает.

thesis ★★★★★
()
Ответ на: комментарий от Deleted

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

Sorcus
() автор топика

А почему Таненмбауна не почитать? У него расписано большинство способов. Компьютерные сети 5 издание - 392 страница

Silerus ★★★★
()
Ответ на: комментарий от Deleted

да не ты че 100 ифов (норм. ручной код некоторых новичков) это непорядок, сейчас заоптимиируем и новое двигло выпустим, кластеред сингтон декоратором, на своем яп с дсл, ты че не пацан чоле

anonymous
()
Ответ на: комментарий от Sorcus

проведи замеры и убедись - даже 1000 000 вызовов ничего не стоят

anonymous
()

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

Некоторые фреймворки (в основном, для фронтенда) свою маршрутизацию оформляют в виде дерева. Но это больше для удобства разработки (и не всегда удобнее), а не для производительности.

+---------------------------------------------+
|                                             |
|  / +---> process                            |
|    |                                        |
|    |                                        |
|    +---> api/ +---> process                 |
|    |          |                             |
|    |          |                             |
|    |          +---> users/:id +-> process   |
|    |                                        |
|    |                                        |
|    |                                        |
|    +---> news/ +--> process                 |
|                |                            |
|                |                            |
|                +--> :id/ +---> process      |
|                                             |
|                                             |
+---------------------------------------------+

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.