микроядерная архитектура

Архитектура
  • Примечание. Источник статьи: колонка 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 - доступна услуга кэшбэка