Baca dalam bahasa Inggris

Bagikan melalui


Microsoft Orleans

Orleans:

  • Adalah kerangka kerja lintas platform untuk membangun aplikasi terdistribusi yang kuat dan dapat diskalakan. Aplikasi terdistribusi didefinisikan sebagai aplikasi yang mencakup lebih dari satu proses, seringkali melampaui batas perangkat keras menggunakan komunikasi peer-to-peer.
  • Berkembang dari server lokal tunggal ke ribuan aplikasi terdistribusi dan berketersediaan tinggi di cloud.
  • Memperluas konsep yang akrab dan idiom C# ke lingkungan multi-server.
  • Dirancang untuk menskalakan secara elastis. Saat host bergabung dengan kluster, host dapat menerima aktivasi baru. Ketika host meninggalkan kluster, aktivasi sebelumnya pada host tersebut akan diaktifkan kembali pada host yang tersisa sesuai kebutuhan. Host dapat meninggalkan kluster karena penurunan skala atau kegagalan mesin. Kluster Orleans dapat diturunkan skalanya ke satu host. Properti yang sama yang memungkinkan skalabilitas elastis memungkinkan toleransi kesalahan. Kluster secara otomatis mendeteksi dan dengan cepat pulih dari kegagalan.
  • Menyederhanakan kompleksitas pengembangan aplikasi terdistribusi dengan menyediakan serangkaian pola dan API umum.
  • Memungkinkan pengembang yang terbiasa dengan pengembangan aplikasi server tunggal ke transisi untuk membangun layanan cloud-native yang tangguh dan dapat diskalakan dan aplikasi terdistribusi.
  • Kadang-kadang disebut "Terdistribusi .NET".
  • Adalah kerangka pilihan saat membangun aplikasi cloud-native.
  • Berjalan di mana saja .NET didukung. Ini termasuk hosting di Linux, Windows, dan macOS.
  • Aplikasi dapat disebarkan ke Kubernetes, komputer virtual, dan layanan PaaS seperti Azure App Service dan Azure Container Apps.

"Model Aktor"

Orleans didasarkan pada "model aktor". Model aktor berasal pada awal 1970-an dan sekarang menjadi komponen inti Orleans. Model aktor adalah model pemrograman di mana setiap aktor adalah objek ringan, bersamaan, tidak dapat diubah yang merangkum bagian dari status dan perilaku yang sesuai. Aktor berkomunikasi secara eksklusif satu sama lain menggunakan pesan asinkron. Orleans terutama menciptakan abstraksi Virtual Actor, di mana aktor ada secara abadi.

Catatan

Aktor adalah entitas murni logis yang selalu ada, secara virtual. Aktor tidak dapat dibuat atau dihancurkan secara eksplisit, dan keberadaan virtualnya tidak terpengaruh oleh kegagalan server yang menjalankannya. Karena aktor selalu ada, mereka selalu dapat diatasi.

Ini adalah pendekatan baru untuk membangun generasi baru aplikasi terdistribusi untuk era Cloud. Model pemrograman Orleans menjinakkan kompleksitas yang melekat pada aplikasi terdistribusi yang sangat paralel tanpa membatasi kemampuan atau memberlakukan batasan pada pengembang.

Untuk informasi selengkapnya, lihat Orleans: Virtual Actors melalui Microsoft Research. Aktor virtual direpresentasikan sebagai butir Orleans.

Apa itu Biji-bijian?

Biji-bijian adalah salah satu dari beberapa primitif Orleans. Dalam hal model aktor, biji-bijian adalah aktor virtual. Blok penyusun mendasar dalam aplikasi Orleans apa pun adalah butir. Butiran adalah entitas yang terdiri dari identitas, perilaku, dan keadaan yang ditentukan pengguna. Pertimbangkan representasi visual butir berikut:

Butiran terdiri dari identitas, perilaku, dan keadaan yang stabil.

Identitas butir adalah kunci yang ditentukan pengguna yang membuat biji-bijian selalu tersedia untuk pemanggilan. Biji-bijian dapat dipanggil oleh biji-bijian lain atau oleh sejumlah klien eksternal. Setiap butir adalah instans kelas yang mengimplementasikan satu atau beberapa antarmuka berikut:

Biji-bijian dapat memiliki data status volatil atau persisten yang dapat disimpan dalam sistem penyimpanan apa pun. Dengan demikian, butiran secara implisit mempartisi status aplikasi, memungkinkan skalabilitas otomatis dan menyederhanakan pemulihan dari kegagalan. Status grain disimpan dalam memori saat grain aktif, sehingga mengurangi latensi dan beban pada penyimpanan data.

