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 »
Registry
регистрация сервисаSelector
поиск сервисаEventbus
событийная шинаSupervisor
управление процессамиMetrics
метрикиOpenAPI
автоматическое создание документацииCode gen
генерация кодаTracing
трассировка запросовBroker
ограничение скорости и отказоустойчивость
```## БлагодарностьПроект DMicro
был создан с использованием двух замечательных проектов — `erpc` и `GoFrame`.Компонент drpc
основан на архитектурных идеях проекта erpc
, при этом использует библиотеки из проекта GoFrame
в качестве базовых зависимостей.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )