Prinsip CAP
Prinsip CAP, juga dikenal sebagai teorema CAP, mengacu pada konsistensi, ketersediaan, dan toleransi partisi dalam sistem terdistribusi. Prinsip CAP menyatakan bahwa ketiga elemen ini hanya dapat mencapai dua poin secara bersamaan.Tidak mungkin mengambil ketiganya secara bersamaan。
Inti dari prinsip CAP adalah AP, CP, atau AC, tetapi tidak ada CAP. Jika tidak ada salinan data dalam sistem terdistribusi, maka sistem harus memenuhi kondisi konsistensi yang kuat, karena hanya ada data yang unik, tidak akan ada inkonsistensi data, pada saat ini ada dua elemen C dan P, tetapi jika sistem memiliki kondisi partisi jaringan atau downtime, mau tidak mau akan menyebabkan beberapa data tidak dapat diakses, dan kondisi ketersediaan tidak dapat dipenuhi, yaitu sistem CP diperoleh dalam hal ini, tetapiCAP tidak dapat dipenuhi pada saat yang sama。
Resensi:
DotNetCore.CAP
CAP adalah event bus dan implementasi dalam sistem terdistribusi (SOA, MicroService).Konsistensi Akhir(Transaksi Terdistribusi) adalah pustaka C# sumber terbuka yang ringan, berkinerja tinggi, dan mudah digunakan.
Alamat GitHub:Login hyperlink terlihat.
Dotnet CAP memiliki semua fitur Event Bus, dan CAP menyediakan cara yang lebih efisien untuk menangani penerbitan/berlangganan di EventBus.
MediatR adalah kerangka kerja langganan dan penerbitan pesan dalam proses yang menyediakan metode Kirim untuk menerbitkan ke satu penangan dan metode Publish untuk menerbitkan ke beberapa penangan, yang sangat nyaman digunakan. Saat ini, .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 dan versi lainnya, yang dapat digunakan di seluruh platform.
ASP.NET Core menggunakan model perantara MediatR
https://www.itsvse.com/thread-9272-1-1.html Pratinjau arsitektur
CAP mendukung antrean pesan seperti Kafka, RabbitMQ, AzureServiceBus, AmazonSQS, dll., dan CAP menyediakan ekstensi untuk Sql Server, MySql, PostgreSQL, dan MongoDB sebagai penyimpanan database.
Artikel ini menggunakan RabbitMQ dan SQL Server sebagai antrean dan penyimpanan pesan.
Instal RabbitMQ
Untuk tutorial instalasi khusus, silakan merujuk ke:
Menambahkan akun juga dihilangkan, silakan merujuk ke:
Saya menambahkan akun pengujian dan membatasi Host Virtual sendiri, seperti yang ditunjukkan di bawah ini:
Jika tidak, kesalahannya akan menjadi sebagai berikut:
ACCESS_REFUSED - Login ditolak menggunakan mekanisme otentikasi PLAIN. Untuk detailnya, lihat file log broker.
Tidak ada titik akhir yang ditentukan yang dapat dijangkau
.NET Core mengintegrasikan CAP
Pertama, buat proyek ASP.NET Core baru yang merupakan pengirim dan penerima. Gunakan perintah nuget untuk menginstal paket seperti ini:
Saat startup, konfigurasikan metode layanan ConfigureServices sebagai berikut:
Anda dapat mengunjungi situs web /cap address untuk melihat dasbor seperti gambar di bawah ini:
Persistensi data: Batas akanPembuatan otomatis"Diterbitkan" dan "Diterima" adalah dua tabel database lokal
BUAT TABEL [tutup]. [Diterbitkan] ( [Id] [bigint] TIDAK NOL, [Versi] [nvarchar] (20) TIDAK NOL, [Nama] [nvarchar] (200) TIDAK NOL, [Konten] [nvarchar] (maks) NOL, [Percobaan ulang] [int] TIDAK NOL, [Ditambahkan] [tanggalwaktu2] (7) TIDAK NOL, [kedaluwarsa] [tanggalwaktu2] (7) BATAL, [NamaStatus] [nvarchar] (50) TIDAK NOL, KENDALA [PK_cap. Diterbitkan] KUNCI UTAMA DIKELOMPOKKAN
( [Id] ASC )DENGAN (PAD_INDEX = MATI, STATISTICS_NORECOMPUTE = MATI, IGNORE_DUP_KEY = MATI, ALLOW_ROW_LOCKS = AKTIF, ALLOW_PAGE_LOCKS = AKTIF) PADA [UTAMA] ) PADA [PRIMER] TEXTIMAGE_ON [PRIMER] PERGI BUAT TABEL [tutup]. [Diterima] ( [Id] [bigint] TIDAK NOL, [Versi] [nvarchar] (20) TIDAK NOL, [Nama] [nvarchar] (200) TIDAK NOL, [Kelompok] [nvarchar] (200) NOL, [Konten] [nvarchar] (maks) NOL, [Percobaan ulang] [int] TIDAK NOL, [Ditambahkan] [tanggalwaktu2] (7) TIDAK NOL, [kedaluwarsa] [tanggalwaktu2] (7) BATAL, [NamaStatus] [nvarchar] (50) TIDAK NOL, KENDALA [PK_cap. Diterima] KUNCI UTAMA DIKELOMPOKKAN
( [Id] ASC )DENGAN (PAD_INDEX = MATI, STATISTICS_NORECOMPUTE = MATI, IGNORE_DUP_KEY = MATI, ALLOW_ROW_LOCKS = AKTIF, ALLOW_PAGE_LOCKS = AKTIF) PADA [UTAMA] ) PADA [PRIMER] TEXTIMAGE_ON [PRIMER] PERGI
Metode pengontrol HomeController adalah sebagai berikut:
Ketika pengguna berhasil mendaftar, 3 pesan dengan topik berbeda akan dikirim, dan kemudian pelanggan akan mengkonsumsinya.
Saat CAP dimulai, CAP akan membuat grup konsumen default, jika beberapa konsumen dari grup konsumen yang sama menggunakan pesan topik yang sama,Hanya satu konsumen yang akan dieksekusi。 Sebaliknya,Jika semua konsumen berada dalam kelompok konsumen yang berbeda, semua konsumen dieksekusi。
Membuat proyek konsol .NET Core baru, sebagai pelanggan (konsumen), atau mereferensikan paket, dasbor dapat diabaikan.
Jika ada di Pengontrol, tambahkan [CapSubscribe("")] langsung untuk berlangganan pesan yang relevan.
Jika metode Anda tidak ada di Pengontrol, maka kelas langganan Anda perlu mewarisi ICapSubscribe, lalu menambahkan tag [CapSubscribe("")]. Kodenya adalah sebagai berikut:
Buka klien langganan dan coba akses http://localhost:28116/Home/UserRegister untuk mengirim pesan, efeknya adalah sebagai berikut:
Baik konsol maupun penerima pengontrol dipicu, seperti yang ditunjukkan pada gambar di bawah ini:
Coba lemparkan pengecualian secara manual dalam metode menerima pesan, kodenya adalah sebagai berikut:
CAP akan secara otomatis mencoba kembali metode,Jumlah percobaan ulang setelah kegagalan adalah 50 secara default, dan interval coba lagi setelah kegagalan adalah 60 detik secara default, seperti yang ditunjukkan pada gambar di bawah ini:
Kerangka kerja tidak dapat 100% yakin bahwa pesan hanya dieksekusi sekaliOleh karena itu, dalam beberapa skenario utama, sisi pesan memperhatikan deduplikasi bisnis dalam proses implementasi metode.
Terakhir, lampirkan kode sumber:
Wisatawan, jika Anda ingin melihat konten tersembunyi dari posting ini, silakan Jawab
|