SOFA:Channel/, интересный и практичный канал для распределенной архитектуры.
Эта статья основана на совместном использовании SOFAChannel # 11, тема: Начните с примера, чтобы испытать облегченный контейнер изоляции классов SOFAArk. Видео-обзор и адрес просмотра PPT находятся в конце статьи. Добро пожаловать в живую интерактивную группу DingTalk: 23372465, не пропускайте каждую прямую трансляцию.
Привет всем, меня зовут Сюаньбэй, директор SOFAArk с открытым исходным кодом. Тема, которой я делюсь с вами сегодня, — «Опыт использования контейнера изоляции легкого класса SOFAArk на примере». Я объясню вам SOFAArk, а также покажу демонстрацию. Я надеюсь, что вы можете работать со мной, чтобы испытать конкретную работу и реализацию функций SOFAArk.
СОФААрк:GitHub.com/sopoststack/is…
Сегодняшний обмен начнется со следующих трех аспектов:
- Первое знакомство с SOFAArk;
- время выполнения компонента;
- Руки;
В центре внимания сегодняшняя практическая практика последней части. Первые две части кратко познакомят вас с основными концепциями SOFAArk. Я надеюсь, что в последней практической части вы сможете следовать за мной, чтобы испытать SOFAArk на практике. демонстрационной версии, а также испытать SOFAARk на практике. Помогите всем лучше понять представленные ранее концепции.
1. Знакомство с SOFAArk
Теперь давайте начнем понимать SOFAArk. Прежде чем мы приступим к практике, давайте сначала разберемся, что такое SOFAArk. SOFAArk — это легкий изолирующий контейнер на основе Java с открытым исходным кодом от Ant Financial. Вы можете подписаться и отметить SOFAArk.
СОФААрк:GitHub.com/sopoststack/is…
В процессе крупномасштабной разработки программного обеспечения обычно рекомендуется режим разработки подключаемых базовых функций и модульных бизнес-функций, чтобы получить преимущества низкой связанности, высокой связности и повторного использования функций. Исходя из этого, SOFAArk предоставляет набор относительно стандартизированных подключаемых модулей и модульных решений для разработки. Возможности продукта в основном включают:
- Определена модель загрузки классов, а базовые подключаемые модули и бизнес-приложения (модули) изолированы друг от друга во время выполнения. Один подключаемый модуль и приложение (модуль) загружаются разными загрузчиками классов, что позволяет эффективно избежать взаимных конфликтов пакетов. и улучшить функциональную сложность плагинов и модулей.
- Определять спецификации разработки подключаемых модулей, предоставлять инструменты упаковки maven и легко и быстро упаковывать несколько сторонних пакетов в подключаемые модули (подключаемый модуль Ark, далее именуемый «подключаемый модуль»);
- Определять спецификации разработки модулей, предоставлять инструменты упаковки maven и легко и быстро упаковывать приложения в модули (Ark Biz, далее именуемый Biz);
- Обеспечить стандартный программный интерфейс для Plugin и Biz, включая сервисы, события, точки расширения и другие механизмы;
- Поддержка комбинированного развертывания нескольких Biz, упаковка нескольких Biz в исполняемый файл Fat Jar во время разработки или использование API или центра конфигурации (Zookeeper) для динамической установки и удаления Biz во время выполнения;
SOFAArk может помочь решить такие сценарии, как конфликты пакетов зависимостей и объединенное развертывание нескольких приложений (модулей).
В SOFAArk есть три основных понятия, а именно пакет Ark, пакет Ark Biz и пакет плагина Ark:
Пакет Ark: упакованный продукт, аналогичный Spring Boot, это Fat Jar, то есть финальное состояние доставки приложения, пакет Ark, который можно запускать в виде Java-jar.
Пакет Ark Biz: называемый Biz, это конечное состояние поставки компонента. Вы также можете понять это по названию. Он в основном инкапсулирует некоторую бизнес-логику.
Пакет плагинов Ark: для краткости плагин предоставляет возможность поглощать базовые компоненты, не связанные с бизнесом, такие как RPC, сообщения и т. д.
Далее, в порядке, указанном выше, давайте посмотрим, что в основном содержится в этих трех пакетах.
Структура каталогов пакетов Ark
На картинке нижеСтруктура каталогов пакетов Ark, Пакет Ark имеет каталог Biz, каталог Container, каталог плагинов, каталог Biz — это один Ark Biz, каталог плагинов сохраняет все плагины Ark, Container — это контейнер Ark, контейнер Ark будет отвечать за запуск плагина Ark и Ark Biz.
Формат каталога пакетов Ark Biz
После представления формата каталога пакета Ark давайте представим формат пакета Ark Biz:
В формате каталога пакета Ark Biz также есть несколько ключевых форматов каталогов, а именно:
- application.properties: стандартный файл конфигурации проекта Spring Boot/SOFABoot;
- каталог lib: каталог зависимостей приложения;
- META-INF/MANIFEST: файл конфигурации Biz.
Структура каталогов пакетов плагинов Ark
Далее я представлю пакет **Ark Plugin.Структура каталогов пакета **Ark Plugin аналогична структуре пакета Ark Biz, но файл META-INF/MANIFEST.MF пакета Ark Plugin немного более сложный, чем пакет Ark Biz. Плагин поддерживает определение свойств, таких как пакет импорта, пакет экспорта, классы импорта и классы экспорта в файле META-INF/MANIFEST.MF. Эти свойства поддерживают плагин ClassLoader для делегирования загрузки другим плагинам при загрузке классов или файлы ресурсов.
Структура каталогов пакета Ark, пакета Ark Biz и пакета плагина Ark была представлена выше.Далее мы представим всю структуру времени выполнения пакета Ark. На рисунке ниже видно, что во время выполнения пакет Ark разделен на три слоя: нижний слой — Ark Container, средний — Ark Plugin, а верхний — Ark Biz. Контейнер Ark отвечает за запуск всех плагинов Ark и Ark Biz. Плагин Ark поддерживает возможности импорта и экспорта классов, поэтому между плагинами Ark есть двусторонние стрелки для делегирования друг другу. Чтобы упростить использование Ark Biz, Ark Biz не поддерживает импорт и экспорт классов. Ark Biz по умолчанию импортирует все классы плагина Ark.
Способность разных плагинов SOFAArk делегировать загрузку классов друг другу может помочь нам решить файловый сценарий, то есть конфликты зависимостей:
Например, в приведенном выше сценарии есть проект, который зависит от зависимости A и зависимости B. Эти две зависимости зависят от разных версий Hessian: зависимость A зависит от Hessian 3, а зависимость B зависит от Hessian 4. Hessian 3 и Hessian 4 несовместимы, будут конфликты, так как решить эту проблему?
SOFAARk предлагает решение. Если наша Зависимость A конфликтует с зависимостями Hessian Зависимости B, мы можем упаковать Зависимость A целиком в Плагин Ark, а Зависимость B целиком в Плагин Ark, каждый плагин Ark является отдельным Classloader, так что Hessian 3 используемый зависимостью A, и гессиан 4, используемый зависимостью B, больше не будут конфликтовать.
Разрешение конфликтов зависимостей — один из основных сценариев использования SOFAArk, но сегодня мы не будем вдаваться в детали этого сценария, а в основном представим еще одну возможность SOFAArk, то есть возможность выполнения компонента.
Во-вторых, время выполнения компонента
Среда выполнения компонентов позволяет динамически устанавливать, удалять и переключать модули Biz без перезапуска приложения, чтобы изменить способ его работы. На следующем рисунке показана структура среды выполнения компонента. Вся структура среды выполнения очень похожа на структуру среды выполнения пакета Ark выше. Разница в том, что мы расширяем тип Ark Biz. В структуре среды выполнения компонента Ark Biz имеет два компонента. два типа: Master App Biz и Dynamic Biz. Мы называем Master App Biz хост-приложением, которое нельзя устанавливать и удалять динамически, Dynamic Biz — это динамический модуль, который можно устанавливать и удалять динамически во время выполнения.
В процессе динамической установки и удаления компонентов SOFAArk обеспечивает расширенное управление жизненным циклом:
Чтобы установить Biz, вам в основном нужно пройти: модуль синтаксического анализа - модуль регистрации - модуль запуска - проверка работоспособности - состояние переключения.Если какой-либо из этих шагов не будет выполнен, установка Biz не будет выполнена.
Также есть некоторые процессы при выгрузке модуля.Во-первых, вам нужно переключить его в деактивированный - закрыть applicationcontext - выйти из службы JVM - отправить событие удаления - очистить кеш - переключить неразрешенный.
Разные модули не являются островами, и связь между модулями определенно необходима. Давайте представим, как модули взаимодействуют друг с другом. Два Ark Biz могут обмениваться данными через JVM, RPC/Dubbo/Rest, точку расширения. Таким образом, каждый модуль может воспринимать модули друг друга.
Например, бизнес слева – это хост-бизнес, а бизнес справа – динамический бизнес. Хост-бизнес вызывает службу динамического бизнеса. Если в динамическом бизнесе есть ошибка, которую необходимо исправить, мы не можем перезапустить хост Biz, но установить Biz для него Новая версия динамического решения Biz.
Три, практическая практика
В предыдущем разделе я кратко представил основные концепции SOFAArk и основные концепции среды выполнения компонентов.Далее давайте попрактикуемся в использовании среды выполнения компонентов.
Позвольте мне представить сцену, которую мы будем демонстрировать сегодня. Как показано на рисунке выше, супервайзер в Сцене 1 считает, что текущий список продуктов нерегулярен, и алгоритм нуждается в изменении. приложение обычно необходимо перезапускать, что довольно тяжело. Супервайзер в Сцене 2 также считал, что алгоритм необходимо изменить, но в этот раз мы использовали возможности среды исполнения компонентов SOFAArk для изменения алгоритма без перезапуска приложения.
Конечным результатом является то, что по умолчанию запуск приложения организован в следующем порядке:
После завершения практики, после того как мы установим новый модуль, порядок его сортировки изменится, как показано на следующем рисунке:
Это основной эффект, которого мы хотим добиться сегодня.Далее мы перейдем к демо-практике, выполним пошаговые операции и покажем вам лучшее понимание среды выполнения компонента SOFAArk.
Содержание этого эксперимента черезSOFAArkПредоставленная возможность динамического модуля может реализовать динамическое изменение стратегии сортировки списка товаров. Путем изменения поведения приложения без перезапуска хоста и без изменения конфигурации приложения.
В настоящее время мы загрузили демонстрационный проект на Github, и вы можете шаг за шагом следовать README, чтобы увидеть окончательный результат. Демо:GitHub.com/caoji09/so…
Суммировать
Вышеизложенное — это весь контент нашего канала SOFAChannel в этом выпуске.Этот обмен сначала поможет вам быстро понять три важных базовых знания в SOFAArk, а именно пакет Ark, пакет Ark Biz и пакет плагина Ark. Поняв основные моменты знаний о SOFAArk, я познакомлю вас с концепцией среды выполнения компонента SOFAArk и проблемами, которые необходимо решить во время выполнения компонента SOFAArk. Наконец, используется практический пример, который поможет вам быстро приступить к работе со средой выполнения компонента SOFAArk.
Если у вас есть какие-либо вопросы, оставьте сообщение или свяжитесь с нами на Github.
СОФААрк:GitHub.com/sopoststack/is…
Видеообзор этого выпуска и адрес просмотра PPT
specialty.ant fin.com/community/come…
Этот живой обзор QA
@hongguan Q1:
Если используется SOFAArk, можно ли напрямую интегрировать его в проект SOFABoot? Или вам нужно построить проект SOFAARk? Можно ли использовать SOFAARk для проектов, отличных от SOFABoot?
О: Его можно напрямую интегрировать в проект SOFABoot. Для него не нужно создавать новый проект SOFAArk. Его также можно использовать для проектов, отличных от SOFABoot, если это проект Spring Boot. Однако, если он связан с SOFA зависимости не вводятся, аннотации типа @SofaService и @SofaReference работать не будут.
Хост-пакет - это указанная версия 1.0 в начале.Если я обновился до версии 2.0 онлайн, если онлайн-машина зависает и перезагружается, значит, мой алгоритм изменился, и есть проблема.
A: Это требует некоторого управления кластером, и модуль автоматически устанавливается при перезапуске.В настоящее время мы имеем его с открытым исходным кодом.sofa-dashboardЭто может помочь вам в управлении кластером. СОФАDashboard:GitHub.com/sopoststack/is…
@陈新杰 Q2:
Изменится ли сортировка приложений при перезапуске?
О: Вы можете указать приоритет в Ark Biz, чтобы обеспечить порядок запуска.
@Башня Q3:
Как обновить, если копий несколько?
О: Мультикопирование относится к управлению кластером? Теперь мы с открытым исходным кодомsofa-dashboardЭто может помочь вам в управлении кластером.
@qilu Q4:
Можно ли установить Biz через API?
О: Класс com.alipay.sofa.ark.api.ArkClient предоставляется в проекте диван-арк для поддержки установки Biz через API.
@Слепой монах Q5:
Что делает процесс установки biz и последующей активации модуля во время работы Если пакет biz jar находится на удаленном складе, как загрузить в него код? Он сброшен на локальный диск и загружен с помощью загрузчика классов?
О: В ходе установки будет динамически создан ClassLoader для загрузки Biz-кода. Активация изменяет только внутреннее состояние модуля. Одновременно может быть активна только одна версия модуля. Если Biz Jar находится в удаленном репозитории, он будет загружен локально, а затем загружен с помощью загрузчика классов.
После установки biz во время выполнения, будет ли этот пакет biz в исполняемом пакете jar?
О: Нет.
@zenpeng Q6:
Есть ли у SOFAARk практические сценарии применения?
О: Вы можете посмотреть на это:Tickets.WeChat.QQ.com/Yes/PM B72OB3i…
Добро пожаловать в серию совместных разработок «Анализ | Исходный код SOFAARk».
В то же время мы начали серию «Анализ | Исходный код SOFAArk», в которой постепенно будет подробно представлен дизайн кода и реализация каждой части. Ожидается, что он будет выполняться в соответствии со следующим каталогом:
- 【завершенный】Введение в SOFAArk, облегченную структуру изоляции классов
- 【Заявлено】Анализ модели контейнера SOFAArk
- 【Заявлено】Анализ механизма загрузки модели класса SOFAARk
- 【Заявлено】Анализ возможностей развертывания слияния SOFAArk
- 【Заявлено】Анализ механизма SOFAArk SPI и механизма ClassLoaderHook
- [Будет востребовано] Анализ механизма динамической конфигурации SOFAARk
- [Будет заявлено] Анализ плагина упаковки SOFAARk maven
- [Будет востребовано] (Практика) Анализ и практика работы механизма плагинов SOFAArk
метод сбора
Добро пожаловать на участие в совместном строительстве, ответьте на [название статьи, на которую вы хотите претендовать] в фоновом режиме общедоступной учетной записи [распределенной архитектуры финансового уровня], мы возьмем на себя инициативу связаться с вами, и вы можете присоединиться после подтверждения квалификации пришло время шоу!
Официальная учетная запись: распределенная архитектура финансового уровня (Antfin_SOFA)