@Tishka17
Tishka17
16 Feb 2016

Представьте себе такую задачу: из БД путем нехитрого запроса к хранимой процедуре выгребаются данные, конвертятся в нужный формат (json, например, или что-то не сильно сложнее) и отдаются клиенту, который их хваатает по https (http вряд ли будет). Иногда надо будет объединять данные из нескольких запросов. Предполагается, что статики будет немного.
Что выберете для разработки?
Что будет лучше работать при нагрузке в 100-500 запросов в секунду?
Какой web-сервер использовать?

16 Feb 2016

postman, а фреймворк? у меня щас на коленке набацан прототип на webpy, вот думаю на что переписать

#ipwth/2 в ответ на /1
16 Feb 2016

Tishka17, да вообще похуй с такими требованиями, фласк бы взял.

#ipwth/3 в ответ на /2
16 Feb 2016

postman, глянул, выглядит посимпатичнее webpy

#ipwth/4 в ответ на /3
16 Feb 2016

Java. На базе HttpCore сооружу серверок, который из коробки будет уметь в https и держать тысячи rps при сотне worker-thread'ов. На базе jdbc драйвера к базе буду делать запросы. Всего делов на пару дней.

16 Feb 2016

hirthwork, а я слышал что в джаве https медленный и рекомендуют перед ней стаивть nginx

#ipwth/7 в ответ на /5
16 Feb 2016

fgntfg, спасибо, но мне это потом сопровождать ещё

#ipwth/8 в ответ на /6
16 Feb 2016

Я бы взял php, потому что я умею его лучше других языков.

16 Feb 2016

слышал

кстати, не вижу проблемы поставить nginx. он послужит точкой сокращения количества входящих keep-alive соединений

#ipwth/10 в ответ на /7
16 Feb 2016

fgntfg, у меня никто php не умеет. писать и я напишу, но кодом это будет сложно назвать

#ipwth/11 в ответ на /9
16 Feb 2016

Подключение к бд - 3 строчки, обработка параметров запроса еще 3, запрос к бд - строчка, превращение результата в json еще одна строчка.
Объединение данных из нескольких запросов я бы отдал бд, они с этим лучше работают.

#ipwth/12 в ответ на /11
16 Feb 2016

поковырять конфиг gunicorn и в него взгромоздякать flask. должно прокатить.
Если не вдруг будет справляться с терминацией https, то втащить nginx рядом.

16 Feb 2016

fgntfg, там этих запросов будут десятки разных. А объединение данных - разнородные в одну стркутуру надо будет запихнуть

#ipwth/14 в ответ на /12
16 Feb 2016

Бери то, что уже есть и не плоди сущности без надобности

#ipwth/15 в ответ на /11
16 Feb 2016

igelko, он сам посебе ставится или рядом с лайти каким-нибудь?

#ipwth/16 в ответ на /13
16 Feb 2016

fgntfg, есть прототип на webpy и джава разработчики :-)))

#ipwth/17 в ответ на /15
16 Feb 2016

если есть джава разработчики, то дай им HttpCore и не мучайся

#ipwth/18 в ответ на /17
16 Feb 2016

hirthwork, да у них своей работы полно и своих заморочек на чем они будут писать

#ipwth/19 в ответ на /18
16 Feb 2016

кстати самое важное-то - а сколько времени оно висит в ожидании данных из запроса?
Если по секунде, то тебе 500 тредов надо держать при классическом подходе - тред на запрос, что уже стрёмно.

16 Feb 2016

igelko, ну клиент готов и больше секунды подождать данных. А реально сколько они будут доставаться из базы - ну допустим секунду

#ipwth/22 в ответ на /21
16 Feb 2016

gunicorn - он нормальный http-сервер, примерно как apache по архитектуре. т.е. можно при желании наружу выставлять.

#ipwth/23 в ответ на /16
16 Feb 2016

У постгреса плюсовый драйвер умеет в асинхронные запросы. В этом случае хватит одного воркера

#ipwth/25 в ответ на /21
16 Feb 2016

Думаю что названия функций будут такие же даже.

#ipwth/27 в ответ на /20
16 Feb 2016

Tishka17, а в качестве замены бд - MapDB или самописный кэш с персистенсом в файл

16 Feb 2016

втащи прототип на полноценный http-сервер и посмотри сколько rps из него выжимается.
может и не надо ничего трогать.

#ipwth/29 в ответ на /17
16 Feb 2016

deemess, да не будет такого. там в БД уже есть всякая логика и связка с другими приложениями.

#ipwth/30 в ответ на /28
16 Feb 2016

это уже надо чутка думать, как код написать, а не тяп-ляп и...

#ipwth/32 в ответ на /25
16 Feb 2016

igelko, это да, так и попробую в любом случае

#ipwth/33 в ответ на /29
16 Feb 2016

А перед этим всем ставишь nginx https заодно и статику на нем раздаешь - кэшируешь

16 Feb 2016

