
Стас Щетинников
22.05.2017
08:16:11

Константин
22.05.2017
08:18:08
Привет всем! У меня дурацкий вопрос, т.к. в языке совсем новичек. Мне необходимо написать сервис для хранения большого количества json строк. Такая коллекция, куда можно пушить построчно данные, а потом всей толпой забрать
Сделал юникс сокетами, все данные отлично прилетают и ответы уходят. Вопрос, как хранить эти данные?
Ведь если я правильно понимаю, слайсы тут уже не канают

Google

Alexei
22.05.2017
08:19:39
если формат json'а один, то в структурах можно хранить
опять же, смотря сколько хранить, может удобнее в БД писать

Константин
22.05.2017
08:20:30
нужна высокая скорость приема и очистка сразу при отдаче

Alexei
22.05.2017
08:21:32
in memory БД, типа aerospike можно использовать

Константин
22.05.2017
08:21:59
на эликсире все круто написалось, там есть спецовые структуры данных очень быстрые и тэйлколл оптимизированный. Вот хочу сравнить производительность языков в этой задаче

Alexei
22.05.2017
08:21:59
но у него есть проблемы при хранении на дисках, не все бины удаляются в open-source версии

Константин
22.05.2017
08:23:30
что если простым append делать?
Я так понимаю, что постоянно будет создаваться новый массив и срез из него?

Alexei
22.05.2017
08:24:27
у меня нечто похожее сейчас написано, но там надо хранить данные всегда и раз в минуту они обновляются, количество данных среднее (гео-данные о всех поездах и наземном транспорте города), я map использую с ключом struct и и значениями struct, так же. работает быстро. все держится в памяти

Константин
22.05.2017
08:25:44
Т.е. мапы всегда в памяти и у них нет ограничений?
Попробую мапом сделать

Alexei
22.05.2017
08:27:02
они памятью ограничены, но там не сложные структуры, поэтому одно показание кушает "мало" места, а ключ тем более, два int

Константин
22.05.2017
08:35:40
хмм.. вот тут я лопухнулся

Google

Константин
22.05.2017
08:35:49
а ключ то в мапе надо самому задавать)
автоинкремент не предусмотрен?

⠀
22.05.2017
08:36:25

Alexei
22.05.2017
08:36:39

Andrey
22.05.2017
08:38:43
парень просто решил побуферизовать логи перед кибаной/лог стешем

Константин
22.05.2017
08:39:08
перед кликхаусом

Andrey
22.05.2017
08:39:23
ну как бы это костыль)

Alexei
22.05.2017
08:39:44
у логов же есть дата/время, если в UnixNano, то это и может быть идентификатором, в тоерии

Andrey
22.05.2017
08:39:53
если хочешь сделать по уму - делай евент-бейзд, без выкрутасов, кафка ест с рук все что даешь
если логи собираются с разных источников - нет)

Alexei
22.05.2017
08:40:36
с разных - нет, согласен, но источник/дата-время может быть ключем, в таком случае

Константин
22.05.2017
08:40:59
в сек до 1к таких записей

Alexei
22.05.2017
08:41:07
у меня так сегмент/идентификатор трака

Константин
22.05.2017
08:41:14
одинаковые ключи получаются

Alexei
22.05.2017
08:42:26
ну тогда слайс использовать, идентификатор тебе не нужен же, по идеи, раз ты все данные разгружаешь

Andrey
22.05.2017
08:42:43
мы с кликов в глиспе делали хеши и клали рядом

Константин
22.05.2017
08:43:13
на сайт заходит человек и смотрит большое количество баннеров , надо собирать метрику по каждому баннеру. Т.е. с 1 человека от 15 до 30 записей
в среднем онлайн 150-200 человек, генерируют около 50 открытий страницы в сек. вот и получается 50*20 = 1000 в сек
спасибо) более-менее разобрался в вопросе, скорее всего остановлюсь на эликсире

Andrey
22.05.2017
08:46:55
решать тебе, конечно, но есть нефиговый SPoF

Google

Andrey
22.05.2017
08:47:10
это твой апп в этом случае, который в пике может уйти поспать
я бы развязал пост и агрегацию, так проще будет скейлить

Sander
22.05.2017
08:52:53
@schetinnikov
пишут у нас ребята на php.
не знаю мне посоветовали ребята из другой группы использовать ddd.

