Keduanya tampak seperti MPI paralel yang mengomunikasikan jaringan proses. Saya mengidentifikasi aktor dengan layanan. Apakah aktor lebih dinamis (Anda dapat membuat mereka dan membunuh sebagai bernafas sedangkan jaringan layanan lebih statis) atau apa?
terminology
microservices
actor-model
Alien kecil
sumber
sumber
Jawaban:
Model aktor - adalah model matematika untuk perhitungan bersamaan, dan layanan mikro - implementasi arsitektur berorientasi layanan. Persamaannya cukup kebetulan.
Tentunya mungkin untuk membangun layanan microser berdasarkan pada beberapa model aktor, dan memodelkan beberapa arsitektur layanan microser dengan model aktor, tetapi tidak berarti ini setara. Ganti "sistem microservice" dengan "sistem email", dan itu akan tetap benar. Ganti "model aktor" dengan "Mengkomunikasikan proses sekuensial" (CSP), dan itu juga akan "benar", karena CSP dan sistem model aktor dapat dimodelkan satu sama lain.
Model aktor yang diberikan Anda dapat pergi dan menerapkannya menggunakan layanan microser, atau SOA, atau bahkan email, tetapi itu tidak berarti mereka berada pada tingkat abstraksi yang sama untuk benar-benar membandingkan.
Juga, model aktor menekankan buffer (dapat dianggap sebagai antrian pesan di dunia layanan microser), sehingga beberapa aktor / layanan mikro dapat tidak siap sementara komunikasi asinkron secara inheren masih dimungkinkan.
Dengan kata lain, perbandingan dengan model aktor dapat membawa beberapa wawasan kreatif pada tingkat pertimbangan yang sangat tinggi, tetapi sebagian besar itu adalah apel vs jeruk.
Jika tujuannya adalah untuk membandingkan model matematika SOA / microservices dengan model Aktor, maka itu juga tidak sepele, karena: 1) tidak ada model matematika yang disepakati untuk SOA, 2) model biasanya mencakup tujuannya. Dan pemodelan SOA / microservices sangat mungkin berbeda dari tujuan model aktor. Salah satu contoh upaya untuk memodelkan SOA di sini .
Tentu saja, seseorang dapat membuat sistem model aktor dengan layanan mikro dan menyebut setiap layanan sebagai aktor (lihat definisi ketat tentang apa model aktor). Namun ini tidak berarti ada hubungan yang bermakna antara keduanya secara umum.
sumber
Layanan Microsoft adalah cara untuk mengatur perangkat lunak dengan memisahkan setiap area yang menjadi perhatian ke dalam artifak yang dapat digunakan sendiri (dapat dieksekusi, skrip, JAR, PERANG, dll). Ini memberi Anda fleksibilitas, misalnya dengan memungkinkan Anda meningkatkan skala dengan menggunakan lebih banyak instance saat dibutuhkan. Katakanlah pengguna menghabiskan lebih banyak waktu melihat katalog Anda daripada menambahkan barang ke keranjang belanja; satu artefak yang dapat digunakan menangani fungsi katalog, yang lain menangani fungsi keranjang belanja - Anda dapat menjalankan lebih banyak salinan layanan katalog untuk menangani pemuatan.
Itu juga mengisolasi mereka dari perubahan internal. Katakanlah Anda pindah dari database relasional ke database dokumen untuk menyimpan data produk - kemungkinan besar layanan keranjang belanja Anda tidak perlu berubah.
Model aktor adalah level yang lebih rendah dari artifak yang dapat digunakan, lebih banyak tentang jenis objek yang telah Anda gunakan untuk mengimplementasikan layanan. Melanjutkan dengan contoh di atas, Anda mungkin memiliki keranjang belanja di sistem Anda diwakili oleh aktor, sehingga setiap keranjang pengguna adalah aktor yang berbeda, dan pesan mengatakannya untuk menambahkan item, menghapus item, merespons dengan konten saat ini, menambahkan pengiriman, memeriksa , dll. Dalam hal ini, Anda masih memiliki layanan mikro, dan ini diterapkan dengan model aktor.
sumber
Saya akan mengatakan bahwa perbedaan utama adalah perbedaan.
Untuk model aktor itu relatif berbutir halus, di mana seorang aktor cenderung mewakili setara dengan satu objek di OOP.
Untuk layanan mikro relatif berbutir kasar, di mana layanan mikro tunggal dapat terdiri dari sejumlah besar aktor atau objek.
Perhatikan bahwa Anda tidak perlu memperluas imajinasi Anda terlalu jauh untuk mengatakan bahwa web modern adalah hal yang sama pada granularitas yang lebih besar ("layanan makro"); dan bahwa (mis.) server HTTP adalah layanan makro, server database adalah layanan makro, browser web adalah layanan makro, dll.
Semuanya kira-kira sama - potongan terisolasi yang berkomunikasi. Hanya ukuran keping (dan karenanya jumlah keping) yang berubah.
sumber
Microservices skala horisontal dengan menciptakan beberapa replika, yang masing-masing mampu melayani permintaan karena stateless sifat layanan. Mereka tahan terhadap kegagalan berdasarkan sifat tanpa kewarganegaraan mereka.
Aktor skala dengan memindahkannya ke partisi dengan beban lebih sedikit atau lebih banyak sumber daya yang tersedia. Mereka adalah negara . Mereka tahan terhadap kegagalan karena - tergantung pada kerangka aktor - aktor lain dapat diputar secara dinamis atau cadangan panas aktor dapat dipertahankan setiap saat untuk menghadapi kegagalan aktor utama.
Sekali lagi, layanan microser bisa menjadi stateful juga, tetapi bertentangan dengan prinsip-prinsip desain dari layanan microser.
sumber