Bagikan melalui


Microsoft Orleans

Orleans adalah kerangka kerja lintas platform yang dirancang untuk menyederhanakan pembuatan aplikasi terdistribusi. Baik penskalaan dari satu server ke ribuan aplikasi berbasis cloud, Orleans menyediakan alat untuk membantu mengelola kompleksitas sistem terdistribusi. Ini memperluas konsep C# yang akrab ke lingkungan multi-server, memungkinkan pengembang untuk fokus pada logika aplikasi.

Berikut adalah penawarannya Orleans :

  • Ini dirancang untuk menskalakan secara elastis. Tambahkan atau hapus server, dan Orleans disesuaikan agar tetap mempertahankan toleransi kesalahan dan skalabilitas.
  • Ini menyederhanakan pengembangan aplikasi terdistribusi dengan serangkaian pola dan API umum, membuatnya dapat diakses bahkan bagi mereka yang baru menggunakan sistem terdistribusi.
  • Ini cloud-native dan berjalan pada platform di mana .NET didukung—Linux, Windows, macOS, dan banyak lagi.
  • Ini mendukung opsi penyebaran modern seperti Kubernetes, Azure App Service, dan Azure Container Apps.

Orleans sering disebut sebagai "Terdistribusi .NET" karena fokusnya pada membangun layanan cloud-native yang tangguh dan dapat diskalakan. Mari kita jelajahi model aktor berikutnya.

Model Aktor dalam Pemrograman

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

Nota

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.

Pendekatan baru ini membantu 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.

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, membuat biji-bijian selalu tersedia untuk pemanggilan. Biji-bijian lain atau sejumlah klien eksternal dapat memanggil biji-bijian. Setiap butir adalah instans kelas yang mengimplementasikan satu atau beberapa antarmuka berikut:

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

Siklus hidup terkelola dari butir Orleans.

Orleans runtime secara otomatis menginstansiasi grain sesuai permintaan. Biji-bijian yang tidak digunakan untuk sementara waktu secara otomatis dihapus dari memori untuk membebaskan sumber daya. Penghapusan ini dimungkinkan karena identitas stabilnya, memungkinkan pemanggilan biji-bijian apakah dimuat ke dalam memori atau tidak. Ini juga memungkinkan pemulihan yang transparan dari kegagalan karena pemanggil tidak perlu tahu di server mana grain diinstansiasi pada titik mana pun. Biji-bijian memiliki siklus hidup terkelola, dengan Orleans runtime yang bertanggung jawab untuk mengaktifkan/menonaktifkan dan menempatkan/menemukan butir sesuai kebutuhan. Ini memungkinkan penulisan kode seolah-olah semua biji-bijian selalu dalam memori.

Apa itu silo?

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

Biasanya, sekelompok silo berjalan sebagai kluster untuk skalabilitas dan toleransi kesalahan. Saat dijalankan sebagai kluster, silo berkoordinasi untuk mendistribusikan pekerjaan dan mendeteksi dan memulihkan dari kegagalan. Runtime memungkinkan biji-bijian yang dihosting di kluster untuk berkomunikasi 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. Mungkin ada sejumlah kluster, setiap kluster memiliki satu atau beberapa silo, dan setiap silo memiliki satu atau beberapa biji-bijian.

Selain model pemrograman inti, silo menyediakan grains dengan layanan runtime seperti timer, pengingat (timer persisten), persistensi, transaksi, stream, dan banyak lagi. Untuk informasi selengkapnya, lihat Apa yang bisa dilakukan 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 dapat dilakukan dengan Orleans?

Orleans adalah kerangka kerja untuk membangun aplikasi cloud-native dan harus dipertimbangkan saat membangun aplikasi .NET yang pada akhirnya perlu diskalakan. Tampaknya ada cara tanpa akhir untuk menggunakan Orleans, tetapi berikut ini adalah beberapa yang paling umum: Game, Perbankan, aplikasi Obrolan, pelacakan GPS, Perdagangan saham, Kelir belanja, aplikasi Pemungutan Suara, dan banyak lagi. Microsoft menggunakan Orleans 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 ketersediaan status sebelum memproses permintaan dan mempertahankan konsistensi. Biji-bijian dapat memiliki beberapa objek data persisten bernama. Misalnya, seseorang mungkin disebut "profil" untuk profil pengguna dan "inventaris" untuk inventori mereka. Status ini dapat disimpan dalam sistem penyimpanan apa pun.

