Go Micro — это фреймворк для разработки распределённых систем.
Go Micro предоставляет основные требования для разработки распределённых систем, включая RPC и событийно-ориентированное взаимодействие. Философия Go Micro заключается в использовании здравых значений по умолчанию с плuggаемой архитектурой. Мы предлагаем значения по умолчанию для быстрого старта, но всё может быть легко заменено.
Go Micro абстрагирует детали распределённых систем. Вот основные возможности:
Аутентификация - Аутентификация встроена как полноценный гражданин. Она обеспечивает безопасность сети нулевого доверия, предоставляя каждому сервису уникальное имя и сертификаты. Это также включает управление доступом на основе правил.
Динамическое конфигурирование - Загрузка и горячее перезагружение динамического конфигурационного файла из любого источника. Интерфейс конфигурации позволяет загружать конфигурацию уровня приложения из различных источников, таких как переменные окружения, файлы, etcd. Можно объединять источники и даже указывать запасные варианты.
Хранение данных - Простой интерфейс хранения данных для чтения, записи и удаления записей. Он включает поддержку многих хранилищ данных в репозитории плагинов. Состояние и устойчивость становятся ключевыми требованиями за рамками прототипирования, и Micro стремится внедрить эти возможности в фреймворк.
Обнаружение служб - Автоматическая регистрация службы и разрешение имени. Обнаружение служб является центральным элементом микросервисной разработки. Когда сервис A нуждается в связи с сервисом B, ему требуется местоположение этого сервиса. По умолчанию механизм обнаружения основан на мультикасте DNS (mdns), что представляет собой систему нулевой конфигурации.
Балансировка нагрузки - Клиентская балансировка нагрузки, основанная на обнаружении служб. Как только мы имеем адреса любых колич Yöntemleri sayısı экземпляров сервиса, нам теперь требуется способ выбора узла для маршрутизации. Мы используем случайное хэшированное балансирование нагрузки для обеспечения равномерного распределения запросов между сервисами и повторной попытки со следующего узла в случае проблем.
Кодирование сообщений - Динамическое кодирование сообщений на основе типа содержимого. Клиент и сервер используют кодеры вместе с типом содержимого для бесшовного кодирования и декодирования типов Go для вас. Любое количество сообщений может быть закодировано и отправлено различными клиентами. Клиент и сервер автоматически выполняют эту задачу по умолчанию. В этом процессе используются протобуферы и JSON.
RPC Клиент/Сервер - RPC-основанный запрос/ответ с поддержкой двунаправленного потока. Мы предоставляем абстракцию для синхронного взаимодействия. Запрос, сделанный к сервису, будет автоматически решён, балансирован, установлен и потоком передан.
Асинхронное сообщение - PubSub встроено как полноценный гражданин для асинхронного взаимодействия и событийно-ориентированной архитектуры. Уведомления о событиях являются ключевым паттерном в микросервисной разработке. По умолчанию система сообщений представляет собой HTTP-событийный брокер сообщений.
Плuggаемые интерфейсы - Go Micro использует Go-интерфейсы для каждой абстракции распределённой системы. Из-за этого эти интерфейсы являются плuggаемыми и позволяют Go Micro быть независимым от среды выполнения. Вы можете использовать любой подлежащий технологии.
Чтобы воспользоваться Go Micro, импортируйте его
import "go-micro.dev/v5"
``
Определите обработчик (поддерживаются протобуферы - см. [пример](https://github.com/go-micro/examples/blob/main/helloworld/main.go))
```golang
type Request struct {
Name string `json:"name"`
}
type Response struct {
Message string `json:"message"`
}
type Helloworld struct{}
func (h *Helloworld) Greeting(ctx context.Context, req *Request, rsp *Response) error {
rsp.Message = "Привет " + req.Name
return nil
}
``
Создайте, инициализируйте и запустите сервис
```golang
// создайте новый сервис
service := micro.NewService(
micro.Name("helloworld"),
micro.Handle(new(Helloworld)),
)
// инициализируйте флаги
service.Init()
// запустите сервис
service.Run()
Необходимо установить фиксированный адрес
service := micro.NewService(
// установите адрес
micro.Address(":8080"),
)
``
Вызов через curl
curl -XPOST
-H 'Content-Type: application/json'
-H 'Micro-Endpoint: Helloworld.Greeting'
-d '{"name": "alice"}'
http://localhost:8080
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )