Nebula — это ориентированная на бизнес IoC-сеть, ориентированность на бизнес является одной из главных особенностей, отличающих Nebula от обычных сетевых фреймворков. Ориентированность на бизнес означает, что Nebula предоставляет компоненты для быстрой разработки, с помощью которых эффективность разработки бизнес-приложений становится очень высокой. Кроме того, эти компоненты стандартизируют и унифицируют код разработки бизнес-приложений, повышая читаемость кода и улучшая коммуникацию между командами.
Возможно, вы слышали об Actor-модели или даже хорошо знакомы с ней. Actor-модель — это концепция модели обработки параллельных вычислений, которая определяет некоторые правила поведения и взаимодействия компонентов системы. По сравнению с параллельным программированием, основанным на совместном использовании данных, Actor-модель, основанная на механизме передачи сообщений, имеет большое преимущество, заключающееся в том, что она не вызывает конкуренции за данные и не требует решения сложных проблем блокировки. Наиболее известными языками программирования, использующими эту модель, являются Erlang и Elixir, а также Akka, известная библиотека Scala.
Компонент Actor в Nebula не был заимствован из Actor-моделей, таких как Erlang или Akka. Компонент Actor был абстрагирован на основе трёх компонентов Starship (Cmd, Step и Session), предшественника Nebula. Хотя компонент Actor в Nebula может иметь некоторое сходство с Actor-моделью, это совпадение, и автор не знал об Actor-модели до написания Nebula.
Объяснение применения Actor и определение компонента Actor переплетаются друг с другом, что делает понимание более лёгким и менее скучным. Давайте сначала рассмотрим общий вид компонента Actor:
Nebula является IoC-сетью, разработчикам нужно только понимать классы, связанные с Actor, чтобы разрабатывать распределённые сервисы без необходимости понимания всего фреймворка. Это отличается от многих других сетевых фреймворков и делает разработку более эффективной для разработчиков приложений.
Все бизнес-логики абстрагируются в события и обработчики событий, а Actor является обработчиком событий. Actor служит посредником между всеми компонентами Actor и фреймворком Nebula, играя важную роль в применении фреймворка и разработке бизнес-логик, что будет подробно объяснено позже. На данный момент можно понять, что Actor является базовым классом всех функциональных компонентов.
Actor обрабатывает события (сообщения), все бизнес-логики абстрагированы в события и обработку событий. Существует семь типов Actor: Cmd, Module, Step, Session, Context, Operator и Chain. Бизнес-логика реализуется через дочерние классы, производные от шести типов обработчиков событий, кроме Chain, фокусируясь на реализации бизнес-логики и не заботясь о вещах, выходящих за рамки бизнес-логики. Starship, предшественник Nebula, имел только четыре типа компонентов (Cmd, Module, Step и Session) и успешно применялся в производственной среде IM. Эти компоненты легко понять и применить, и хотя Nebula добавила несколько компонентов, она не увеличила сложность. Сам класс Actor предоставляет функции-члены для взаимодействия со всеми компонентами и фреймворками. Через эти функции-члены можно выполнять все функции, необходимые для бизнес-логиков, то есть, разработка бизнеса на основе фреймворка Nebula требует только понимания функций 30+ членов класса Actor.
Cmd является входом для бизнес-логики, соответствующим команде cmd в MsgHead, используемой для выбора соответствующей логики обработки. Некоторые известные фреймворки создают Handler в виде цепочки обработки, где событие проходит по этой цепочке обработки, и соответствующий Handler завершает обработку, вызывая следующий Handler после завершения обработки. В отличие от этого, Nebula помещает все Cmd (Handler) в HashMap, и когда получает Msg (событие), он напрямую передаёт его соответствующему Cmd классу для обработки на основе команды cmd (типа события). Каждое событие имеет только один обработчик, и если требуется несколько обработчиков, это внутреннее дело Cmd, которое может быть реализовано через Step, Operator и т. д., образуя цепочку обработки (будет объяснено в последующих главах).
Module выполняет ту же функцию, что и Cmd, но разница заключается в сопоставлении с командой cmd в MsgHead и URL_PATH в HttpMsg. Понимание Cmd эквивалентно пониманию Module.
Step является наиболее важным компонентом Actor, и высокая производительность Nebula зависит от Step. Логика IO-интенсивных приложений строится вокруг Step. Шаг можно рассматривать как операцию в C-языке, выполняемую асинхронно, но гораздо проще в использовании. Фактически, Step реализован с использованием асинхронных обратных вызовов, но сложные вещи выполняются фреймворком Nebula, оставляя разработчикам приложений более простые Step. Step работает совершенно иначе, чем future и promise, которые используются во многих rpc-фреймворках, поддерживающих синхронную, асинхронную и полусинхронную работу.
Session является вторым по важности компонентом Actor после Step и используется для сохранения состояния и данных. Другие компоненты Actor, такие как Cmd и Step, также могут использовать Session для передачи данных. Он также подходит для использования в качестве основного компонента в некоторых приложениях для потоковой передачи данных в реальном времени (например, Nebio).
Context является компонентом данных контекста, который используется для передачи данных между Actor с сильными зависимостями. Разница между ним и Session заключается в том, что он используется только для передачи данных с сильными зависимостями, и его эффективность и удобство передачи данных выше, чем у Session.
Operator является компонентом модели и вычислений.
Chain является компонентом управления динамическим вызовом, который используется для динамического управления вызовами Step и Operator во время выполнения. Вызовы, управляемые Chain, не только могут динамически изменяться, но и более удобны и интуитивно понятны.
Каждый компонент Actor имеет свою собственную функцию и применимые сценарии, и гибкое использование этих компонентов может удовлетворить большинство бизнес-требований. Это основа того, почему Nebula называется IoC-сетью, ориентированной на бизнес. Кроме того, благодаря продуманному дизайну компонентов Actor, возможно, существуют некоторые функции, о которых даже разработчики Nebula не подозревают, и они ждут, пока разработчики приложений откроют их. Конечно, открытие новых функций не означает злоупотребления ими, и использование, противоречащее официальной документации, не рекомендуется.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )