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

OSCHINA-MIRROR/kelvins-io-kelvins

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

kelvins

go/golang микросервисный фреймворк

Поддерживаемые функции

  • Регистрация сервисов.
  • Обнаружение сервисов.
  • gRPC/HTTP gateway.
  • Cron.
  • Очередь.
  • HTTP/GIN сервис (совместимый с h1.1 и h2).
  • Вставляемая конфигурация загрузки.
  • Поддержка двух ORM.
  • MySQL и MongoDB поддержка.
  • Шина событий.
  • Логирование.
  • Асинхронный пул задач.
  • Prometheus/pprof мониторинг.
  • Изящное перезапуск приложения.
  • Пользовательская конфигурация приложения.
  • Запуск с использованием флагов.
  • Перехватчики приложений.
  • Инструментальные классы (поддерживаются kelvins-io/common).
  • Глобальные переменные vars.
  • Балансировка нагрузки онлайн-приложений.
  • Команда запуска.
  • RPC проверка здоровья.
  • Авторизация доступа.
  • Инструмент тестирования производительности ghz.
  • Параметры конфигурации для gRPC сервера и клиента.
  • Ограничение потока онлайн-сервисов.
  • Инструменты kelvins.
  • Мониторинг состояния сервиса в реальном времени.
  • Многоуровневое кэширование g2cache.
  • Распределённая блокировка.
  • Стратегия распределённых транзакций seata.

Скоро будут добавлены

  • Отказоустойчивость.
  • Обработка исключений sentry.

Среда разработки

go 1.13.15+

Для RPC используется gRPC, при использовании необходимо установить зависимости:

Установка protoc:
wget https://github.com/google/protobuf/releases/download/v3.14.0/protobuf-all-3.14.0.zip
unzip protobuf-all-3.14.0.zip
cd protobuf-3.14.0/
./configure
make
make install
# Если есть ошибки, выполните:
ldconfig
# Для grpc:
go get -u google.golang.org/grpc@v1.32.0
go get -u google.golang.org/protobuf@v1.25.0
go get -u github.com/golang/protobuf/protoc-gen-go@v.1.4.3
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@v1.14.3
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
go get -u github.com/jteeuwen/go-bindata/...
go get -u github.com/elazarl/go-bindata-assetfs/...
python 2.7 или 3.5

Переменные среды выполнения

Адрес кластера etcd: ETCDV3_SERVER_URLS:

Конфигурация моего окружения (только для справки):
export ETCDCTL_API=3
export ETCDV3_SERVER_URLS=http://10.211.55.4:2379,http://10.211.55.7:2379
Если вы создаёте кластер etcd самостоятельно, то вам потребуется как минимум два узла (один главный и один подчинённый). Для локального создания кластера можно обратиться к ссылке: https://gitee.com/cristiane/micro-mall-api/blob/master/%E5%BE%AE%E5%95%86%E5%9F%8EETCD%E9%83%A8%E7%BD%B2.pdf

Создание приложения

См. инструменты kelvins: https://gitee.com/kelvins-io/kelvins-tools/blob/master/README.md

Конфигурационные файлы для последней версии

Файл конфигурации по умолчанию находится в корне проекта /etc/app.ini. Большинство проектов, начинающихся с micro-mall-, уже содержат необходимые конфигурационные файлы. Вы можете просто изменить их в соответствии со своими настройками.

На момент последней версии kelvins все поддерживаемые проекты имеют следующие конфигурационные файлы (./etc/app.ini): Конфигурационный элемент, если он не заполнен, будет использовать значение по умолчанию. Конечно, соответствующие бизнес-функции также не могут быть использованы.

Рекомендуется настроить следующие параметры:

kelvins-server Окружение: выбор значения dev, test, release или prod. AppName: если не пусто, приоритет выше, чем у имени, указанного в коде. PIDFile: обратите внимание на формат пути в Windows.

[kelvins-сервер]
AppName = "kelvins-шаблон"
Окружающая среда = "dev"
PIDFile = "./kelvins-app.pid"

kelvins-logger Логирование: уровень, путь и т.д. RootPath: обратите внимание на формат пути в Windows.

[kelvins-логгер]
RootPath = "./logs"
Уровень = "отладка"

-- Самостоятельно настраиваемые параметры: kelvins-http-server Настройка RPC и HTTP сервисов. Network и *Timeout применяются только к онлайн-приложениям (h2c->gPRC, http). SupportH2 применим только к HTTP сервисам, вызовы RPC по умолчанию используют H2. После включения H2 HTTP сервисы всё ещё совместимы с HTTP1.1, но клиенты, использующие HTTP, должны настроить транспорт HTTP-клиента для обновления протокола до HTTP2.

[kelvins-HTTP-сервер]
Сеть = "TCP"
ReadTimeout = 30
WriteTimeout = 30
IdleTimeout = 30
ПоддержкаH2 = ложь

kelvins-http-rate-limit Настройка ограничения скорости HTTP сервисов. MaxConcurrent — максимальное количество одновременных подключений (больше 0 действует).

[kelvins-ограничитель скорости HTTP]
MaxConcurrent = 0

kelvins-mysql MySQL: информация о конфигурации подключения. *Timeout измеряется в секундах.

[kelvins-MySQL]
Хост = "127.0.0.1:3306"
Имя пользователя = "root"
Пароль = "2123afsdfadsffasdf"
DBName = "micro_mall_user"
Charset = "utf8"
PoolNum =  10
MaxIdleConns = 5
ConnMaxLifeSecond = 3600
MultiStatements = истина
ParseTime = истина
InterpolateParams = истина
ConnectionTimeout = "30s"
WriteTimeout = "30s"
ReadTimeout = "30s"

