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

OSCHINA-MIRROR/osgochina-dmicro

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 07.03.2025 09:33 5a8e0fc
dmicro logo

Сделайте вашу разработку на Go невероятно простой

GitHub release report card github issues github closed issues GoDoc view examples OSCS Status

Обзор

DMicro — это эффективный, масштабируемый и удобный в использовании микросервисный фреймворк. Включает компоненты DRPC, DServer и другие.

Компонент DRPC является фреймворком удалённого вызова процедур (RPC). Он использует endpoint как единую сущность, предоставляющую унифицированные API для RPC Server и RPC Client. DRPC компоненты:* Простота понимания и научно обоснованная многоуровневая абстракция.

  • end_point, session, handler, message, protocol, encoding, transfer_filter, plugin.

  • Поддержка распространённых протоколов передачи сообщений (JSON, Protobuf, HTTP, JSON-RPC). Хорошая абстрактная структура делает создание пользовательских протоколов простым и быстрым.

  • Поддержка различных сетевых протоколов (TCP, Unix, KCP, QUIC, WebSocket).

  • Полностью жизненный цикл плагинов (более 27 плагинов), что позволяет системе плагинов реализовать множество разнообразных функций.

    • Встроенные плагины: авторизация, сердцебиение, игнорировать_случаи, прокси, защищенное_тело и другие.
  • Благодаря богатому набору плагинов, выделена удобная система событий Event, которая значительно улучшает процесс разработки.

  • Высокопроизводительный уровень передачи данных, который делает производительность не проблемой.

  • Автоматическое восстановление соединения клиентской стороны.

  • Совместно с компонентом DServer обеспечивает гладкий и элегантный процесс перезапуска, чтобы ваш сервис всегда был доступен.

  • Совместно с компонентом Registry обеспечивает регистрацию сервиса.

    • Компонент Registry предлагает рациональный интерфейс для удобной интеграции с несколькими регистратурами сервисов, включая etcd, mDNS.
  • Совместно с компонентом Selector обеспечивает функцию открытия сервиса.* Использует компонент metrics для сбора метрик и статистики. Компонент DServer управления приложениями предоставляет полный цикл управления жизненным циклом приложений.Характеристики компонента DServer:

  • Использует трехуровневую структуру (server, service, sandbox). Это позволяет бизнес-логике сосредоточиться на уровне sandbox, поддерживающем однопроцессный и многопроцессный режимы. Разработка и отладка выполняются в одном процессе, а запуск может осуществляться как в одном, так и во многих процессах.

  • Полностью сформированная команда запуска, поддерживающая команды start, stop, reload, ctrl и другие.

  • Поддерживает компоненты drpc и другие компоненты, такие как ghttp, которые реализуют плавное перезапускание интерфейсов (если плавное перезапускание не требуется, все сервисные компоненты поддерживаются).

  • Удобные возможности управления через командную строку, позволяющие в реальном времени управлять работающими приложениями.

  • Полноценный компонент управления процессами supervisor, который обеспечивает управление всем жизненным циклом процессов.

Подробная документация

Установка

go get -u -v github.com/osgochina/dmicro

Рекомендуется использовать go.mod:

require github.com/osgochina/dmicro latest
  • импорт
import "github.com/osgochina/dmicro"

Китайская зеркальная версия: https://gitee.com/osgochina/dmicro

Ограничения

версия Go >= 1.16

Создание службы RPC с помощью DServer

Как быстро создать настоящую службу RPC с помощью простого кода. Ниже приведён пример кода:

// rpc_server.go
package main
``````md
# Создание обычного `rpc` сервера

Тип документа для перевода: markdown  
Язык исходного текста: китайский  
Язык финального текста: русский  

## Создание обычного `rpc` сервера

Сервер уже создан, как его запустить и скомпилировать?

### Компиляция

```shell
$ go build rbc_server.go

Запуск

$ ./rbc_server start

Создание обычного rpc клиента

Как подключиться к серверу с помощью клиента?

package main

import (
    time
    "github.com/osgochina/dmicro/drpc"
    "github.com/osgochina/dmicro/drpc/message"
    "github.com/osgochina/dmicro/logger"
)

func main() {
    cli := drpc.NewEndpoint(drpc.EndpointConfig{PrintDetail: true, RedialTimes: -1, RedialInterval: time.Second})
    defer cli.Close()

    sess, stat := cli.Dial("127.0.0.1:9091")
    if !stat.OK() {
        logger.Fatalf("%v", stat)
    }
    var result int
    stat = sess.Call("/math/add",
        []int{1, 2, 3, 4, 5},
        &result,
        message.WithSetMeta("author", "liuzhiming"),
    ).Status()
    if !stat.OK() {
        logger.Fatalf("%v", stat)
    }
    logger.Printf("Результат: %d", result)
}

Приведённый пример поможет вам понять, как использовать фреймворк drpc. ```## Команды управления сервером через ctrl

Используйте команды ctrl, чтобы управлять запущенным сервером.

  • Откройте новое окно командной строки и выполните команду ctrl
$ ./rbc_server.exe ctl

  ____    ____
 |  _ \  / ___|    ___   _ __  __   __   ___   _ __ 
 | | | | \___ \   / _ \ | '__| \ \ / /  / _ \ | '__|
 | |_| |  ___) | |  __/ | |     \ V /  |  __/ | |   
 |____/  |____/   \___| |_|      \_/    \___| |_|  
Version:         No Version Info
Go Version:      No Version Info
DMicro Version:  v1.0.0
GF Version:      v1.16.9
Git Commit:      No Commit Info
Build Time:      No Time Info
Authors:         osgochina@gmail.com
Install Path:    D:\code\GolandProjects\dmicro\examples\simple_dserver\rbc_server.exe
DMicro_drpc »
  • Выполните команду help, чтобы получить справку по доступным командам
DMicro_drpc » help

Полезный инструмент для управления сервисами

Команды:
=========
  clear             очистка экрана
  debug             включение/выключение отладки
  exit              выход из консоли
  help              помощь по командам, используйте 'help [команда]'
  info, status, ps  просмотр текущего состояния сервиса
  log               вывод логов работы сервиса
  reload            плавный перезапуск сервиса
  start             запуск сервиса
  stop              остановка сервиса
  version, v        вывод версий программы

DMicro_drpc »

TODO

  • Registry регистрация сервиса
  • Selector поиск сервиса
  • Eventbus событийная шина
  • Supervisor управление процессами
  • Metrics метрики
  • OpenAPI автоматическое создание документации
  • Code gen генерация кода
  • Tracing трассировка запросов
  • Broker ограничение скорости и отказоустойчивость ```## БлагодарностьПроект DMicro был создан с использованием двух замечательных проектов — `erpc` и `GoFrame`.

Компонент drpc основан на архитектурных идеях проекта erpc, при этом использует библиотеки из проекта GoFrame в качестве базовых зависимостей.

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/osgochina-dmicro.git
git@api.gitlife.ru:oschina-mirror/osgochina-dmicro.git
oschina-mirror
osgochina-dmicro
osgochina-dmicro
main