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

OSCHINA-MIRROR/mirrors-go-micro

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

Go Micro Go.Dev reference Go Report Card

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 )

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

Введение

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