ShockWeb
ShockWeb — это микросервисная архитектура, которая является эффективной, простой в использовании и управляемой. Она предоставляет возможность разработки без вмешательства и зависимостей, а также легко интегрируется с основными промежуточными программными продуктами. Поддерживает как модели с состоянием, так и без него, а также нативные IOC и Spring IOC контейнеры. Концепция дизайна схожа с Spring Cloud и Dubbo, при этом производительность ShockWeb более чем в 10 раз выше, чем у Spring Cloud.
В основе архитектуры лежат Netty и высокоэффективный двоичный инструмент сериализации. Архитектура состоит из пяти основных частей:
- центр регистрации;
- микросервисы;
- клиент микросервисов;
- сервисный прокси;
- центр конфигурации.
Каждая часть может быть развёрнута и запущена отдельно или через Java-методы. Это делает архитектуру легко расширяемой и масштабируемой.
Основные технологии
- Коммуникационные технологии:
- использование Netty для коммуникации, основанной на протоколе TCP;
- точка-точка и широковещательная коммуникация, где клиенты напрямую взаимодействуют с сервисами без посредников;
- мультиплексирование каналов связи для поддержания длительных соединений.
- Технологии сериализации:
- двоичная сериализация для уменьшения размера данных после сериализации (включая точную битовую информацию о заголовках и управляющих маркерах);
- кодирование имён методов и классов для дальнейшего уменьшения размера сериализованных данных;
- отсутствие необходимости указывать класс при десериализации, что обеспечивает истинную инкапсуляцию кода.
Состав микросервисной архитектуры
- Центр регистрации:
- предоставление нескольких spaceName для регистрации различных категорий микросервисов;
- поддержка кластеризации центров регистрации, что повышает надёжность системы и снижает требования к ресурсам;
- управление сервисами, когда задачи достигают предела обработки, они распределяются между другими микросервисами.
- Центр конфигурации:
- распределённый центр конфигурации;
- обеспечение унифицированных конфигурационных услуг для всех компонентов ShockWeb.
- Микросервисы:
- автономные и контейнерные способы запуска, не зависящие от конкретных контейнеров;
- интеграция со Spring для реализации вызовов на уровне сервисов и использования возможностей Spring;
- упрощённый IOC и прямая передача данных для повышения эффективности передачи;
- ограничение потока и динамическое регулирование для каждого микросервиса во время выполнения;
- асинхронная поддержка микросервисов для обеспечения их приёма и обработки на стороне сервера, иначе возвращается исключение;
- передача контекста вызова по цепочке микросервисов и поддержка полного журнала вызовов;
- маршрутизация микросервисов с функциями маршрутизации и балансировки нагрузки.
- Клиенты:
- интеграция с Spring для декларативных вызовов сервисов и динамических вызовов API;
- прямая передача данных и высокая эффективность передачи больших объёмов данных;
- широковещательные вызовы для совместного выполнения задач несколькими микросервисами;
- поддержка прерывания, ошибок и повторных попыток;
- поддержка широковещательных вызовов микросервисов.
Комментарии ( 0 )