Siklus hidup terkelola dari butir Orleans.

Instansiasi biji-bijian secara otomatis dilakukan sesuai permintaan oleh runtime Orleans. Biji-bijian yang tidak digunakan untuk sementara waktu secara otomatis dihapus dari memori untuk membebaskan sumber daya. Ini dimungkinkan karena identitas stabil mereka, yang memungkinkan pemanggilan biji-bijian apakah sudah dimuat ke dalam memori atau tidak. Ini juga memungkinkan pemulihan transparan dari kegagalan karena pemanggil tidak perlu tahu di server mana sebuah grain diinstansiasi pada titik waktu tertentu. Grain memiliki siklus hidup terkelola, dengan runtime Orleans bertanggung jawab untuk mengaktifkan/menonaktifkan, dan menempatkan/menempatkan grain sesuai keperluan. Ini memungkinkan pengembang untuk menulis kode seolah-olah semua biji-bijian selalu dalam memori.

Apa itu Silos?

Silo adalah contoh lain dari primitif Orleans. Silo menyimpan satu atau beberapa jenis gandum. Runtime Orleans adalah yang mengimplementasikan model pemrograman untuk aplikasi.

Biasanya, sekelompok silo berjalan sebagai kluster untuk skalabilitas dan toleransi kesalahan. Saat dijalankan sebagai kluster, silo berkoordinasi satu sama lain untuk mendistribusikan pekerjaan dan mendeteksi dan memulihkan dari kegagalan. Runtime memungkinkan biji-bijian yang dihosting dalam kluster untuk berkomunikasi satu sama lain seolah-olah mereka berada dalam satu proses. Untuk membantu memvisualisasikan hubungan antara kluster, silo, dan biji-bijian, pertimbangkan diagram berikut:

Kluster memiliki satu atau beberapa silo, dan silo memiliki satu atau beberapa biji-bijian.

Diagram sebelumnya menunjukkan hubungan antara kluster, silo, dan biji-bijian. Anda dapat memiliki sejumlah kluster, setiap kluster memiliki satu atau beberapa silo, dan setiap silo memiliki satu atau beberapa butir.

Selain model pemrograman inti, silo menyediakan biji-bijian dengan serangkaian layanan runtime seperti timer, pengingat (timer persisten), persistensi, transaksi, aliran, dan banyak lagi. Untuk informasi selengkapnya, lihat Apa yang bisa saya lakukan dengan Orleans?.

Aplikasi web dan klien eksternal lainnya memanggil biji-bijian di kluster menggunakan pustaka klien, yang secara otomatis mengelola komunikasi jaringan. Klien-klien juga dapat diko-host dalam proses yang sama dengan silo untuk kesederhanaan.

Apa yang bisa saya lakukan dengan Orleans?

Orleans adalah kerangka kerja untuk membangun aplikasi cloud-native dan harus dipertimbangkan setiap kali Anda membangun aplikasi .NET yang pada akhirnya perlu diskalakan. Ada tampaknya cara yang hampir tak terbatas untuk menggunakan Orleans, tetapi berikut ini adalah beberapa cara yang paling umum; Permainan, Perbankan, Aplikasi obrolan, Pelacakan GPS, Trading saham, Keranjang belanja, Aplikasi voting, dan banyak lagi. Orleans digunakan oleh Microsoft di Azure, Xbox, Skype, Halo, PlayFab, Gears of War, dan banyak layanan internal lainnya. Orleans memiliki banyak fitur yang memudahkan penggunaan untuk berbagai aplikasi.

Ketekunan

Orleans menyediakan model persistensi sederhana yang memastikan status tersedia sebelum memproses permintaan, dan konsistensinya dipertahankan. Biji-bijian dapat memiliki beberapa objek data persisten bernama. Misalnya, mungkin ada satu yang disebut "profil" untuk profil pengguna dan yang disebut "inventory" untuk inventori mereka. Status ini dapat disimpan dalam sistem penyimpanan apa pun.

Ketika sebuah objek sedang berjalan, statusnya disimpan dalam memori agar permintaan baca dapat dilayani tanpa mengakses penyimpanan. Ketika grain memperbarui statusnya, memanggil IStorage.WriteStateAsync memastikan bahwa penyimpanan pendukung diperbarui untuk daya tahan dan konsistensi.

Untuk informasi selengkapnya, lihat Ketahanan Butir.

Timer dan pengingat

Pengingat adalah mekanisme penjadwalan yang tahan lama untuk butiran. Mereka dapat digunakan untuk memastikan bahwa suatu tindakan diselesaikan pada waktu mendatang, bahkan jika elemen tersebut belum diaktifkan pada saat itu. Timer adalah mitra pengingat yang tidak tahan lama dan dapat digunakan untuk peristiwa frekuensi tinggi, yang tidak memerlukan keandalan.

