QR code срач
Apr. 4th, 2020 05:16 pmТут в ЖЖ зашел разговор "а вот 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 Мб - это голый сжимаемый текст.
Блин. Задача похоже уровня ИЗИ. И будет внедрена.
Ну, за исключением пропущенной гражданином в рассуждениях вводной, что сам по себе 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 Мб - это голый сжимаемый текст.
Блин. Задача похоже уровня ИЗИ. И будет внедрена.
no subject
Date: 2020-04-04 04:11 pm (UTC)На самом деле, задача ни фига не ИЗИ, потому что это все-таки настоящий хайлоад, и мамкиным сервером в чулане не обойдешься. Но всякими Яндексами и Мэйлру подобные задачи успешно решались лет десять назад, а сейчас даже я, если напрягусь, смогу выдать решение, которое будет good enough for government work.
На самом деле все до смешного похоже на мессенджер. Запрос QR - сообщение, на нотифайки подписываются патрульные планшеты. Телеграмные чаты на тысячи юзеров живут и не гундят.
Так что концептуально ты прав, но вот реализация все-таки займет свое время.
no subject
Date: 2020-04-04 05:28 pm (UTC)-
не 4.
Пусть у нас 1 миллион сертификатов (а это именно он), размером 256 байт каждый. Обновление раз в час .. ну пусть все побежали и у нас 2 миллиона.
512 Мб. За час на планшет - это обновления в час пик.
8 мб\мин, 136 кб/с.
Общем если грамотно кроить - это конечно хайлоад, в том смысле что придется делать NLB, но в целом ..
ну пусть у нас 200*200 - как я уже сказал 1000*1000, 10е6 квадратов, и дофига, 100е3, патрулей. Каждый патруль сосетЪ ну пусть 0.5 мб/с, это 50 мб е3 = 50 гб/сек данных, это ж ЦЕЛЫХ 4 16 гиговых интерфейса!!
no subject
Date: 2020-04-05 04:27 pm (UTC)Тебе нужен шардинг, тебе нужны реплики, тебе нужен Paxos или Raft между репликами. Причем, возможно, придется отдельно шардить по патрулям и по запросам.
При таких объемах, конечно, можно всю базу держать целиком в памяти. Да и по иопсам не так все плохо - у тебя будут тысячи RPS, которые преобразуются в десятки тысяч иопсов, что с учетом шардинга даст тысячи иопсов на хост - это сложненько собрать на классических хардах, а вот на SSD не проблема, да и DWPD тут не ожидается громадный, на терабайтном SSD меньше 1 будет.
Но с наколеночным дизайном есть громадный шанс либо просрать шмат базы, либо влететь в неконсистентность, либо встать колом из-за перегруза, либо все три варианта сразу. Впрочем, good enough for government work.
no subject
Date: 2020-04-04 05:34 pm (UTC)-
(мрачно) такие задачи наверное сейчас решаются джунами на порнохабе на интервью. Потому что там загрузка масштаба "как российский интернет весь"
no subject
Date: 2020-04-05 04:33 pm (UTC)no subject
Date: 2020-04-04 05:38 pm (UTC)-
Это все файловое, так что 6 файлов с новыми сертифкатами и revok листами.
curl и понеслась.
no subject
Date: 2020-04-05 04:39 pm (UTC)Хотя как сказать... на хипстерском aiohttp или аналогах люди снимают 4k rps с ядра на тестах, я не совсем на тесте раскручивал до 800 - так что в предположении тысяч rps с учетом шардинга и т.п. даже питона хватит, а ведь у нас еще есть голанг и плюсы.
no subject
Date: 2020-04-05 08:57 am (UTC)нуачо. Аусвайс он и есть аусвайс, сотовые сети есть, написать прогу под андроед - за недельку с чаем, или за месяц по выходным.
no subject
Date: 2020-04-05 09:08 am (UTC)no subject
Date: 2020-04-05 10:37 am (UTC)Пристать в Голландию готовый:
На нем мерзавцев сотни три,
Две обезьяны, бочки злата,
Да груз богатый шоколата,
Да модная болезнь: она
Недавно вам подарена.
no subject
Date: 2020-04-05 07:03 pm (UTC)no subject
Date: 2020-04-05 09:40 pm (UTC)Впрочем, всех сразу перестрелять гораздо проще, чтоб не мучались.
no subject
Date: 2020-04-05 11:35 pm (UTC)-
вот именно.