EASY-MS
EASY-MS — это основанная на Spring Cloud, Spring Boot и Mybatis структура для расширения функциональности микросервисов. Она характеризуется компонентностью, высокой производительностью и богатством функций. Код является кратким, архитектура — чёткой, компоненты можно свободно комбинировать, следуя стандартам разработки Alibaba, что позволяет использовать её в качестве основы для разработки серверных служб.
Основная цель — позволить разработчикам писать меньше кода для быстрого создания мощных микросервисных приложений, используя идею разделения бизнес-кода и технического кода, делая проект более лаконичным, структуру — более чёткой, разработку — более простой, а быструю разработку — ещё более быстрой.
Компоненты
- easy-ms: компонент интеграции;
- easy-ms-common: базовый компонент зависимостей;
- easy-ms-datasource: компонент расширения источника данных;
- easy-ms-logging: компонент расширения логирования;
- easy-ms-rest: компонент расширения REST-интерфейса;
- easy-ms-mq: компонент расширения MQ;
- easy-ms-redis: компонент расширения Redis.
Другие компоненты, такие как интерфейс, разрешения и часть общего кода, содержат конфиденциальный код компании и пока не открыты. В будущем они могут быть выделены отдельно или напрямую зависеть от других интерфейсных фреймворков.
Описание компонентов
Базовый компонент зависимостей
Особенности:
-
Подробнее см. здесь.
Компонент расширения источника данных
Особенности:
- Поддержка одного или нескольких источников данных, каждый из которых поддерживает многоуровневую структуру мастер-ведомый;
- Простая конфигурация, значительно упрощающая настройку источника данных и предоставляющая глобальные параметры конфигурации;
- Поддержка балансировки нагрузки, включая основные стратегии балансировки нагрузки, удовлетворяющие большинству сценариев и максимально повышающие коэффициент использования базы данных;
- Поддержка высокой доступности, автоматическое удаление базы данных при сбое соединения из-за сбоя базы данных во время балансировки нагрузки;
- Поддержка аварийного переключения, автоматический переход на другую базу данных при возникновении проблем с подключением к текущей базе данных во время выполнения SQL;
- Поддержка динамического добавления, изменения и удаления источников данных во время работы приложения;
- Поддержка распределённых транзакций для нескольких источников данных в сочетании с транзакционными аннотациями Spring @Transactional или программным управлением транзакциями;
- Поддержка регистрации медленных SQL-запросов, возможность включения и выключения по желанию, настройка времени медленного SQL, отображение в реальном времени на странице;
- Поддержка мониторинга всех источников данных, подробное отображение текущих выполняемых SQL-операторов каждого источника данных, включая время использования, количество выполненных операций, количество обрабатываемых операций и т. д.;
- Интеграция PageHelper для разбиения на страницы и использование асинхронного запроса общего количества, значительное улучшение производительности;
- Возможность указания имени источника данных и определения того, следует ли принудительно выбирать основной или ведомый источник данных с помощью аннотаций или ручного программирования;
- Поддержка пакетной обработки, позволяющая выполнять массовые операции в XML-файлах MyBatis аналогично SQL, упрощая управление SQL и делая код более кратким и простым в использовании, обеспечивая высокую эффективность и поддержку пакетных транзакций;
- Строгий контроль над операциями вставки, обновления и удаления, требующий обязательного использования основного источника данных для снижения риска ошибок, вызванных неправильным кодом разработчика;
- Не требует внедрения таких промежуточных программ, как Mycat, но обладает всеми функциями Mycat и более гибким использованием, чем Mycat, с более разнообразными сценариями использования и более простой архитектурой, чем Mycat;
- Может быть внедрён в существующие проекты Spring Boot или Spring MVC без Easy-Ms.
Подробнее см. здесь.
Компонент расширения логирования
Особенности:
- Использование двухуровневого асинхронного механизма, который значительно повышает производительность при сохранении низкого потребления памяти;
- Применение собственной очереди без блокировки, которая обеспечивает безопасность потоков и упорядоченность очередей при высоком уровне параллелизма;
- Повторное использование объектов журнала, что значительно снижает потребление памяти при высоком уровне параллелизма;
- Оптимизация логики печати журналов, уменьшение количества операций ввода-вывода при высоком уровне параллелизма и повышение производительности вывода журналов;
- Переписывание части преобразователей журналов (например, преобразователи дат и т.д.), что значительно ускоряет скорость преобразования журналов при высоком уровне параллелизма;
- Совместимость с Logback (поддерживает все версии) и commons-logging, может поддерживать расширение других фреймворков;
- Поддержка онлайн-переключения в реальном времени (требуется использование центра конфигурации), возможность переключения в режиме реального времени, чтобы включить или отключить асинхронный фреймворк логирования во время работы приложения;
- Онлайн-мониторинг в реальном времени, позволяющий просматривать статус переключателя и асинхронного фреймворка логирования в реальном времени;
- Может быть интегрирован в существующие проекты Spring Boot или Spring MVC без Easy-Ms.
Подробнее см. здесь.
Компонент расширения REST-интерфейсов
Особенности:
- Стандартизация интерфейсов REST, упрощение разработки и улучшение структуры кода;
- Поддержка глобального шифрования интерфейса и индивидуального шифрования интерфейса;
- Поддержка ограничения потока интерфейса с использованием Sentinel от Alibaba;
- Возможность настройки класса ответа;
- Поддержка распределённой блокировки интерфейса (требует зависимости от easy-ms-redis);
- Оптимизированная обработка запросов и ответов, обеспечивающая лучшую производительность;
- Интеграция Swagger, переписывание пользовательского интерфейса Swagger для предоставления более богатых функций, чем Swagger UI;
- Поддержка отладки в реальном времени для более удобного и быстрого процесса отладки.
Подробнее см. здесь..
Компонент MQ-расширения
Особенности:
- Поддерживает отправку одной записи и пакета записей (производитель объединяет несколько записей в одну запись, потребитель разделяет несколько записей на одну запись или пакет записей);
- Поддерживает кэширование сообщений MQ, позволяя в реальном времени запрашивать информацию о производстве и потреблении, автоматически архивируя успешные сообщения через 5 дней;
- Поддерживает повторную отправку и потребление сообщений MQ после сбоя, с уведомлением о сбое;
- Поддерживает ActiveMQ и RocketMQ.
Подробнее см. здесь..
Компонент Redis-расширения
Особенности:
- Позволяет добавлять префиксы (полезно при совместном использовании одного Redis несколькими системами);
- Использует аннотации для повышения эффективности разработки, стандартизации разработки и предотвращения ошибок разработчиков;
- Обеспечивает централизованное управление, позволяя в реальном времени просматривать все ключи Redis в использовании на странице, предотвращая сбой системы при использовании ключей для запроса всех ключей;
- Поддерживает распределённую блокировку (используя Lua-скрипты для предотвращения взаимоблокировок).
Подробнее см. здесь..
Комментарии ( 0 )