- Примечание. Источник статьи: колонка Geek Time «Изучение архитектуры с нуля».
- Архитектура микроядра, также известная как архитектура подключаемых модулей, представляет собой функционально-ориентированную масштабируемую архитектуру, которая обычно используется для реализации приложений на основе продуктов.
- Например, программное обеспечение IDE, такое как Eclipse, операционные системы, такие как UNIX, клиентское программное обеспечение, такое как приложение Taobao и т. д., есть также некоторые предприятия, которые проектируют свои собственные бизнес-системы в архитектуру микроядра, такие как логические системы страхового учета страховые компании, разные виды страхования Логика может быть инкапсулирована в плагины
Базовая архитектура
- Архитектура микроядра состоит из двух типов компонентов: ядра системы и подключаемых модулей.
основная система
- В основном отвечает за общие функции, не связанные с конкретными бизнес-функциями, такими как загрузка модулей, межмодульное взаимодействие и т. д.
подключаемый модуль
- В основном отвечает за реализацию конкретной бизнес-логики, такой как функция «Регистрация мобильного номера» в системе «Управление информацией о студентах».
Схема базовой архитектуры микроядра
- Функции базовой системы на приведенном выше рисунке относительно стабильны и не будут постоянно изменяться из-за расширения бизнес-функций.Подключаемые модули могут постоянно расширяться в соответствии с потребностями бизнес-функций.
- Суть микроядерной архитектуры заключается в том, чтобы инкапсулировать измененную часть в плагин, чтобы достичь цели быстрого и гибкого расширения, не влияя на стабильность всей системы.
ключевые моменты дизайна
- Ключевыми технологиями проектирования базовой системы микроядра являются: управление подключаемыми модулями, подключение подключаемых модулей и управление подключаемыми модулями.
1. Управление плагинами
- Базовая система должна знать, какие плагины доступны в данный момент, как их загружать и когда их загружать. Распространенным методом реализации является механизм реестра плагинов.
- Базовая система предоставляет реестр подключаемых модулей (который может быть файлом конфигурации, кодом или базой данных).Реестр подключаемых модулей содержит информацию о каждом подключаемом модуле, включая его имя, местоположение и время загрузки (загрузка при запуске). , или нажать нужно загрузить) и т.д.
2. Штекерное соединение
- Относится к тому, как подключаемые модули подключаются к основной системе. Вообще говоря, базовая система должна указывать спецификацию соединения между подключаемым модулем и базовой системой, затем подключаемый модуль реализуется в соответствии со спецификацией, и базовая система может быть загружена в соответствии со спецификацией.
- Общие механизмы соединения включают OSGi (используемый Eclipse), режим сообщений, внедрение зависимостей (используемый Spring) и даже распределенные протоколы, такие как RPC или HTTP Web.
3. Связь с плагином
- Относится к связи между плагинами. Несмотря на то, что плагины полностью отделены во время проектирования, в реальном бизнес-процессе неизбежно будет бизнес-процесс, который требует взаимодействия нескольких плагинов, что требует связи между двумя плагинами.
- Поскольку между плагинами нет прямой связи, связь должна проходить через базовую систему, поэтому базовая система должна обеспечивать механизм связи плагинов.
- Эта ситуация аналогична ситуации с компьютером.ЦП компьютера, жесткий диск, память и сетевая карта представляют собой независимо разработанные конфигурации.Однако во время работы компьютера должна быть связь между ЦП и памятью, памятью. и жесткий диск.Компьютер предоставляет их через шину на материнской плате.Функции связи между компонентами
- Базовая система микроядра также должна обеспечивать аналогичный механизм связи, чтобы можно было осуществлять нормальную связь между различными подключаемыми модулями.
Краткий анализ архитектуры OSGi
- Полное название OSGi — инициатива Open Service Gateway, которая сама по себе относится к альянсу OSGi. Это некоммерческая международная организация, целью которой является создание открытой спецификации услуг и установление открытого стандарта для предоставления услуг устройствам через сеть.Этот стандарт является спецификацией OSGi. Если не указано иное, это обычно относится к спецификации OSGi.
- Первоначальное намерение OSGi Alliance состояло в том, чтобы создать базовую платформу для ведения бизнеса в глобальной и локальной сети или на устройствах, поэтому самая ранняя разработка OSGi также предназначена для встроенных приложений, таких как телеприставки, сервисные шлюзы, мобильные телефоны, автомобили, и т. д. являются основными средами для его приложений
- Поскольку OSGi обладает такими преимуществами, как динамизм, горячая замена, возможность повторного использования, высокая эффективность и простота расширения, он применяется для разработки приложений на ПК.
- Особенно после того, как популярное программное обеспечение Eclipse приняло стандарт OSGi, OSGi стал предпочтительным стандартом подключаемых модулей.
- Сейчас OSGi имеет мало общего со встроенными приложениями, это больше OSGi как архитектурная модель микроядра.
Схема логической архитектуры фреймворка OSGi
1. Модульный слой (Модульный слой)
- Модульный уровень реализует функцию управления плагинами. В OSGi плагины называются Bundles, каждый Bundle представляет собой JAR-файл Java, и каждый Bundle содержит файл метаданных MANIFEST.MF, который содержит основную информацию о Bundle.
- Например, имя, описание, разработчик, путь к классам Bundle, а также пакеты, которые необходимо импортировать и экспортировать и т. д., базовая система OSGi загрузит эту информацию в систему для последующего использования.
Простой пример MANIFEST.MF выглядит следующим образом.
// MANIFEST.MF
Bundle-ManifestVersion: 2
Bundle-Name:UserRegister
Bundle-SymbolicName: com.test.userregister
Bundle-Version: 1.0
Bundle-Activator: com.test.UserRegisterActivator
Import-Package: org.log4j;version="2.0",
.....
Export-Package: com.test.userregister;version="1.0",
2. Слой жизненного цикла (Lifecycle layer)
- Уровень жизненного цикла реализует функцию подключения подключаемых модулей, обеспечивает управление модулями во время выполнения и доступ модулей к базовой платформе OSGi.
- Уровень жизненного цикла точно определяет операции жизненного цикла пакета (установка, обновление, запуск, остановка, удаление), и пакет должен реализовывать каждую операцию в соответствии со спецификацией. Например:
public class UserRegisterActivator implements BundleActivator {
public void start(BundleContext context) {
UserRegister.instance = new UserRegister ();
}
public void stop(BundleContext context) {
UserRegister.instance = null;
}
}
3. Сервисный уровень (сервисный уровень)
- Сервисный уровень реализует функцию подключаемого модуля связи. OSGi предоставляет функцию регистрации службы для каждого подключаемого модуля для регистрации служб, которые он может предоставлять, в основном реестре OSGi.Если служба хочет использовать другие службы, вы можете напрямую искать доступные сервисные центры в реестре служб.
- Например:
// 注册服务
public class UserRegisterActivator implements BundleActivator {
// 在 start() 中用 BundleContext.registerService() 注册服务
public void start(BundleContext context) {
context.registerService(UserRegister.class.getName(), new UserRegisterImpl(), null);
}
// 无须在 stop() 中注销服务,因为 Bundle 停止时会自动注销该 Bundle 中已注册的服务
public void stop(BundleContext context) {}
}
// 检索服务
public class Client implements BundleActivator {
public void start(BundleContext context) {
// 1. 从服务注册表中检索间接的“服务引用”
ServiceReference ref = context.getServiceReference(UserRegister.class.getName());
// 2. 使用“服务引用”去访问服务对象的实例
((UserRegister) context.getService(ref)).register();
}
public void stop(BundleContext context) {}
}
- Примечание. Регистрация службы здесь не является регистрацией подключаемого модуля в функции управления подключаемыми модулями, а на самом деле является механизмом связи между подключаемыми модулями.
Анализ архитектуры механизма правил
Механизм правил также является конкретной реализацией архитектуры микроядра с точки зрения структуры. Механизм выполнения можно рассматривать как микроядро. Механизм выполнения анализирует настроенный бизнес-поток, выполняет условия и правила и поддерживает бизнес различными способами. гибкий
Механизмы правил широко используются в биллинге, страховании, продвижении по службе и других сферах бизнеса. Например, для продвижения электронной коммерции общие правила продвижения таковы:
- Бесплатно 50 для более 100
- 3 штуки скидка 50
- Скидка 20% на 3 шт.
- 3-я часть бесплатно
- Кросс-стор более 200 минус 100
- 50 для новых пользователей
Выше приведены лишь некоторые из распространенных.На самом деле в полном списке их могут быть десятки и сотни.При расположении и совмещении схем продвижения могут быть сотни и тысячи.Если такой бизнес полностью реализовать с помощью кода эффективность разработки будет значительно повышена.Он далеко не поспевает за скоростью изменений в бизнесе, но механизм правил может гибко реагировать на этот спрос.Основные причины:
1. Расширяемый
- Благодаря ссылке на механизм правил реализация бизнес-логики отделена от бизнес-системы, и новые бизнес-функции могут быть расширены без изменения бизнес-системы.
2. Легко понять
- Правила описаны на естественном языке, который легко понять и использовать бизнес-персоналу, в отличие от кода, который могут понять и разработать только программисты.
3. Высокая эффективность
- Система механизма правил обычно обеспечивает визуальную настройку правил, утверждение, запрос и управление, что удобно для бизнес-персонала для быстрой настройки новых услуг.
Базовая архитектура механизма правил
- Разработчики разбивают и уточняют бизнес-функции на несколько правил и сохраняют правила в базе правил.
- В соответствии с потребностями бизнеса бизнес-персонал упорядочивает и комбинирует правила, настраивает их в бизнес-процессы и сохраняет в бизнес-библиотеке.
- Механизм правил выполняет бизнес-процесс для реализации бизнес-функции.
По сравнению с ключевыми моментами проектирования микроядерной архитектуры, как реализован механизм правил:
1. Управление плагинами
- Правила в обработчике правил — это надстройки микроядерной архитектуры, а обработчик — это ядро микроядерной архитектуры. Правила могут быть загружены и выполнены движком. В архитектуре механизма правил правила обычно хранятся в базе правил, которая обычно хранится в базе данных.
2. Штекерное соединение
- Подобно тому, как программисты должны использовать C++, Java и другие языки для разработки, механизм правил также указывает язык разработки правил.Бизнес-персонал должен писать файлы правил на основе языка правил, а затем механизм правил загружает и выполняет правило. файлы для выполнения бизнес-функций. Таким образом, механизм реализации подключаемого модуля механизма правил на самом деле является языком правил
3. Связь с плагином
- Путем связи между правилами обработчика правил является поток данных и поток событий. Поскольку отдельное правило не должно зависеть от других правил, между правилами нет активной связи. Правилам нужно только выводить данные или события, и движок преобразует данные или события. перейти к следующему правилу
Наиболее часто используемым механизмом правил является JBoss Drools с открытым исходным кодом, написанный на Java и основанный на алгоритме Rete.
Дроулс имеет следующие преимущества:
- Очень активная поддержка сообщества и широкий спектр приложений
- быстрая скорость выполнения
- Совместимость с Java Rule Engine API (JSR-94)
- Предоставляет веб-систему BRMS - Guvnor, Guvnor предоставляет базу знаний для управления правилами, с помощью которой можно реализовать контроль версий правил, а также модификацию и компиляцию правил в режиме онлайн, чтобы разработчики и системные администраторы могли управлять бизнес-правилами в режиме онлайн.
Хотя Drools утверждает, что он прост и удобен в использовании, его язык правил на самом деле похож на язык программирования.В реальном приложении обычный бизнес-персонал сталкивается с таким языком правил, стоимость обучения и понимания по-прежнему относительно высока, например: пример
Поэтому обычно необходимо инкапсулировать на основе Drools, а правила настроить на визуальные операции, как в следующем примере антифрод в электронной коммерции
Примечание. Учащиеся, которым интересно узнать о столбце Geek Time, могут проверитьGeek Time Column - доступна услуга кэшбэка