Ketika sebuah proses berjalan, Orleans menjaga status dalam memori sembari melayani permintaan baca tanpa mengakses penyimpanan. Ketika grain memperbarui statusnya, memanggil IStorage.WriteStateAsync memastikan pembaruan penyimpanan cadangan untuk daya tahan dan konsistensi.

Untuk informasi selengkapnya, lihat Ketahanan Butir.

Timer dan pengingat

Pengingat adalah mekanisme penjadwalan yang tahan lama untuk butiran. Gunakan untuk memastikan bahwa suatu tindakan dapat diselesaikan pada titik waktu mendatang, bahkan jika elemen terkait saat ini tidak diaktifkan. 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 mengaktifkannya. Proses ini disebut penempatan biji-bijian.

Proses penempatan di Orleans sepenuhnya dapat dikonfigurasi. Pilih dari kebijakan penempatan siap pakai seperti acak, preferensi lokal, dan berbasis beban, atau konfigurasikan logika kustom. Ini memungkinkan fleksibilitas penuh dalam memutuskan di mana butir dibuat. Misalnya, menempatkan biji-bijian di server yang dekat dengan sumber daya yang mereka butuhkan untuk beroperasi 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 aman dan memperhitungkan perubahan dapat menjadi tantangan, terutama dalam sistem yang berstatus. Untuk memperhitungkan hal ini, antarmuka biji-bijian dapat di-versi di Orleans.

Kluster mempertahankan pemetaan implementasi grain mana yang tersedia pada silo mana dan versinya. Runtime menggunakan informasi versi ini dengan strategi penempatan untuk membuat keputusan penempatan saat merutekan panggilan ke biji-bijian. Selain memperbarui biji-bijian versi dengan aman, ini juga memungkinkan kluster heterogen di mana silo yang berbeda memiliki set implementasi biji-bijian yang tersedia yang berbeda.

Untuk informasi selengkapnya, lihat Versi Grain.

Pekerja tanpa status

Pekerja tanpa status adalah biji-bijian yang ditandai secara khusus tanpa status terkait yang 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 biji-bijian adalah logika yang umum untuk banyak biji-bijian. Orleans mendukung filter untuk panggilan masuk dan keluar. Penggunaan umum termasuk otorisasi, pengelogan dan telemetri, dan penanganan kesalahan.

Konteks permintaan

Berikan metadata dan informasi lainnya dengan serangkaian permintaan menggunakan konteks permintaan. Gunakan konteks permintaan untuk menyimpan informasi pelacakan terdistribusi atau nilai lain yang ditentukan.

Transaksi ACID terdistribusi

Selain model persistensi sederhana yang dijelaskan di atas, biji-bijian dapat memiliki status transaksi. Berbagai butir dapat berpartisipasi dalam transaksi ACID bersama, tanpa memandang di mana keadaan mereka pada akhirnya disimpan. Transaksi dalam didistribusikan dan didesentralisasi (berarti tidak ada manajer transaksi atau koordinator pusat) dan memiliki Orleans.

Untuk informasi selengkapnya tentang transaksi, lihat transaksi .

Sungai

Aliran membantu memproses serangkaian item data dalam hampir waktu nyata. Orleans aliran dikelola; aliran tidak perlu dibuat atau didaftarkan sebelum dipublikasikan atau dilanggani oleh grain atau klien. Ini memungkinkan pemisahan yang lebih besar antara produsen dan konsumen aliran dari satu sama lain dan juga dari infrastruktur.

Pemrosesan aliran dapat diandalkan: biji-bijian dapat menyimpan titik pemeriksaan (kursor) dan mengatur ulang ke titik pemeriksaan yang disimpan selama aktivasi atau 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.

Jumlah aliran arbitrer dapat dimultipleks ke sejumlah kecil antrean, dan tanggung jawab untuk memproses antrean ini dibagi secara merata di seluruh kluster tersebut.

Pengantar video Orleans

Untuk pengantar tentang Orleans, tonton video berikut ini:

Langkah berikutnya