Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2009-08-01

hiLoad

Посмотрел слайды и послушал один из докладов с конференции HighLoad. Доклад меня заинтересовал темой "авторизация в кластере".

Суть проблемы авторизации при размещении сайта на кластере: данные пользователя (паспорт) хранятся внутри обьекта сессии. Например - файл на диске. На том узле кластера, который изначально принял запрос на авторизацию. А что делать, если балансер отправил пользователя на другой узел?
В докладе есть рецепт, примененный разработчиками в своем проекте.

Ребята сделали так, что сессии стали не нужны. Продвигая RESTfull подход, заставили браузер при каждом запросе передавать паспорт пользователя на сервер. А в паспорте главной информацией определили битовую маску, которая определяет, есть (1) или нет (0) разрешения (привилегии, права) у пользователя на действие, определяемое номером бита в маске.

Привилегия это обьект (значение бита в маске паспорта указывает на наличие этой привилегии у пользователя). Обьект включает в себя данные: идентификатор (тот самый номер, отвечающей номеру бита в маске); регулярное выражение для отбора, группировки урлов (урл однозначно определяет ресурс); метод (действие, типа GET, POST, DELETE, ...); разрешения (видимо, уточнение того, что можно сделать).

Понятное дело, паспорт подписан и зашифрован. Детали туманны, но идея понятна.

highload.ru/papers2008/7166

Идея хороша, кластер упрощается заметно. А пользователь пусть свой паспорт сам таскает. Неплохо.

Послушав доклад, понял, что помимо генерации толковых идей надо еще и уметь донести мысль. Риторикой надо занимацца серьезно тем, кто выступает. Очень нелегко было следить за ходом мысли докладчика. Если бы тема не была близко знакома, кроме разочарования докладом ничего бы не вынес.

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

Хорошо, наши мозги по прежнему скорее востребованы, чем нет.

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)