scdb - это легкий и быстрый механизм хранения данных типа "ключ-значение", отличающийся простотой и скоростью работы, написанная на Go.
Инструмент создан по образцу архитектуры хранения Bitcask, известной своей эффективностью при операциях записи.
▪Основной принцип построения scdb (и Bitcask) основан на файловых системах с лог-структурой. При таком подходе все изменения добавляются в конец журнала, что делает запись исключительно быстрой, поскольку она осуществляется последовательно. Такая конструкция не только обеспечивает быстродействие, но и гарантирует целостность данных: даже в случае сбоя системы можно легко восстановить данные благодаря этому методу, основанному только на приложении.
▪Кроме того, в scdb реализован процесс, известный как объединение файлов журнала. Со временем, когда ваше приложение записывает все больше данных, количество файлов журнала естественным образом увеличивается. Объединение лог-файлов - это техника, которая объединяет файлы для предотвращения фрагментации и поддержания производительности. Это похоже на домашнюю уборку, обеспечивающую организованность и эффективность хранения данных.
▪Таким образом, если вы разрабатываете приложение, требующее быстрой записи данных и простого, но надежного решения для хранения данных, scdb может оказаться именно тем механизмом, который вы ищете. Он создан для того, чтобы обеспечить разработчикам, подобным вам, удобство хранения и извлечения пар ключ-значение.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
💡 Балансировщики нагрузки буквально в 100 раз лучше, чем старый добрый светофор.
Они могут обрабатывать миллионы входящих запросов, распределять трафик между серверами и вообще поддерживать бесперебойную работу при минимальной настройке.
Почему?
Потому что балансировщики нагрузки могут использовать некоторые действительно мощные алгоритмы на лету.
В общем случае существует две категории таких алгоритмов:
✅ Статические
✅ Динамический
- Наименьшее количество соединений
- Наименьшее время отклика
Рассмотрим каждый алгоритм чуть более подробно
👉 Round Robin
- Запросы последовательно распределяются между группой серверов.
- Нет гарантии, что несколько запросов от пользователя попадут к одному и тому же экземпляру.
👉Sticky Round Robin
- Лучшая альтернатива round-robin
- Различные запросы от одного и того же пользователя поступают на один и тот же эндпоинт.
👉 Hash-Based
- Алгоритм распределяет запросы на основе хэша значения ключа.
- В качестве ключа может выступать IP-адрес или URL-адрес запроса
👉 Weighted Round Robin
- Каждый сервер получает значение веса.
- Это значение определяет долю трафика.
- Серверы с большим весом получают больше трафика. Хорошо подходит для систем с серверами разной мощности
👉 Наименьшее количество соединений
- Новый запрос отправляется на тот экземпляр сервера, который имеет наименьшее количество соединений.
- Количество подключений определяется исходя из относительной вычислительной мощности сервера
👉 Наименьшее время отклика
- Новый запрос отправляется на сервер с наименьшим временем отклика, чтобы минимизировать общее время отклика.
- Хорошо подходит для случаев, когда время отклика критично.
Протестируйте балансировку нагрузки телеграм с помощью кнопки LIKE👍.
@Golang_google
Они могут обрабатывать миллионы входящих запросов, распределять трафик между серверами и вообще поддерживать бесперебойную работу при минимальной настройке.
Почему?
Потому что балансировщики нагрузки могут использовать некоторые действительно мощные алгоритмы на лету.
В общем случае существует две категории таких алгоритмов:
✅ Статические
- Round Robin
- Sticky Round Robin
- Хэш
- Weighted Round Robin
✅ Динамический
- Наименьшее количество соединений
- Наименьшее время отклика
Рассмотрим каждый алгоритм чуть более подробно
👉 Round Robin
- Запросы последовательно распределяются между группой серверов.
- Нет гарантии, что несколько запросов от пользователя попадут к одному и тому же экземпляру.
👉Sticky Round Robin
- Лучшая альтернатива round-robin
- Различные запросы от одного и того же пользователя поступают на один и тот же эндпоинт.
👉 Hash-Based
- Алгоритм распределяет запросы на основе хэша значения ключа.
- В качестве ключа может выступать IP-адрес или URL-адрес запроса
👉 Weighted Round Robin
- Каждый сервер получает значение веса.
- Это значение определяет долю трафика.
- Серверы с большим весом получают больше трафика. Хорошо подходит для систем с серверами разной мощности
👉 Наименьшее количество соединений
- Новый запрос отправляется на тот экземпляр сервера, который имеет наименьшее количество соединений.
- Количество подключений определяется исходя из относительной вычислительной мощности сервера
👉 Наименьшее время отклика
- Новый запрос отправляется на сервер с наименьшим временем отклика, чтобы минимизировать общее время отклика.
- Хорошо подходит для случаев, когда время отклика критично.
Протестируйте балансировку нагрузки телеграм с помощью кнопки LIKE👍.
@Golang_google
This media is not supported in your browser
VIEW IN TELEGRAM
An interactive study of common retry methods
Для написания надежного программного обеспечения необходимо обрабатывать сетевые сбои, иначе приложение не будет эффективно работать. Одним из наиболее распространенных методов обработки неудачного запроса является повтор запросов.
В этом интерактивном гайде наглядно показаын различные методы повторных попыток запросов, показано, почему некоторые распространенные подходы опасны, и, объянено, что является наилучшей практикой.
После прочтения этой статьи вы будете иметь четкое представление о том, что хорошей практикой для использования повторных запросов.
Советы, приведенные в этой статье, в равной степени относятся как к запросам к собственным внутренним сервисам, так и к сторонним.
https://encore.dev/blog/retries
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Архитектура, основанная на событиях (EDA):
В архитектуре, основанной на событиях, поток системы определяется событиями.
Слоистая архитектура:
Слоистая архитектура организует систему на отдельные слои, где каждый слой имеет свою конкретную ответственность.
Монолит:
Монолитная архитектура - это традиционный подход, при котором все компоненты и модули программного приложения тесно интегрированы в одну кодовую базу и развертываются как единое целое.
Архитектура микросервисов:
Микросервисы разбивают программное приложение на небольшие, независимо развертываемые сервисы.
Модель-Представление-Контроллер (MVC):
MVC - это шаблон проектирования, поделенный на три компонента: Модель, Представление и Контроллер
Архитектура Мастер-Ведомый:
В архитектуре Мастер-Ведомый один центральный узел контролирует и управляет одним или несколькими подчиненными узлами.
📌 Самые важные архитектурные шаблоны, которые нужно знать
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Golang за неделю
Почитать:
— Расширение для стандартных модулей управления конфигурациями в Go
— Сервисы дружитес. Как платформа упрощает создание интеграций без ошибок
— Из Go в Rust или ад generics
— Эффективность на максимум: Микрооптимизации в Golang
— Корутины для Go
— Как устроены DDoS-атаки (и как их предотвратить) Часть 1 .
— Milvus Adventures Nov 24, 2023
— Create Production-Ready SDKs with Goa
— spectest: 'go test' output only FAIL results and statistics
— Using a Transactional Pub/Sub Outbox to Guarantee Consistency
— A gopher’s journey to the center of container images
— Full stack monolith experiment with Golang
— The fastest way to deploy a Go app to Kubernetes
— 🔥 Frontend update: the Gowebly CLI now supports daisyUI components library
— WebAssembly: using Go code in the browser
— Understanding Go Interfaces: A Guide for Beginners
Посмотреть:
🌐Пишем gRPC сервис на Go - Сервис авторизации / УЛЬТИМАТИВНЫЙ гайд
🌐GoLang #380 - практика "Пишем gRPC сервис на Go — сервис авторизации"
🌐 Golang Channels Or Wait Groups? Let Me Explain. (⏱ 18:32)
🌐 Message Queue From Scratch In Golang (⏱ 02:29:49)
🌐 Writing Tests For My Distributed File Storage In Golang (⏱ 31:03)
🌐 Message Queue From Scratch In Golang With Only STD LIB (⏱ 01:59:06)
🌐 System Design - теория кэширования | Как кэшировать данные (⏱ 01:12:31)
🌐 TobenONE UDS019 Dock | Perfect Framework Laptop Pair? (⏱ 05:39)
🌐 THIS is how you SHOULD Structure your Golang Applications!? (⏱ 06:25)
Хорошего дня!
@Golang_google
Почитать:
— Расширение для стандартных модулей управления конфигурациями в Go
— Сервисы дружитес. Как платформа упрощает создание интеграций без ошибок
— Из Go в Rust или ад generics
— Эффективность на максимум: Микрооптимизации в Golang
— Корутины для Go
— Как устроены DDoS-атаки (и как их предотвратить) Часть 1 .
— Milvus Adventures Nov 24, 2023
— Create Production-Ready SDKs with Goa
— spectest: 'go test' output only FAIL results and statistics
— Using a Transactional Pub/Sub Outbox to Guarantee Consistency
— A gopher’s journey to the center of container images
— Full stack monolith experiment with Golang
— The fastest way to deploy a Go app to Kubernetes
— 🔥 Frontend update: the Gowebly CLI now supports daisyUI components library
— WebAssembly: using Go code in the browser
— Understanding Go Interfaces: A Guide for Beginners
Посмотреть:
🌐Пишем gRPC сервис на Go - Сервис авторизации / УЛЬТИМАТИВНЫЙ гайд
🌐GoLang #380 - практика "Пишем gRPC сервис на Go — сервис авторизации"
🌐 Golang Channels Or Wait Groups? Let Me Explain. (⏱ 18:32)
🌐 Message Queue From Scratch In Golang (⏱ 02:29:49)
🌐 Writing Tests For My Distributed File Storage In Golang (⏱ 31:03)
🌐 Message Queue From Scratch In Golang With Only STD LIB (⏱ 01:59:06)
🌐 System Design - теория кэширования | Как кэшировать данные (⏱ 01:12:31)
🌐 TobenONE UDS019 Dock | Perfect Framework Laptop Pair? (⏱ 05:39)
🌐 THIS is how you SHOULD Structure your Golang Applications!? (⏱ 06:25)
Хорошего дня!
@Golang_google
Процесс выполнения
SQL-запросов
в базе данных включает в себя несколько компонентов, взаимодействующих между собой. Хотя конкретная архитектура различных систем баз данных может отличаться, ниже описана общая последовательность действий.1. Оператор SQL запускается в клиентской программе и передается по сети на сервер базы данных.
2. Когда сервер базы данных получает SQL-оператор, реляционный движок начинает его обработку. Сначала синтаксический анализатор проверяет правильность оператора. Затем он преобразует оператор в дерево запросов, которое представляет собой внутреннюю структуру данных.
3. Оптимизатор запросов просматривает дерево запросов и определяет наиболее эффективный способ выполнения SQL-оператора, создавая план выполнения.
4. План выполнения передается исполнителю запроса, который использует его для координации получения или изменения данных в соответствии с запросом SQL. Для доступа к данным исполнитель взаимодействует с движком хранилища.
5. Движок хранилища использует методы доступа - протоколы чтения и записи данных, наиболее эффективные для выполнения различных операций.
6. При чтении данных менеджер буферов проверяет, кэшированы ли нужные данные в памяти, и при необходимости извлекает их с диска. Это ускоряет последующий доступ.
7. При записи данных со вставкой или обновлением менеджер транзакций следит за тем, чтобы изменения происходили атомарно и сохраняли целостность базы данных.
8. В то же время менеджер блокировок накладывает блокировки, чтобы несколько транзакций могли выполняться одновременно, не конфликтуя между собой. Таким образом, обеспечивается изоляция и согласованность.
Работая вместе, эти компоненты обеспечивают надежную и эффективную обработку SQL-запросов в системе управления базами данных.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Некоторые причины исторические (до
Go 1.11
в Go была довольно печальная история управления зависимостями), некоторые культурные (сообщество Go пропагандирует простоту и самодостаточность), но некоторые из них, я бы сказал, являются хорошей практикой независимо от используемого языка.Безопасность - когда вы добавляете зависимость, вы добавляете разработчика (или команду разработчиков), с которым вы никогда не взаимодействовали, в качестве участника вашего проекта. Вы должны проанализировать библиотеку, как если бы она была написана собственными силами, и убедиться, что она соответствует вашим задачам и не несет никакого риска.
Сложность в поддержке - теперь вы и ваша команда должны поддерживать добавленную библиотеку в актуальном состоянии.
Воспроизводимые сборки - Вы можете добиться этого с помощью библиотек сторонних производителей, но чем меньше вам придется об этом беспокоиться, тем лучше.
Просто нет необходимости - Это одна из лучших причин. В Go есть замечательная стандартная библиотека, и вы можете добиться очень многого, используя ее.
Так когда же следует обращаться к библиотеке?
Если то, что вы хотите реализовать, является функционально сложным, имеет приемущества от поддержки сообществом и берется из надежного источника, то использование библиотеки может быть хорошим вариантом.
Примерами библиотек, которые, на мой взгляд, являются достойными для внимания:
- Библиотеки шин сообщений (Kafka, RabbitMQ и т.д.)
- Библиотеки БД (Mongo, Postgres).
- Сложные криптографические вещи алгоритмы, которые не поддерживаются стандартной библиотекой.
👇 Напишите в комментаряих о ваших любимых сторонних библиотеках.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
gRPC - это система удалённого вызова процедур (RPC) с открытым исходным кодом, первоначально разработанная в Google в 2015 году. Она имеет открытый исходный код и используется для коммуникаций с архитектурой клиент-сервер.
gRPC может использовать буферы протоколов в качестве определения интерфейса lang
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Полезный инструмент для проверки запросов от
HTMX
, использование безопасных типов, декларативный синтаксис для заголовков ответов HTMX, инстурменты для управленикм поведением HTMX на сервере.Встроенные методы Swap Strategy для точной настройки поведения hx-swap.
Имеет базовую интеграцию с компонентами templ.
go get github.com/angelofallars/htmx-go
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Если трассировка стека отслеживает путь кода, который привел к ошибке, то трассировка возврата отслеживает путь кода, который ошибка прошла, чтобы добраться до пользователя. Часто это один и тот же путь, но в Go они могут различаться, поскольку ошибки - это значения, которые могут передаваться между горутинами (например, с помощью каналов).
Когда это происходит, трассировка возврата может быть более полезной, чем трассировка стека.
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Golang за неделю
Почитать:
— Мапы в Go: уровень Pro
— В MySQL 8.2 появилось прозрачное разделение чтения и записи
— Go (fiber) vs Rust (axum) JWT&DB
— Agency: The Go Way to AI. Часть 1
— API completa em Golang - Parte 1
— Kubernetes(K8s) Autoscaler — a detailed look at the design and implementation of VPA
— Last week top 5 posts tagged(#javascript)
— A "Tiny" APISIX Plugin
— the simple cli radio
— Advance Data Types in Go: Arrays, Slices, Maps, Functions
— Building an event-driven system in Go using Pub/Sub
— the simple cli radio
— ⚡️Speeding up debugging with local tracing
— Building a Scalable Notification Service with gRPC and Microservices
Посмотреть:
🌐 Deepfake video при помощи Google Colab (⏱ 14:29)
🌐 Revamping Subscribers Resumes So They Finally Get Hired (⏱ 02:41:12)
🌐 10 Million Messages In 1 Second With Golang Actors (⏱ 07:33)
🌐 The Golang Function Nobody Talks About (⏱ 15:50)
🌐 Advent Of Code But With C, VIM, And NO Linters (⏱ 02:56:50)
🌐 Параллельное программирование | ROADMAP | Подробный план изучения (⏱ 11:52)
🌐 The Options Pattern in Golang!? ~ Service Configuration (⏱ 03:28)
Хорошего дня!
@Golang_google
Почитать:
— Мапы в Go: уровень Pro
— В MySQL 8.2 появилось прозрачное разделение чтения и записи
— Go (fiber) vs Rust (axum) JWT&DB
— Agency: The Go Way to AI. Часть 1
— API completa em Golang - Parte 1
— Kubernetes(K8s) Autoscaler — a detailed look at the design and implementation of VPA
— Last week top 5 posts tagged(#javascript)
— A "Tiny" APISIX Plugin
— the simple cli radio
— Advance Data Types in Go: Arrays, Slices, Maps, Functions
— Building an event-driven system in Go using Pub/Sub
— the simple cli radio
— ⚡️Speeding up debugging with local tracing
— Building a Scalable Notification Service with gRPC and Microservices
Посмотреть:
🌐 Deepfake video при помощи Google Colab (⏱ 14:29)
🌐 Revamping Subscribers Resumes So They Finally Get Hired (⏱ 02:41:12)
🌐 10 Million Messages In 1 Second With Golang Actors (⏱ 07:33)
🌐 The Golang Function Nobody Talks About (⏱ 15:50)
🌐 Advent Of Code But With C, VIM, And NO Linters (⏱ 02:56:50)
🌐 Параллельное программирование | ROADMAP | Подробный план изучения (⏱ 11:52)
🌐 The Options Pattern in Golang!? ~ Service Configuration (⏱ 03:28)
Хорошего дня!
@Golang_google
Как же они защищают свою систему?
В основе
mTLS
и строгие правила авторизации.Uber моделирует свою производственную среду как сеть с нулевым уровнем доверия. Поскольку любой хост может быть скомпрометирован, они полагаются на сильные криптографические примитивы для установления доверия между сервисами. 🥷
uPKI - это платформа идентификации Uber, основанная на Spire. Она отвечает за выпуск недолговечных, автоматически изменяющихся пар криптографических ключей. Эти пары состоят из X.509-SVID, закрытого ключа и связки доверия. 🔐
При такой настройке система автоматически обновляет (ротирует) свои сертификаты, когда срок их действия подходит к концу.
Агент
Spire
держит долговременное соединение с сервером Spire и проактивно генерирует новый сертификат, когда наступает подходящий момент.Это очень важно, поскольку позволяет Uber выпускать очень недолговечные сертификаты, что ограничивает время, необходимое злоумышленникам для использования утечки учетных данных.
mTLS обеспечивает Uber аутентификацию, конфиденциальность с помощью шифрования и целостность данных. 👍
Как при регистрации на рейс после проверки вашего удостоверения личности (вы тот, за кого себя выдаете) - следующая проверка:
✋ действительно ли вам разрешено лететь этим рейсом? (есть ли у вас билет с нужными разрешениями).
Для этого в Uber есть сервис под названием
Charter
. Подобно AWS IAM, это фреймворк, позволяет вам определять, кто и что может получить доступ к определенным сервисам и ресурсам.В Kafka есть подключаемый фреймворк авторизации, в котором вы можете настроить пользовательский класс авторизатора, который будет выполнять аутентификацию за вас (
`имя_класса_авторизатора`
).Этот авторизатор вызывается как часть любого потока запросов. В конфигурации Uber он вызывается с помощью пары
actor
, resource
и operation
.Актор (actor) - сущность, которая является объектом принятия решения об авторизации (например, вы в аэропорту). Также называется
KafkaPrincipal
в Kafka
.🪨 Ресурс (resource), на основе которого принимается решение об авторизации (например, рейс).
🔧 Операция ( operation), выполняемая над
ресурсом
(например, посадка). Также называется ACLOperation
в Kafka
Авторизатор совершает удаленный RPC-вызов к Charter, чтобы выяснить решение по данной паре, и далее кэширует результат.
🦾 Почитать подробнее
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Linux →http://linuxjourney.com
Bash →http://linuxopsys.com
AWS →http://explore.skillbuilder.aws
Fast-Kubernetes → https://github.com/omerbsezer/Fast-Kubernetes
Azure →http://learn.microsoft.com
DevOps →http://edx.org/learn/devops
Docker →http://docker-curriculum.com
Kubernetes →http://kubernetes.io
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
go get -u github.com/grahms/worx
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🌟 Выпущены версии Go 1.21.5 и 1.20.12!
🔐 Безопасность: Включает исправления безопасности для net/http (CVE-2023-39326), cmd/go (CVE-2023-45285), path/filepath (обновление CVE-2023-45283).
📢 Анонс: https://groups.google.com/g/golang-announce/c/iLGK3x6yuNo
⬇️ Скачать: https://go.dev/dl/#go1.21.5
#golang
@Golang_google
🔐 Безопасность: Включает исправления безопасности для net/http (CVE-2023-39326), cmd/go (CVE-2023-45285), path/filepath (обновление CVE-2023-45283).
📢 Анонс: https://groups.google.com/g/golang-announce/c/iLGK3x6yuNo
⬇️ Скачать: https://go.dev/dl/#go1.21.5
#golang
@Golang_google
Вероятно, вы думаете, что с такими большим количеством запросов могут справиться только какие-то мощные микросервисы. На самом деле все обстоит несколько иначе.
Shopify использует 𝗺𝗼𝗱𝘂𝗹𝗮𝗿 𝗺𝗼𝗻𝗼𝗹𝗶𝘁𝗵 𝗮𝗽𝗽𝗿𝗼𝗮𝗰𝗵( модульную монолитную архитектуру), они хранят весь свой код в одной модульной кодовой базе.
Монолитная архитектура - самая простая архитектура для понимания и реализации.
Поскольку монолитный дизайн прост в построении и позволяет командам быстро работать на начальном этапе разработки, он может помочь продвинуть разработку приложения.
Централизация развертывания приложения и поддержки кодовой базы имеет множество преимуществ.
Вся функциональность доступна в одной папке; вам нужно будет управлять только одним репозиторием. Кроме того, это означает, что необходимо поддерживать один конвейер тестирования и развертывания, что может сэкономить много времени.
Возможность обращаться к различным компонентам, а не полагаться на API веб-сервисов, - однно из самых привлекательных приемуществ монолитной архитектуры по сравнению с несколькими отдельными сервисами.
Shopify реализовала одну из версий модульного монолита на 𝗥𝘂𝗯𝘆 𝗼𝗻 𝗥𝗮𝗶𝗹𝘀. Они организуют кодовую базу вокруг реальных концепций (таких как заказы, доставка, инвентаризация и выставление счетов), что облегчает разметку кода и людей, которые его понимают. Каждый компонент представляет собой мини-приложение на Rails (модуль).
Каждый компонент претендует на единоличное владение данными, с которыми связан, и определяет прямой, специализированный интерфейс с границами домена, передаваемыми через публичный API.
Cтатистики работы Shopify на черной пятнице:
🔹 145 миллиардов запросов (~60 миллионов в минуту)
🔹 99,999+% аптайма
🔹 5 ТБ/мин данных из всей инфраструктуры
🔹 MySQL 5.7 и 8 обрабатывают более 19 миллионов запросов в секунду (QPS)
🔹 22 ГБ/сек журналов и 51,4 ГБ/сек метрических данных
🔹 9 миллионов проходов в секунду данных трассировки
🔹 Их Apache Kafka обслуживал 29 миллионов сообщений в секунду в пиковый момент
🔹 Все работает в облаке Google Cloud
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
rqlite прост в развертывании и настройкаи, а его возможности кластеризации обеспечивают отказоустойчивость и высокую доступность.
rqlite доступен для
Linux, macOS и Microsoft Window
s .Github: https://github.com/rqlite/rqlite
Обновления: https://philipotoole.com/rqlite-8-0-large-dataset-support-and-core-feature-upgrades/
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Изучение Kubernetes путем решения реальных проблем - лучший способ 🔽.
В кластере обнаружен падающий
Система пытается запуститься, но не может. По всей видимости, недавно в его спецификацию был добавлен новый контейнер, после чего Pod перестал работать. Можете ли вы все это починить?
https://labs.iximiuz.com/tutorials/kubernetes-native-sidecars
@Golang_google
В кластере обнаружен падающий
Pod
. Pod
— это абстрактный объект Kubernetes, представляющий собой группу из одного или нескольких контейнеров приложения и совместно используемых ресурсов для этих контейнеров. Ресурсами могут быть: общее хранилище (тома); сеть (уникальный IP-адрес кластера)Система пытается запуститься, но не может. По всей видимости, недавно в его спецификацию был добавлен новый контейнер, после чего Pod перестал работать. Можете ли вы все это починить?
https://labs.iximiuz.com/tutorials/kubernetes-native-sidecars
@Golang_google
Почитать:
— Своё кастомное межсервисное взаимодействие с блекджеком и gRPC
— Как настроить gRPC на примере микросервисов на Ruby и Go
— Python лёгкий. Go простой. Простой != лёгкий
— Современные варианты баз данных
— Безопасность web приложений с использованием Identity Provider
— Визуализация результатов escape-анализа в VS Code
— Потрошим golang: как устроена память
— 8 бесплатных курсов по большим языковым моделям
— Торговые роботы на Golang
— Есть ли Singleton в Golang?
— ORM для реальных приложений не окупается
— Многопоточность и параллелизм в Go: Goroutines и каналы
— Go concurrency simplified. Part 1: Channels and goroutines
— Wat if... ?
— Web Scraping com Go: Coletando Notícias do Flamengo
— Golang: 14 Shorthand Tricks You Might Not Know!
— Improving Compiler Performance with Profile Guided Optimization
— Using IAM authentication for Redis on AWS
— Announcing the release of the Xata Go SDK
— How to reverse proxy the WebSocket protocol
— Como fazer Deploy de uma Aplicação Golang no Windows Server?
— Go is awesome!
Посмотреть:
🌐 Ollama — модель уровня GPT. Используй GPT без ограничений и абсолютно бесплатно.
🌐 Mastering Go: A Comprehensive Guide to Golang Programming
🌐 Why We Switched From Svelte Kit To Golang + HTMX (⏱ 09:54)
🌐 Advent Of Code But With C, VIM, And NO Linters (⏱ 02:56:52)
🌐 Components with HTML Templates in Go!? ~ FULL STACK Golang (⏱ 05:51)
🌐 Business Logic Layers in your Golang services!? - Golang Service Architecture (⏱ 05:51)
Хорошего дня!
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Этот пакет предоставляет низкоуровневый Go-интерфейс для
SQLite 3
. Он предназначен для замены crawshaw.io/sqlite.▪Полная функциональность SQLite через modernc.org/sqlite, автоматически генерируемый перевод оригинального исходного кода SQLite на языке C в Go
▪Сборка с CGO_ENABLED=0 позволяет выполнять кросс-компиляцию
▪Позволяет получить доступ к специфическим для SQLite функциям
▪Включает простой пакет миграции схемы базы
▪Утилиты для запуска встроенных SQL-скриптов с использованием функции встраивания в Go 1.16
▪Go fix-подобный инструмент для миграции существующего кода с помощью crawshaw.io/sqlite
https://github.com/zombiezen/go-sqlite
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Это полнофункциональное приложение с открытым исходным кодом, в основе которого лежат два основных принципа:
ПРОИЗВОДИТЕЛЬНОСТЬ
и ПРОСТОТА
. Идея заключается в том, что вы можете взять этот шаблон и использовать его для создания собственного проекта и он будет очень хорошо масштабироваться.Кроме того, это не очередной шаблон для разработчиков. В нем есть все, что нужно для запуска в продакшен: конфигурация Nginx, развертывание
Docker, GitHub Actions, логирование Grafana
и т. д.▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM