Andrey
в каком месте?
Vladislav
У вас пришел запрос на удаление select его достал и пока не удалил event принимать не начнет
Andrey
там два вызова, close и delete. Чему там ломаться? Где там может быть блокировка?
Vladislav
mut.Lock() delete mut.Unlock()
Vladislav
чему ломаться?
Andrey
у меня там нет мутексов
Vladislav
Ну так с мьютексами тоже нечему ломаться.
Andrey
чтоб получить мутекс, надо подождать всех остальных
Andrey
не совсем про производительность. Добавление/удаление логгера может гипотетически заблокировать рассылку.
Vladislav
Как?
Vladislav
Если вы начали рассылку никто не сможет добавить.
Andrey
А если не начал?
Andrey
не, можно и так и так. Не спорю. Просто не вижу минусов в моём подходе
Andrey
у вас просто какие-то суеверия по поводу канала каналов.
Vladislav
Тогда и в вашем варианте приедет событие на удаление и пока оно не произойдет рассылка не начнется.
Andrey
нет.
Andrey
событие на удаление придёт в канал и будет ждать обработки
Zver
не, можно и так и так. Не спорю. Просто не вижу минусов в моём подходе
Может это ответ на вашу проблемму? https://stackoverflow.com/questions/36417199/how-to-broadcast-message-using-channel
Andrey
у меня проблема в другом была, я её уже решил :)
Vladislav
событие на удаление придёт в канал и будет ждать обработки
Это только если другие события уже начались. Иначе, оно начнет обрабатываться.
Andrey
да, согласен
Zver
видел этот тред, спасибо.
И никаких каналов каналов не надо. Все просто.
Andrey
там не рассматривается случай остановки воркера, в этом всё дело
Andrey
надо как-то сигналить (из воркера), основному процессу, чтоб закрыл канал и слайс воркеров почистил
Andrey
вот для этого и есть канал каналов
Vladislav
Добавил.
Andrey
А что если канал на удаление забит?
да, тут могут быть проблемы.
Andrey
надо на стороне подписчика постараться не блокироваться на попытке вызова RemoveLogger
Andrey
спасибо, что указали на эту проблему
Andrey
в подписчике вызову go RemoveLogger и продолжу читать. рано или поздно канал закроется
Andrey
я тогда каналы сделаю без буфера, чтоб убедиться в отсутствии дедлоков
Zver
там не рассматривается случай остановки воркера, в этом всё дело
От чего у вас зависит количество воркеров и кто решает менять их количество?
Andrey
от чего у вебсервера зависит количество коннектов к нему? Примерно то же самое
Andrey
на каждого клиента (сеодинение) - свой воркер, который отдаёт контент (эвенты в моём случае)
Zver
от чего у вебсервера зависит количество коннектов к нему? Примерно то же самое
Не вижу тут того же самого. Воркеры ждут сообщения от броадкастера, кто решает, что их должно быть 10, а не сто 100, к примеру.
Andrey
программа обслуживает внешние соединения. При соединении клиенту отдаётся поток, который обслуживается воркером.
Andrey
подключится 100 клиентов, будет сто воркеров
Vladislav
подключится 100 клиентов, будет сто воркеров
Почему бы тогда сразу в коннекты не писать?
Andrey
кем? одной горутиной? А если клиент тупит (сам или изза проблем с сетью), остальные ждать будут?
Andrey
не, ну вообще можно. В ТЗ про многопоточность ничего не сказано :)
Vladislav
кем? одной горутиной? А если клиент тупит (сам или изза проблем с сетью), остальные ждать будут?
Если у вас клиент тупит, то он может не отправить до появления следующих N event. Это откладывает проблему, а не решает ее.
Vladislav
Но в один поток, конечно, неприкольно.
Andrey
да, это не решает проблему, но не создаёт проблем для остальных клиентов
Vladislav
да, это не решает проблему, но не создаёт проблем для остальных клиентов
Ну как это не создает? рутина ждет пока отправится запрос. Не достает из канала. Канал забивается. Запись в него блокируется.
Andrey
клиенты общаются по grpc и у потока нет неблокирующей отсылки, поэтому приходится использовать горутины и каналы с селектом
Vladislav
Конечно, ограничения есть. Память не бесконечная. Тут нужно вовремя все бросить и иметь таймауты.
Andrey
надо тогда таймауты реализовать какие-то
Andrey
пока я только буферизацию сделал, а она и правда нерезиновая
Andrey
таймаут на отсылку сообщения в воркере. Если она произошла, то воркер сам себя прибивает через RemoveLogger
Andrey
но пока буду делать просто с большим буфером
Andrey
всем спасибо, в особенности @GruchikVlad и @onokonem
Oleg
возможно задам очень просто вопрос, но всё же, если приходят в урле параметры ...?key1=value1&key2=value2. Как можно это распарсить в json строку, что бы потом можно было загонять это в структуру? просто если делать через url.ParseQuery, то он возвращает Values, а это map[string][]string, а мне это не очень подходит, хотелось бы получить тоже строку, а не массив строк
Илья
http://www.gorillatoolkit.org/pkg/schema ?
Vladislav
надо тогда таймауты реализовать какие-то
На уровне grpc можно таймауты поставить, если я правильно вас понял.
Andrey
только для соединения
Denis
http://www.gorillatoolkit.org/pkg/schema ?
+1 еще есть https://github.com/go-playground/form и другие либы
Maksim (Ellrion)
или https://godoc.org/github.com/mitchellh/mapstructure
Maksim (Ellrion)
получили мапу а уже ее на структуру переложили
Oleg
val.Encode()
не совсем то что нужно, насколько я понимаю, он как раз преобразует параметры в строку того формата, который я скинул, а мне наоборот)
Oleg
да, спасибо огромное, разобрался))
Maksim (Ellrion)
на край можно мапу в джейсон а потом джейсон уже в структуру)
Anonymous
привет, прошу разблокировать @kukumbership он тут очень много сообщений написал по делу
Slava
А не по делу?
Evgeny
#вакансия #go #Москва Вакансия ведущего Golang разработчика. Москва Компания IBC Labs. Мы разрабатываем решения для бизнеса на базе блокчейн технологий, продукты для управления цифровыми активами в распределенных реестрах, инструментарий для биржевой торговли криптовалютами. Сейчас мы в поиске ведущего Golang разработчика. Требования: - Опыт работы от 5 лет; - Опыт коммерческой разработки на golang; - Знание алгоритмов и структур обработки данных, понимание сложности алгоритмов; - Знание SQL и понимание оптимизации запросов; - Опыт разработки высоконагруженных систем. Будет плюсом: - Знание других языков программирования; - Опыт работы PostgreSQL; - Опыт работы с различными NoSQL СУБД; - Опыт разработки распределённых систем; - Понимание принципов работы блокчейн технологий. Обязанности: - Разработка проектов на базе блокчейн технологий; - Разработка финансовых сервисов для криптовалютных продуктов; - Участие в формировании архитектуры; - Написание unit-тестов; - Участие в процессах CI/CD. Что мы за это готовы предложить: - Здравый смысл, драйв, интересные задачи и сильную команду профессионалов, любящих свое дело. - Вменяемый менеджмент; - Официальное оформление и оклад в размере 180 - 250 000 net. - Гибкий график работы, который позволит максимально использовать рабочее время и эффективно взаимодействовать с командой. - Офис на Новом Арбате с видом на Москву. Контакты: T:@colddecember E:e@ibclabs.com
🎉
Стал паковать чямоданы только потому что, здравый смысл и вид на дефолт сити))))
🎉
#вакансия #go #Москва Вакансия ведущего Golang разработчика. Москва Компания IBC Labs. Мы разрабатываем решения для бизнеса на базе блокчейн технологий, продукты для управления цифровыми активами в распределенных реестрах, инструментарий для биржевой торговли криптовалютами. Сейчас мы в поиске ведущего Golang разработчика. Требования: - Опыт работы от 5 лет; - Опыт коммерческой разработки на golang; - Знание алгоритмов и структур обработки данных, понимание сложности алгоритмов; - Знание SQL и понимание оптимизации запросов; - Опыт разработки высоконагруженных систем. Будет плюсом: - Знание других языков программирования; - Опыт работы PostgreSQL; - Опыт работы с различными NoSQL СУБД; - Опыт разработки распределённых систем; - Понимание принципов работы блокчейн технологий. Обязанности: - Разработка проектов на базе блокчейн технологий; - Разработка финансовых сервисов для криптовалютных продуктов; - Участие в формировании архитектуры; - Написание unit-тестов; - Участие в процессах CI/CD. Что мы за это готовы предложить: - Здравый смысл, драйв, интересные задачи и сильную команду профессионалов, любящих свое дело. - Вменяемый менеджмент; - Официальное оформление и оклад в размере 180 - 250 000 net. - Гибкий график работы, который позволит максимально использовать рабочее время и эффективно взаимодействовать с командой. - Офис на Новом Арбате с видом на Москву. Контакты: T:@colddecember E:e@ibclabs.com
https://t.me/golangjob
freezlite
Дано 2 точки на карте в градусах широты и долготы каждая и радиус в км. Как определить входит ли точка в радиус другой точки?
freezlite
Некоторая погрешность допускается
Anton
тебе в канал pro.geometriya
freezlite
@twentydraft я прошу прощения, в чем суть?
Nurzhan
@twentydraft я прошу прощения, в чем суть?
Мне кажется, что земля эллипсоид, в этом суть