igelko, зачем думать, когда обезьяна патчит?

#ipwth/35 в ответ на /32
16 Feb 2016

ПолезныйКомментарийНомер1

#ipwth/36 в ответ на /31
16 Feb 2016

и тормозить будет примерно также ^^'

#ipwth/37 в ответ на /27
16 Feb 2016

Tishka17, тогда кэш запили между базой. Запросы jdbc. Но я бы базу к херам выпилил. Производительность баз примерно 1000 инсертов в секунду

#ipwth/39 в ответ на /30
16 Feb 2016

с psycopg2 немножко не так прозрачно всё, если ты об этом.
да и я бы предпочёл чутка подумать. код страшнее, но контроля больше.

#ipwth/40 в ответ на /35
16 Feb 2016

deemess, зачем мне кэш, если данные генерируются в БД и они могут меняться на каждый запрос?

#ipwth/41 в ответ на /39
16 Feb 2016

deemess, а без базы ты мне как реляционное хранилище соорудишь и разнородные приложения к нему подцепишь?

#ipwth/42 в ответ на /39
16 Feb 2016

это у тебя или инсерты суровые или железо - топка локалхоста.
прожевать 200к записей меньше чем за минуту - объективная реальность.

#ipwth/43 в ответ на /39
16 Feb 2016

официальный оракловый mysql-connector написан на чистом питоне, значит можно устроить страх и ненависть на зелёных тредах.

Комментарий был отредактирован в 23:42:55 16.02.2016
#ipwth/44 в ответ на /26
17 Feb 2016

fgntfg, а для тупых: внутри json-объекта я могу сделать foreign key на другую таблицу? Ну и мне это все равно не подойдет, у меня там не только json может быть на выходе

#ipwth/46 в ответ на /45
17 Feb 2016

Там какие-то хитрости с ключами, мне, если честно лень читать доки. Я тебя понял. Статья не по теме значит.

#ipwth/47 в ответ на /46
17 Feb 2016

да ладно тебе. http запрос - время ожидания пару секунд - ок. Объемы данных - ну по десятку килобайт хитрого json-а может

#ipwth/49 в ответ на /48
17 Feb 2016

Tishka17, число каммментов добежало до полтинника, пока этот вопрос не всплыл.
это уже индикатор того, что не та среда для обсуждения подобного.
лишнее доказательство того, что тут народ умеет лишь проталкивать свои сексуально-религиозные предпочтения. а значит, ни у кого из них нет опыта работы в роли системного аналитика или хотя бы сеньйора.
в лучшем случае тут найдётся парочка тимлидов и кто-нибудь мнящий себя манагером. т.е. тот сорт сотрудников, что носит куриный супчик на рабочие места приболевшим разработчикам. и следит за тем, чтобы они комитя кода отмечали к каким багам и таскам оно относится.

#ipwth/50 в ответ на /49
17 Feb 2016

всё это легко реализуется на java вот буквально строк в 200 и возьми tomcat. Проблема решена.

#ipwth/51 в ответ на /50
17 Feb 2016

Да она на чем угодно решаема в 200 строк. Вопрос, надо ли. С учетом прошлго треда про старт джавы я сильно сомневаюсь в ее необходимости как факта

#ipwth/52 в ответ на /51
17 Feb 2016

Пойнт - это не та среда, где обычно обсуждают брутальный хайлоад на кластерах =)
Человек попросил ридонли сервис на 100-500 rps с 95й процентилью где-то до двух секунд, который большую часть времени курит-ожидает ответ от базы, что в общем-то требует от разработчика только чуть-чуть головой подумать - никакого рокет сайенса.

#ipwth/53 в ответ на /50
17 Feb 2016

Жабе не положено часто стартовать. ей надо подняться 1 раз, прогреться, и работать не выключаясь, потому что JIT.
Но как по мне, наколеночную поделку на питоне поддерживать проще, ибо меньше строчек.

#ipwth/54 в ответ на /52
17 Feb 2016

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

#ipwth/56 в ответ на /55
17 Feb 2016

igelko, ну на самом деле там на каждое чтение будет запись. Но все внутри процедур, так что не паримся

#ipwth/57 в ответ на /56
17 Feb 2016

ок. автокоммит - приемлемый режим работы?

#ipwth/58 в ответ на /57
17 Feb 2016

жаль. это значит 500 соединений к базе для 500 rps. бедная база.

#ipwth/60 в ответ на /59
17 Feb 2016

igelko, я искренне надеюсь, что ребята напрягутся и сделают процедуры, отвечающие за 50-100мс

#ipwth/61 в ответ на /60
17 Feb 2016

тогда всё норм, да. кстати, почему хранимки, а не всё в аппсервере? эту логику надо шарить между разными приложеньками?

#ipwth/62 в ответ на /61
17 Feb 2016

еньк

Когда хоть вы все сдохнете, мрази.

#ipwth/64 в ответ на /62

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.