Andrey
22.05.2017
08:53:15
гони их тряпками
пэхэпешников этих!

Sander
22.05.2017
08:54:02
мм, тогда как лучше всего проектировать проекты на go
про ddd, мне именно гошники посоветовали

Andrey
22.05.2017
08:54:30
лучше всего методом северозападного угла

RunOver
22.05.2017
08:57:20
Смотрю на зверька Go, и не могу понять, то ли это собака, то ли это сулик.

Phil
22.05.2017
08:57:59
суслик
это деформация зайчика Plan9

RunOver
22.05.2017
08:59:06
Знакомая гошница вообще думала все годы, что это Медведь.

kolas
22.05.2017
08:59:50
у них же на сайте написано gopher

Константин
22.05.2017
09:05:26
В своей стихии он очень даже крут
Кстати, а go поддерживает hot code reload??

Andrey
22.05.2017
09:08:37

Константин
22.05.2017
09:09:21
чтоб не останавливать приложение

Andrey
22.05.2017
09:10:10

⠀
22.05.2017
09:11:59

Google

Константин
22.05.2017
09:15:37
Да фиг его знает. Вот работает у тебя веб приложение, люди заказы делают, црм крутится, создание заявки занимает пол секунды и добавляет кучу данных в разные базы. Но не хайлоад, смысла нет брать больше одного сервера и поднимать что-то кроме go и mysql
И чтобы обновить приложение - надо всех предупредить об отключении, перезапуститься и заново всех запустить

Vladimir
22.05.2017
09:16:34
Кажется тебе просто нужен graceful shutdown

Константин
22.05.2017
09:18:26
Т.е. один фиг остановка) Это я про плюсы пхп сейчас

Vladyslav
22.05.2017
09:19:23
то есть ты на продакшне хочешь код править, как в старых добрых традициях пхп?
Через фтп еще скажи

Константин
22.05.2017
09:20:31
не обязательно
но это тоже плюс

Admin
ERROR: S client not available

Ilnar
22.05.2017
09:20:38

Vladyslav
22.05.2017
09:21:30
или рядом поднял новый код, на другой порт повесил, перенапавил все новые запросы туда, а старый потушил

Константин
22.05.2017
09:21:43
Блин)) ну компилируемый код и скриптовый.. разные темы)) говорить, что php плохой нет смысла, т.к. он просто другой

Andrey
22.05.2017
09:31:29
там, где пхп хорош, го закрывает его задачи лучше)
просто иметь сингл-тред в 2017 эт как-то даже забавно

Sander
22.05.2017
09:32:30
мне нравиться больше go чем php
особенно писать веб больше нравиться

Константин
22.05.2017
09:32:55

Andrey
22.05.2017
09:33:05
питон с его gil тоже поделие

Sander
22.05.2017
09:33:13
но пока что не очень понимаю, как мне лучше реализовывать свою программу на го

Константин
22.05.2017
09:33:16
В плане что что-то просто может нравиться больше)

Google

Sander
22.05.2017
09:33:17
напистаь код я могу конечно

Andrey
22.05.2017
09:33:24
метод северозападного угла !

m
22.05.2017
09:41:14
А кто-то использует runtime.LockOSThread() ? Если да, то для чего?

Константин
22.05.2017
09:48:23
https://www.youtube.com/watch?v=rn6D_YFMpow&app=desktop
Может кому интересно будет
только в начале со звуком у них проблема была, надо немного перелистнуть

Denis
22.05.2017
09:56:11

m
22.05.2017
09:56:37

Igor
22.05.2017
09:58:52

Denis
22.05.2017
10:12:27
Ничего не даёт
Сишные либы для работы с опенгл
И прочими
Требуют чтобы вызов был совершен с одного треда
Либо либы которые юзают tls
Либо каким-то раком используют идентификатор треда для своих нужд

Dmitry
22.05.2017
15:25:13
привет! а есть io.MultiWriter но только со статистикой? :)

Che
22.05.2017
16:17:12
люди добрые, go get может забрать с гитхаба тестовый бранч?

Denis
22.05.2017
16:23:30
Нет

Che
22.05.2017
16:27:49
а как вы это делаете тогда?

Denis
22.05.2017
16:28:30
Пакетные менеджеры

Alexey
22.05.2017
16:28:31
в директории проекта в /src : git checkout test, и потом godep save ещё для надёжности