1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-go-micro

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Go Micro Go.Dev reference Go Report Card Discord

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

Использующие

  • Источник - Работа в области земной обсервации, включая встроенный Kubernetes, работающий на борту самолета, и мы построили платформу SaaS управления миссиями с использованием Go Micro.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Go Micro — это микросервисная платформа разработки на основе Golang. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Язык

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-go-micro.git
git@api.gitlife.ru:oschina-mirror/mirrors-go-micro.git
oschina-mirror
mirrors-go-micro
mirrors-go-micro
master