✨ Добавил ClickHouse в twir.app! 🚀
Пока записываю туда только:
- сообщения с чата
- использование команд
Что дало:
1. почти моментальный
- использование смайликов
Что дало:
1. почти моментальный
2. меньший размер таблички.
3. быстрое аггрегирование таймсерии для смайлов, для года данных — 30мс с клиента, а это значит общее затраченное время на запрос, нетворк раундтрипы, скан, вообщем весь цикл.
4. быстрая выборка топа, истории.
Есть ещё что туда писать, но пока не переделывал.
Подтюнил конфиг чтобы не писалось гигибайты логов, а то на работе есть некоторые таблички логов, которые вестя 70гб. Можно было бы просто выставить
Так же человек с чата подсказал на счёт того, чтобы для колонок использовать тип данных
Мигрировал данные из постгреса очень легко, просто выполнил:
Так как clickhouse очень быстрый, 13млн записей загрузилось что-то типо за 2 секунды.
Пока ограничил ему 2cpu и 3GB ram, что коненчо же смешно для клика, но больше гига оперативы он не потребляет на моих размерах.
Из ещё заметных плюсов — мне наконец пригодился паттерн репозитория, потому как из изменений я лишь написал репозиторий кликхауза, а интерфейсы и бизнесовый код никак не поменялся.
Прикрутил opentelemetry к клиенту клика, могу видеть query, их время.
Пока записываю туда только:
- сообщения с чата
- использование команд
Что дало:
1. почти моментальный
count() квери.- использование смайликов
Что дало:
1. почти моментальный
count().2. меньший размер таблички.
3. быстрое аггрегирование таймсерии для смайлов, для года данных — 30мс с клиента, а это значит общее затраченное время на запрос, нетворк раундтрипы, скан, вообщем весь цикл.
4. быстрая выборка топа, истории.
Есть ещё что туда писать, но пока не переделывал.
Подтюнил конфиг чтобы не писалось гигибайты логов, а то на работе есть некоторые таблички логов, которые вестя 70гб. Можно было бы просто выставить
ttl, но мне пока эти данные не нужны.Так же человек с чата подсказал на счёт того, чтобы для колонок использовать тип данных
LowCardinality(String) на часто повторяющиеся строки, что уменьшило их размер на диске в разы. Не знаю даёт ли это что-то в перформансе.Мигрировал данные из постгреса очень легко, просто выполнил:
INSERT INTO chat_messages
SELECT *
FROM postgresql('postgres:5432', 'twir_prod', 'chat_messages', 'twir', 'twir');
INSERT INTO channels_emotes_usages
SELECT id, "channelId" as channel_id, "userId" as user_id, "createdAt" as created_at, emote
FROM postgresql('postgres:5432', 'twir_prod', 'channels_emotes_usages', 'twir', 'twir')
Так как clickhouse очень быстрый, 13млн записей загрузилось что-то типо за 2 секунды.
Пока ограничил ему 2cpu и 3GB ram, что коненчо же смешно для клика, но больше гига оперативы он не потребляет на моих размерах.
Из ещё заметных плюсов — мне наконец пригодился паттерн репозитория, потому как из изменений я лишь написал репозиторий кликхауза, а интерфейсы и бизнесовый код никак не поменялся.
Прикрутил opentelemetry к клиенту клика, могу видеть query, их время.
❤7❤🔥4✍1🦄1
Satont.
✨ Добавил ClickHouse в twir.app! 🚀 Пока записываю туда только: - сообщения с чата - использование команд Что дало: 1. почти моментальный count() квери. - использование смайликов Что дало: 1. почти моментальный count(). 2. меньший размер таблички. 3. быстрое…
С метриками чутка пришлось повозиться, потому как из коробки клиент не имеет инструментария внятного, но всё же всё работает как я хочу.
Даже для
Даже для
batch запросов могу видеть сколько rows было внесено.❤🔥7
Satont.
✨ Добавил ClickHouse в twir.app! 🚀 Пока записываю туда только: - сообщения с чата - использование команд Что дало: 1. почти моментальный count() квери. - использование смайликов Что дало: 1. почти моментальный count(). 2. меньший размер таблички. 3. быстрое…
Ещё из прикольного — у меня для создания\запуска миграций используется собственная cli.
Докинул туда clickhouse, и теперь одним и тем же способом могу создавать\запускать миграции для этих бд.
Отвечая на вопрос вообще ПОЧЕМУ было принятно решение мигрировать эти данные из postgres:
Первая
Это аналитические данные, они чаще пишутся, чем читаются., и никогда не изменяются.
А так как пишутся они ну очень часто (на каждое сообщение с чата), то это создаёт лишнюю нагрузку постгресу, чего я бы хотел избежать.
Постгрес на инсерты делает очень много операций к диску, чем кликхауз не злоупотребляет.
Таким образом я скину большую часть нагрузки с постгреса. Когда накопится больше данных — покажу графики с графаны, но я уже вижу улучшения.
Вторая
Я просто хочу чуть глубже поиспользовать ClickHouse. Twir всегда был тем проектом, где я обкатываю технологии для себя, если нахожу им пременением. Мне кажется тут хорошее применение.
Добавил партишены на даты, и данными можно очень быстро оперировать при выборках.
Докинул туда clickhouse, и теперь одним и тем же способом могу создавать\запускать миграции для этих бд.
Отвечая на вопрос вообще ПОЧЕМУ было принятно решение мигрировать эти данные из postgres:
Первая
Это аналитические данные, они чаще пишутся, чем читаются., и никогда не изменяются.
А так как пишутся они ну очень часто (на каждое сообщение с чата), то это создаёт лишнюю нагрузку постгресу, чего я бы хотел избежать.
Постгрес на инсерты делает очень много операций к диску, чем кликхауз не злоупотребляет.
Таким образом я скину большую часть нагрузки с постгреса. Когда накопится больше данных — покажу графики с графаны, но я уже вижу улучшения.
Вторая
Я просто хочу чуть глубже поиспользовать ClickHouse. Twir всегда был тем проектом, где я обкатываю технологии для себя, если нахожу им пременением. Мне кажется тут хорошее применение.
Добавил партишены на даты, и данными можно очень быстро оперировать при выборках.
❤🔥10❤2👍2
Тестят новый рефрешнутный ui, хотя недвано совсем обновились с старого убогого.
Это дизайн с их вечно beta редактора Fleet.
Прикольно выглядит, мне нравится.
Пока только в
https://blog.jetbrains.com/platform/2025/06/testing-a-fresh-look-for-jetbrains-ides/?ref=dailydev
Это дизайн с их вечно beta редактора Fleet.
Прикольно выглядит, мне нравится.
Пока только в
2025.2 EAP, не в релизе.https://blog.jetbrains.com/platform/2025/06/testing-a-fresh-look-for-jetbrains-ides/?ref=dailydev
❤🔥5❤2👎2🆒2
РКН, мой любимый РКН.
Они стали блочить Cloudflare, Hetzner, и потому пришлось для Российских юзеров взять сервер, и направить главный домен twir.app на него, с которого уже идёт прокси до hetzner.
То есть сейчас
Соответственно я теряю сразу бенефиты Cloudflare по rate limit, anti-ddos, auto ssl, cache, anti-ai scrapping, font/img cdn optimization, фронтовые метрики аналитику (и вообще метрики) в числе которых: LCP, CLS, INP, pages visits, pages views, стата по странам и вот это всё, и кучу всего сверху, включая S3.
Очень здорово, круто. Спасибо РКН!
Теперь придётся больше селфхостить, больше париться.
Они стали блочить Cloudflare, Hetzner, и потому пришлось для Российских юзеров взять сервер, и направить главный домен twir.app на него, с которого уже идёт прокси до hetzner.
То есть сейчас
user -> proxy server -> hetzner proxy service -> service.Соответственно я теряю сразу бенефиты Cloudflare по rate limit, anti-ddos, auto ssl, cache, anti-ai scrapping, font/img cdn optimization, фронтовые метрики аналитику (и вообще метрики) в числе которых: LCP, CLS, INP, pages visits, pages views, стата по странам и вот это всё, и кучу всего сверху, включая S3.
Очень здорово, круто. Спасибо РКН!
Теперь придётся больше селфхостить, больше париться.
✍4😡2
Кто бы мог подумать.
Пока без подробностей от автора, но видимо его подписывали на одни условия, а потом продиктовали другие. Кто-то верит, что с nuxt будет иначе? Я — нет.
Если кто не шарит — это автор swc, одного из быстрейших бандлеров и парсеров js, написанный на rust. Его использует под капотом turbobuild.
Пока без подробностей от автора, но видимо его подписывали на одни условия, а потом продиктовали другие. Кто-то верит, что с nuxt будет иначе? Я — нет.
Если кто не шарит — это автор swc, одного из быстрейших бандлеров и парсеров js, написанный на rust. Его использует под капотом turbobuild.
GOWRAP
Библиотека на генерацию обёрток под интерфейсы, чтобы добавить в них реализацию разных вещей, например opentelemetry, логирование, валидацию, prometheus.
С помощью неё вы легко можете оборачивать ваши реализации по одному и тому же паттерну.
https://github.com/hexdigest/gowrap
Библиотека на генерацию обёрток под интерфейсы, чтобы добавить в них реализацию разных вещей, например opentelemetry, логирование, валидацию, prometheus.
С помощью неё вы легко можете оборачивать ваши реализации по одному и тому же паттерну.
https://github.com/hexdigest/gowrap
👍2
Мужик из Reyohoho пошёл, форкнул bttv, и добавил в него прокси, чтобы у вас малюток работал 1080р и смайлики с 7тв.
https://t.iss.one/reyohoho_twitch_ext
https://t.iss.one/reyohoho_twitch_ext
👍5🗿2
This media is not supported in your browser
VIEW IN TELEGRAM
Я опять на машинки дрифтовые смотрю.
🏆9❤🔥3🔥3🤪3
