У чому різниця між моделлю Actor та мікросервісами?


23

І те й інше, схоже на паралельну комунікаційну мережу процесів MPI. Я ототожнюю акторів із службами. Чи актори більш динамічні (їх можна створити і вбити, як дихати, тоді як сервісна мережа статичніша) чи що?


Відповіді:


11

Акторська модель - це математична модель для паралельних обчислень, а мікросервіс - реалізація сервісно-орієнтованої архітектури. Подібність цілком випадкова.

Безумовно, можна побудувати мікросервіси на основі якоїсь моделі актора, а також створити структуру мікросервісу за допомогою акторської моделі, але це не означає, що вони еквівалентні. Замініть "мікросервісну систему" на "електронну систему електронної пошти", і це все ще буде правдою. Замініть "модель актора" на "Спілкування послідовних процесів" (CSP), і це також буде "правдою", тому що CSP і системи акторських моделей можуть моделюватися одна іншою.

З огляду на модель актора, ви можете перейти та реалізувати її за допомогою мікросервісів, SOA або навіть електронної пошти, але це не означає, що вони знаходяться на одному рівні абстракції, щоб по-справжньому порівняти.

Крім того, акторська модель підкреслює буфери (їх можна розглядати як черги повідомлень у світі мікросервісів), тому деякі актори / мікросервіси можуть бути не готові, хоча по суті асинхронний зв'язок все ще можливий.

Іншими словами, порівняння з акторською моделлю може принести певні творчі уявлення на дуже високому рівні врахування, але в основному це яблука проти апельсинів.

Якщо метою є порівняння математичної моделі SOA / мікросервісів з моделлю Актора, то вона також не є тривіальною, оскільки: 1) немає узгодженої математичної моделі для SOA; 2) модель зазвичай включає мету. І моделювання SOA / мікросервісів, швидше за все, відрізняється від мети моделі актора. Один приклад спроби моделювання SOA тут .

Звичайно, можна створити систему моделей актора за допомогою мікропослуг та викликати кожну службу актором (див. Чітке визначення, що таке модель актора). Але це не означає, що між цими двома є взагалі значущі стосунки в загальному сенсі.


Я маю на увазі, що модель актора неможливо порівняти з мікросервісами на одному рівні. Дозвольте оновити свою відповідь
Роман Сусі

Я цього не кажу. Мікросервіси можуть реалізовувати режим актора, а також монтажні або програми C можуть. Але я не кажу, що вони завжди чи навіть часто. І так, Ерланг - це також приклад реалізації акторської моделі. Не впевнений, що я розумію ваш аргумент.
Роман Сусі

Вибачте, я вперше прочитав, що Актори - це математична модель і реалізує сервіси (та модель). Я не помічав, що вони реалізують Service Architecture. Отже, моє питання полягає в тому, як дві математичні моделі, "Актори" та SOA, порівнюють одна одну. Служба - це те, що має цикл повідомлень, який приймає запити та генерує відповіді. Це те, що робить Актор. У чому його відмінність від мікросервісу в SOA? Одним словом, коли я маю розподілену мережу служб, чи слід називати їх як мікросервіси чи дійові особи?
Маленький прибулець

Зауважте, що це веб-сайт із запитаннями та відповідями, а не форум чи новина. Такі параметри, як UPDATE та EDIT, не потрібні; кожна публікація на Stack Exchange вже має детальну історію редагування, яку може переглядати кожен.
Роберт Харві

1

Мікросервіси - це спосіб організації програмного забезпечення шляхом розподілу кожної проблемної області на власний розгорнутий артефакт (виконуваний файл, сценарій, JAR, WAR тощо). Це дає вам гнучкість, наприклад, дозволяючи масштабувати, розгортаючи більше примірників, де вони потрібні. Скажіть, що користувачі витрачають більше часу на перегляд вашого каталогу, ніж вони додають речі в кошик для покупок; один розгортається артефакт обробляє функції каталогу, інший обробляє функції кошика для покупок - ви можете запустити більше копій служб каталогу для обробки навантаження.

Це також ізолює їх від внутрішніх змін. Скажімо, ви переходите з реляційної бази даних до бази даних документів для зберігання даних про товар - шанси на те, що послуги вашої кошики не потрібно змінювати.

Модель актора - нижчий рівень, ніж артефакт, що розгортається, більше про типи об’єктів, з якими ви реалізували послугу. Продовжуючи вищенаведений приклад, у вашій системі кошики у вашій системі можуть бути представлені акторами, тому кошик кожного користувача є чітким актором, і повідомлення повідомляють йому додавати предмети, видаляти предмети, відповідати поточним вмістом, додавати доставку, перевірити і т. д. У цьому випадку у вас ще є мікросервіс, і він реалізований з акторською моделлю.


Коли ви сказали, що у вас може бути кілька примірників однієї служби, я почав думати, що це навпаки: сервіс - це тип, тоді як актори - це об’єкти :)
Маленький прибулець

Акторів не можна розгортати індивідуально? Ти впевнений? dotnet.github.io/orleans/Documentation/Grain-Versioning/…
Daffy Punk

Мені здається, є реалізація мудра, можливо, трохи конвергенція, що відбувається між двома концепціями ...
Daffy Punk

1

Я б сказав, що головна відмінність полягає в детальності.

Для акторської моделі це відносно тонкозерниста, оскільки актор прагне представляти еквівалент одного об'єкта в ООП.

Для мікропослуг це порівняно грубо, тому що одна мікросервіс може складатися з великої кількості суб'єктів чи об'єктів.

Зауважте, що вам не потрібно було б розтягувати свою фантазію занадто далеко, щоб сказати, що сучасний Інтернет - це те саме, що має ще більшу деталізацію ("макросервіси"); і що (наприклад) HTTP-сервер - це макро-сервіс, сервер бази даних - макро-сервіс, веб-браузер - макро-сервіс тощо.

Все приблизно однаково - поодинокі частини, які спілкуються. Змінюються лише розмір штук (а отже, і кількість штук).


Кожна програма java, незалежно від того, наскільки вона більша, - це один об'єкт. Об'єкти виготовлені з інших предметів і можуть зростати на невизначений термін більше. Я здогадуюсь, що uServices - це також види додатків, які виготовлені з інших об'єктів.
Маленький прибулець

0

Мікросервіси масштабують горизонтально, створюючи кілька реплік, кожна з яких здатна обслуговувати запити внаслідок послуги без громадянства . Вони стійкі до невдачі в силу свого бездержавного характеру.

Актори масштабують, переміщуючи їх до розділів з меншим навантаженням або більшою кількістю доступних ресурсів. Вони значущі . Вони стійкі до невдач, оскільки - залежно від акторських рамок - інший актор може динамічно закручуватися або гаряче резервне копіювання актора могло підтримуватися у будь-який час для вирішення проблеми з первинним актором.

Знову ж, мікросервіси теж можуть бути великими, але це суперечить принципам дизайну мікропослуг.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.