kelvins-redis Redis: информация о конфигурации подключения. *Timeout измеряется в секундах.

[kelvins-Redis]
Хост = "127.0.0.1:6379"
Пароль = "f434rtafadsfasd"
БД = 1
PoolNum = 10
IdleTimeout = 300
ConnectTimeout = 30
ReadTimeout = 30
WriteTimeout = 30

kelvins-g2cache CacheDebug: включить режим отладки. CacheMonitor: включить функцию мониторинга статистики. FreeCacheSize: максимальный объём памяти локального кэша (freecache) в байтах. OutCachePubSub: включить функцию публикации и подписки для экземпляра.

[kelvins-g2cache]
CacheDebug = ложь
CacheMonitor = ложь
FreeCacheSize = 52428800
RedisConfDSN = "127.0.0.1:6379"
RedisConfDB = 3
RedisConfPwd = "xxxx"
RedisConfMaxConn = 10
OutCachePubSub = ложь
PubSubRedisChannel = "kelvins-g2cache-pubsub-channel"
PubSubRedisConfDSN = "127.0.0.1:6379"
PubSubRedisConfDB = 5
PubSubRedisConfPwd = "xxxx"
PubSubRedisConfMaxConn = 3

kelvins-mongodb MongoDB: информация о конфигурации подключения.

[kelvins-MongoDB]
Uri = "mongodb://127.0.0.1:27017"
Username = "admin"
Password = "fadfadsf3"
Database = "micro_mall_sku"
AuthSource = "admin"
MaxPoolSize = 9
MinPoolSize = 3

kelvins-queue-redis Информация о конфигурации Redis для функций очередей. ResultsExpireIn измеряется в секундах. DisableConsume указывает, выполняется ли потребление задач в очереди в качестве типа приложения очереди.

[kelvins-очередь-redis]
Брокер = "redis://xxx"
DefaultQueue = | https://gitee.com/cristiane | На основе сигналов операционной системы, есть различия на разных платформах
2021-4-19 | Поддержка gin | https://gitee.com/cristiane | Разрешено регистрировать gin http handler в приложении
2021-7-9 | Совместимость с Windows | https://gitee.com/cristiane | Исправлена проблема невозможности запуска приложения на платформе Windows
2021-8-1 | Оптимизация функции выполнения при выходе из приложения | https://gitee.com/cristiane | Улучшена обработка исключений при завершении работы приложения
2021-8-1 | Поддержка балансировки нагрузки | https://gitee.com/cristiane | Для gRPC и HTTP приложений; автоматическое распределение нагрузки между несколькими экземплярами одного приложения
2021-8-7 | Команда запуска | https://gitee.com/cristiane | -s параметр запуска, поддержка запуска процесса, перезапуска процесса, остановки процесса
2021-8-13 | Проверка работоспособности RPC | https://gitee.com/cristiane | Поддерживается использование инструментов типа grpc-health-probe для проверки работоспособности
2021-8-14 | Авторизация доступа к RPC  токен | https://gitee.com/cristiane | В приложениях RPC поддерживается включение авторизации доступа
2021-8-14 | Инструмент нагрузочного тестирования RPC-ghz | https://gitee.com/cristiane | Поддерживает тестирование приложений RPC под нагрузкой и создание отчётов
2021-9-1 | Несколько обновлений | https://gitee.com/cristiane | Выравнивание журналов RPC, параметризация конфигурации сервера RPC и оптимизация запуска
2021-9-11 | Несколько обновлений | https://gitee.com/cristiane | Оптимизированы client_service, print, queue и другие
2021-9-18 | Оптимизация среды выполнения, оптимизация HTTP | https://gitee.com/cristiane | Вывод информации на основе журнала среды выполнения
2021-9-20 | Добавление метаданных в RPC и HTTP, оптимизация регистрации сервисов | https://gitee.com/cristiane | Например, request-id, version, время запроса, имя сервиса, узел сервиса и т. д.
2021-9-25 | Рефакторинг перехватчика RPC-сервисов, поддержка H2 для HTTP-сервиса | https://gitee.com/cristiane | Перехватчик, HTTP2
2021-10-1 | Сервисы RPC и HTTP поддерживают ограничители потока | https://gitee.com/cristiane | Ограничение потока
2021-10-15 | Мониторинг состояния онлайн-сервисов | https://gitee.com/cristiane | Слежение за триггерами resolver в узлах etcd
2021-10-15 | Регистрация онлайн-сервисов в etcd без необходимости отдельной настройки хоста сервиса | https://gitee.com/cristiane | Не нужно отдельно настраивать хост сервиса
2021-11-5 | Внедрение многоуровневого кэша g2cache, исправление ошибок | https://gitee.com/cristiane | Модуль g2cache включается на основе конфигурации
2023-12-27 | Удаление util/test_tool | https://gitee.com/cristiane | Библиотека ghz вызвала конфликт версий grpc
2023-12-28 | Решение конфликта версий зависимостей mod, обновление версии gin | https://gitee.com/cristiane | Конфликт версий библиотек etcd и grpc
2023-12-28 | Поддержка распределённых транзакций seata-go | https://gitee.com/cristiane | Версия go seata поддерживает только режимы at (SQL прокси) и tcc

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

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

Введение

Go микросервисная (микросервис) структура, поддерживает gRPC, gin, HTTP, cron, MQ-потребителя, онлайн-сервисы автоматически регистрируются в etcd / автоматическое распределение нагрузки между экземплярами. Развернуть Свернуть
BSD-3-Clause
Отмена

Обновления

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

Участники

все

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

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