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