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.
  • Menskalakan dari satu server lokal ke ribuan aplikasi terdistribusi dan sangat tersedia 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 diskalakan 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 bahwa .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 dari Orleans. Model aktor adalah model pemrograman di mana setiap aktor adalah objek ringan, bersamaan, tidak dapat diubah yang merangkum sepotong status dan perilaku yang sesuai. Aktor berkomunikasi secara eksklusif satu sama lain menggunakan pesan asinkron. Orleans terutama menciptakan abstraksi Aktor Virtual, 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 Orleans pemrograman menjinakkan kompleksitas yang melekat pada aplikasi terdistribusi yang sangat paralel tanpa membatasi kemampuan atau memberlakukan batasan pada pengembang.

Untuk informasi selengkapnya, lihat Orleans: Aktor Virtual melalui Microsoft Research. Aktor virtual direpresentasikan sebagai Orleans biji-bijian.

Apa yang dimaksud dengan Grains?

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

Biji-bijian terdiri dari identitas, perilaku, dan status 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 biji-bijian disimpan dalam memori saat biji-bijian aktif, yang mengarah ke latensi yang lebih rendah dan lebih sedikit beban pada penyimpanan data.

Siklus hidup terkelola dari biji-bijian Orleans .

Instansiasi biji-bijian secara otomatis dilakukan sesuai permintaan oleh Orleans runtime. Butir yang tidak digunakan untuk sementara waktu secara otomatis dihapus dari memori untuk mengosongkan 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 butir dibuat kapan saja. Biji-bijian memiliki siklus hidup terkelola, dengan Orleans runtime yang bertanggung jawab untuk mengaktifkan/menonaktifkan, dan menempatkan/menemukan biji-bijian sesuai kebutuhan. Ini memungkinkan pengembang untuk menulis kode seolah-olah semua biji-bijian selalu dalam memori.

Apa itu Silos?

Silo adalah contoh lain dari Orleans primitif. Silo menghosting satu atau beberapa biji-bijian. Orleans Runtime adalah apa 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 juga dapat dihosting bersama 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. Tampaknya ada cara yang tidak ada habisnya untuk menggunakan Orleans, tetapi berikut ini adalah beberapa cara yang paling umum; Game, Perbankan, Aplikasi obrolan, pelacakan GPS, Trading saham, Kelir 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.

Persistensi

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.

Saat biji-bijian berjalan, status disimpan dalam memori sehingga permintaan baca dapat dilayani tanpa mengakses penyimpanan. Ketika butir memperbarui statusnya, panggilan IStorage.WriteStateAsync memastikan bahwa penyimpanan backing diperbarui untuk durabilitas dan konsistensi.

Untuk informasi selengkapnya, lihat Persistensi butir.

Timer dan pengingat

Pengingat adalah mekanisme penjadwalan yang tahan lama untuk butiran. Mereka dapat digunakan untuk memastikan bahwa beberapa tindakan selesai pada titik mendatang meskipun butiran saat ini tidak 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 Timer 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 sepenuhnya dapat dikonfigurasi Orleans . Pengembang dapat memilih dari serangkaian kebijakan penempatan di luar kotak seperti logika acak, lokal, dan berbasis beban, atau kustom 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 grain.

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 biji-bijian di dapat diberi Orleans versi.

Kluster mempertahankan pemetaan implementasi biji-bijian mana yang tersedia di mana silo dalam kluster dan versi implementasi tersebut. Versi informasi ini digunakan oleh runtime bersama dengan strategi penempatan untuk membuat keputusan penempatan saat merutekan panggilan ke biji-bijian. 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 Penerapan 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 biji-bijian pekerja tanpa status.

Filter panggilan grain

Filter panggilan biji-bijian 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 didistribusikan dan didesentralisasi (tidak ada manajer transaksi pusat atau koordinator transaksi) dan memiliki isolasi yang dapat diserialisasikanOrleans.

Untuk informasi selengkapnya tentang transaksi, lihat Transaksi.

Aliran

Aliran membantu pengembang memproses serangkaian item data mendekati real-time. Orleansaliran dikelola; aliran tidak perlu dibuat atau didaftarkan sebelum grain atau klien diterbitkan, atau berlangganan aliran. Ini memungkinkan pemisahan produsen aliran dan konsumen yang lebih besar dari satu sama lain dan 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. Aliran mendukung pengiriman batch pesan kepada konsumen untuk meningkatkan efisiensi dan performa pemulihan.

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

Jumlah aliran arbitrer dapat dikalikan ke sejumlah kecil antrean dan tanggung jawab untuk memproses antrean ini seimbang secara merata di seluruh kluster.

Pengantar Orleans video

Jika Anda tertarik dengan pengantar Orleansvideo , lihat video berikut:

Langkah berikutnya