Untuk informasi selengkapnya, lihat Pengatur waktu dan pengingat.

Penempatan butir fleksibel

Ketika biji-bijian diaktifkan di Orleans, runtime memutuskan server mana (silo) untuk mengaktifkan biji-bijian itu. Ini disebut penempatan biji-bijian.

Proses penempatan di Orleans sepenuhnya dapat dikonfigurasi. Pengembang dapat memilih dari serangkaian kebijakan penempatan siap pakai seperti acak, preferensi lokal, dan berbasis beban, atau logika kustom yang dapat dikonfigurasi. Ini memungkinkan fleksibilitas penuh dalam memutuskan di mana butir dibuat. Misalnya, biji-bijian dapat ditempatkan di server yang dekat dengan sumber daya yang perlu mereka operasikan terhadap atau biji-bijian lain yang berkomunikasi dengan mereka.

Untuk informasi selengkapnya, lihat penempatan biji-bijian .

Penerapan versi biji-bijian dan kluster heterogen

Meningkatkan sistem produksi dengan cara yang aman memperkirakan perubahan dapat menjadi tantangan, terutama dalam sistem stateful. Untuk memperhitungkan hal ini, antarmuka grain di Orleans dapat memiliki versi.

Kluster mempertahankan pemetaan implementasi biji-bijian mana yang tersedia di mana silo dalam kluster dan versi implementasi tersebut. Versi informasi ini digunakan oleh sistem runtime bersama dengan strategi penempatan untuk membuat keputusan penempatan saat merutekan panggilan ke grains. Selain itu, untuk memperbarui biji-bijian versi dengan aman, ini juga memungkinkan kluster heterogen, di mana silo yang berbeda memiliki set implementasi biji-bijian yang berbeda yang tersedia.

Untuk informasi selengkapnya, lihat Versi Grain.

Pekerja tanpa status

Pekerja tanpa status adalah biji-bijian yang ditandai secara khusus yang tidak memiliki status terkait dan dapat diaktifkan pada beberapa silo secara bersamaan. Ini memungkinkan peningkatan paralelisme untuk fungsi stateless.

Untuk informasi selengkapnya, lihat butir pekerja tanpa status.

Filter panggilan Grain

Filter panggilan grain adalah logika yang umum untuk banyak biji-bijian. Orleans mendukung filter untuk panggilan masuk dan keluar. Filter untuk otorisasi, pengelogan dan telemetri, dan penanganan kesalahan semuanya dianggap umum.

Konteks permintaan

Metadata dan informasi lainnya dapat diteruskan dengan serangkaian permintaan menggunakan konteks permintaan . Konteks permintaan dapat digunakan untuk menyimpan informasi pelacakan terdistribusi atau nilai lain yang ditentukan pengguna.

Transaksi ACID terdistribusi

Selain model persistensi sederhana yang dijelaskan di atas, biji-bijian dapat memiliki status transaksi . Beberapa biji-bijian dapat berpartisipasi dalam transaksi ACID bersama-sama terlepas dari di mana keadaan mereka pada akhirnya disimpan. Transaksi dalam Orleans didistribusikan dan didesentralisasi (tidak ada manajer transaksi pusat atau koordinator transaksi) dan memiliki isolasi yang dapat diserialisasikan.

Untuk informasi selengkapnya tentang transaksi, lihat transaksi .

Sungai

Fitur aliran membantu pengembang memproses serangkaian item data hampir secara real-time. aliran Orleansterkelola; aliran tidak perlu dibuat atau didaftarkan sebelum grain atau klien diterbitkan, atau berlangganan aliran. Ini memungkinkan pemisahan yang lebih besar antara produsen dan konsumen aliran dari satu sama lain serta dari infrastruktur.

Pemrosesan aliran dapat diandalkan: biji-bijian dapat menyimpan titik pemeriksaan (kursor) dan mengatur ulang ke titik pemeriksaan yang disimpan selama aktivasi atau pada waktu berikutnya. Stream mendukung pengiriman pesan secara batch kepada konsumen untuk meningkatkan efisiensi dan kinerja pemulihan.

Aliran didukung oleh layanan antrean seperti Azure Event Hubs, Amazon Kinesis, dan lainnya.

Sejumlah aliran dapat di-multipleks ke dalam beberapa antrean yang lebih kecil, dan tanggung jawab untuk memproses antrean ini dibagi secara merata di seluruh kluster.

Pengantar video Orleans

Jika Anda tertarik dengan pengenalan video Orleans, lihat video berikut:

Langkah berikutnya