38.2K subscribers
1.54K photos
39 videos
5 files
1.7K links
Download Telegram
🦫Создание оркестратора для событийно-ориентированного приложения с Golang и RabbitMQ

Определение требований
Номера в гостинице бронируются по мере доступности.

Создадим конвейер передачи запроса на бронирование номера по различным сервисам: резервирования, проверки, зачисления средств, бронирования.

Сервисам не нужно ждать ответа друг от друга — они даже не «знают», откуда запрос: у каждого сервиса только одна задача, и он хорошо с ней справляется. Это называется снижением связанности. Не нужно задумываться о причине запроса и ждать ответа других сервисов — используем все преимущества архитектуры микросервисов.

Сначала создадим блок-схему:
показано в картинке.

Как видите, всего четыре этапа:
1. Проверка: в некоторых сценариях гостиницами обслуживаются не все желающие, например кому-то закрыт доступ или определенный номер резервируется только для конкретной группы. Это сложные правила, отделим их от веб-API.
2. Резервирование: одновременное бронирование номера несколькими людьми предотвращается глобальной блокировкой, подобной Redis.
3. Списание: зарезервировав номер, списываем средства.
4. Бронирование: завершив процесс списания, удаляем резервирование и бронируем номер.

Но в любом сервисе случаются ошибки.

Оркестрация — отличное подспорье для создания стабильного потока запросов, обработки ошибок и соответственных действий.

Действия требуются при очевидных ошибках:
Недостаточно средств: удаляем резервирование.
Ошибка при бронировании: возвращаем средства и удаляем резервирование.

Настройка RabbitMQ
Не знакомы с RabbitMQ? Посмотрите руководство для начинающих, хотя основы мы разберем.

RabbitMQ, как и Apache Kafka, — это приложение с отправителями и получателями сообщений. В приложении-чате отправителями сообщение отправляется, получателями — получается.

Как сообщению попасть к моему другу, а не случайному человеку в другой группе? Это сложная часть.

📌 Читать

@Golang_google
👍204🔥3
🖼️ Выпущен Go 1.21.0!

👍Лайк, если ждал

📌GitHub
Скачать

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍113🔥12🤔32
🗺 Google maps scraper

Это Golang парсер, на основе фреймворка scrapemate который позволяет удобно парсить данные из Google Maps.

Он автоматизирует просмотр веб-страниц и позволяет извлекать: имя, адрес, номер телефона, URL-адрес веб-сайта, рейтинг и количество отзывов для каждого выбранного вами места.

Все данные сохраняются в файл CSV для удобства анализа и обработки.

Содержит код для быстрого запуска с использованием Docker.

Github

@Golang_google
👍105🔥2
🐾 Goblin

Goblin позволяет использовать команду curl для установки бинарников Go без самого Go.

Инструмент позволяет устанавливать бинарные файлы Go, указывая желаемую версию и другие параметры.

Это особенно полезно, если вы хотите быстро установить библиотеку без установки всего Go SDK.

curl -sf https://goblin.run/<package>[@version] | [...options] sh

Ставь 👍, если пользовался, только старым Go Binaries.

Проект
Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21👎41🔥1
🎨 Awesome Software Architecture

Полезный список статей и ресурсов для изучения и применения на практике архитектуры, паттернов и принципов программного обеспечения.

https://awesome-architecture.com/

@Golang_google
👍16🔥32
😂 Отправляй той самой.

@Golang_google
😁46👍17🔥43
👣 Go-Pattern

Pattern Matching библиотека для Go.

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

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍122🔥1
🤓 Shiori

Shiori - это простой менеджер закладок, написанный на языке Go. Представляет собой простой клон Pocket. Его можно использовать как приложение командной строки или как веб-приложение.

Приложение распространяется в виде одного бинарного файла, что позволяет легко установить и использовать его.

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍3🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
👣 Gat

gat — полноценная альтернатива cat, написанная на Go и с дополнительными функциями: подсветки синтаксиса на разных языках, поддержки разных тем и форматирования.

$ go install github.com/koki-develop/gat@latest

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33🔥73🤔1
Redis Explained

Глубокое техническое погружение во все тонкости Redis.

В статье рассматриваются различные топологии Redis, персистентность данных и форкинг процессов.

Отличная иллюстрированная статья для глубокого понимания Redis.

Читать

@Golang_google
👍18🔥95
👣 REM

Новая ORM библиотека для Go, поддерживающая PostgreSQL, MySQL. Вскоре авторы обещают добавить SQLite.

go get github.com/evantbyrne/rem

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23👎14🔥32
👣 Seekr

Универсальный набор инструментов для сбора и управления OSINT-данными с удобным веб-интерфейсом.

Seekr позволяет объединить все ваши любимые OSINT-инструменты в одном. Бэкэнд написан на языке Go с использованием BadgerDB в качестве базы данных и предлагает широкий спектр возможностей для сбора, управления и анализа данных.

git clone https://github.com/seekr-osint/seekr
cd seekr
go generate ./...
tsc --project web
go run main.go


Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64🔥2
🖥 Relational Databases Explained

Принцип работы реляционных баз данных. В этой статье рассказывается о том, как работают индексы и транзакции внутри реляционных баз данных.

Отличная иллюстрированная статья для глубокого понимания реляционных баз данных.

Читать

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍42
👣 RamSQL

In-memory SQL библиотека на Go sql/driver, которая хорошо подходит для тестирования.

go get github.com/proullon/ramsql

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍193🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Каждый разработчик ежедневно сталкивается с новыми челенджами, один из них — отказоустойчивость системы.

Поработаем над темой вместе?

Команда Яндекс Такси и ведущие специалисты IT отрасли делятся своим опытом. Регистрируйтесь сейчас и используйте в работе лучшие практики.

2 сентября. «Москва-Сити», башня «Око», с онлайн-трансляцией. Бесплатно

Подробнее
👍8😁8