scif_yar: (Default)
[personal profile] scif_yar
Тут в ЖЖ зашел разговор "а вот QR code он ууу".
Ну, за исключением пропущенной гражданином в рассуждениях вводной, что сам по себе QR это 2 с небольшим КБ текста -
177x177 grid, depending on desired level of error correction, can store between 1273 and 2953 bytes.

то возникает вопрос, а что бы я туда заложил, в этот QR код?
Какие данные и вообще?
Пусть у нас 2 килобайта, это вообще то дофига - и из них 256 бит это хеш и 512 бит это ЭЦП по ГОСТ_34.10-2018.
номер паспорта у нас NNNN - NNNNNN, это максимум 9999-999999, что с запасом в разы. Но место мы будем экономить и внесем только 4 последние цифры паспорта (больше и не надо) -
10.0111.0000.1111 АЖ 14 БИТ. ну 16, чего нам.
Еще мы ленивые и будем фигачить прямо по строкам, по два байта как положено в UTF16.
К черту это кроение.
4 на номер паспорта, 8 на дату и рождения, 1 на пол, 8 на дату выписки, 8 на срок "действует до", часы нам не нужны, и дальше можно в принципе влепить геолокацию
For a regular GPS module, 24 bits might be good enough to match its actual accuracy, so just 6 bytes are needed to send both latitude and longitude.
это слезы на общем фоне.

Сколько можно запихнуть в жпс .. ну пусть у нас кусок 200*200 км порезан на квадраты 200*200 метров. это аж 1000 на 1000 сетка КАК СТРАШНО ТО это ж надо 100.0000.0000 3 на 3 байта отдать под координаты!!1111расрас.
Общем, технологически в 2 кб разве что фото не засунуть в сколько-то понятном качестве

Проблема ровно одна - проверка ЭЦП всего этого колхоза. Вообще можно и без ЭЦП, на секурити овер обскурити, в смысле вся генерация идет на сервере и что там в каком байте лежит - большой вопрос, но это ж надо верить то, что ленивые жопы сделают нормальную перемешивалку. Чего конечно не будет, так что ЭЦП.
Вообще никаких проблем не вижу, к слову - кроме автоматизации выдачи этих 2 кб сертифкатов и рассылки актуальных \ отозванных по планшетам патрулей.
И ТО.
2 кб сертификат. 10 миллионов в первый день.
20 Гб сертификатов. дофига для планшета - там всего то 64 гб флешка, ггггг.
Ну, дофига в том смысле, что сертификаты генерируют за скажем 3 часа до похода, это пиковые 2 млн сертификатов, или 4 гб, которые надо за час слить с сервера по перегруженной сети.
С другой стороны если сертификат урезать до 256 байт (в 10 считай раз), 128 на текст и 128 на ЭЦП, то это всего 0,2 кб * 2 млн = 400 мб.
Причем большая часть из этих 400 Мб - это голый сжимаемый текст.

Блин. Задача похоже уровня ИЗИ. И будет внедрена.

Date: 2020-04-04 04:11 pm (UTC)
elglin: (Default)
From: [personal profile] elglin
4 Гб за час слить с сервера - это порядка 1 Мбайт/с. Сейчас в миллионниках за относительно копеечные деньги можно заиметь 10 Мбайт/с. Чтобы группа серверов спокойно отдавала 1 ГБайт/с - это халява.

На самом деле, задача ни фига не ИЗИ, потому что это все-таки настоящий хайлоад, и мамкиным сервером в чулане не обойдешься. Но всякими Яндексами и Мэйлру подобные задачи успешно решались лет десять назад, а сейчас даже я, если напрягусь, смогу выдать решение, которое будет good enough for government work.
На самом деле все до смешного похоже на мессенджер. Запрос QR - сообщение, на нотифайки подписываются патрульные планшеты. Телеграмные чаты на тысячи юзеров живут и не гундят.
Так что концептуально ты прав, но вот реализация все-таки займет свое время.

Date: 2020-04-05 04:27 pm (UTC)
elglin: (Default)
From: [personal profile] elglin
50 Гбит/сек - это, на самом деле, нетривиально. А уж Гбайт и подавно.
Тебе нужен шардинг, тебе нужны реплики, тебе нужен Paxos или Raft между репликами. Причем, возможно, придется отдельно шардить по патрулям и по запросам.
При таких объемах, конечно, можно всю базу держать целиком в памяти. Да и по иопсам не так все плохо - у тебя будут тысячи RPS, которые преобразуются в десятки тысяч иопсов, что с учетом шардинга даст тысячи иопсов на хост - это сложненько собрать на классических хардах, а вот на SSD не проблема, да и DWPD тут не ожидается громадный, на терабайтном SSD меньше 1 будет.
Но с наколеночным дизайном есть громадный шанс либо просрать шмат базы, либо влететь в неконсистентность, либо встать колом из-за перегруза, либо все три варианта сразу. Впрочем, good enough for government work.

Date: 2020-04-05 04:33 pm (UTC)
elglin: (Default)
From: [personal profile] elglin
Это ты джунов на интервью не видел. Без ложной скромности, я понимаю в хайлоаде достаточно много для человека, в нем не работающего, но от вопроса "как вы спроектируете Реддит" (мне задавали как-то) я присяду. Мне чой-та кажется, что сегодняшний джун, особенно зашедший в ИТ потому что модно, на такой вопрос вообще вытаращится, как баран на новые ворота.

Date: 2020-04-05 04:39 pm (UTC)
elglin: (Default)
From: [personal profile] elglin
Проблема не с курлом, на клиенте-то его хватит, горлышко не на клиенте. Проблема в том, что с той стороны курла. А с той стороны курла задача уровня lighttpd и nginx, которая намертво убьет апач или IIS.
Хотя как сказать... на хипстерском aiohttp или аналогах люди снимают 4k rps с ядра на тестах, я не совсем на тесте раскручивал до 800 - так что в предположении тысяч rps с учетом шардинга и т.п. даже питона хватит, а ведь у нас еще есть голанг и плюсы.

Date: 2020-04-05 07:03 pm (UTC)
From: [personal profile] thagastan
"Всех утопить!"

Date: 2020-04-05 09:40 pm (UTC)
From: [identity profile] antontsau.livejournal.com
эээ, ну все же рассылать все сертификаты всем ментам (2 млн принято - 20 кролегов проверено) - это как-то очень криво. И по нагрузке и по тому, что этот прошел а этот не прошел и начинаются разборки. Надо наоборот, проверка в некоем едином центре, а не в автономной базе на планшетике. Но это, конечно, требует постоянной, в любой момент, связи этого планшетика с центром.

Впрочем, всех сразу перестрелять гораздо проще, чтоб не мучались.

Profile

scif_yar: (Default)
scif_yar

December 2025

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
28 293031   

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 26th, 2026 05:21 am
Powered by Dreamwidth Studios