Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 57382|Jawab: 3

[ASP.NET] ASP.NET Core (lima) didasarkan pada transaksi distribusi CAP

[Salin tautan]
Dipaparkan pada 2021-3-17 18:12:50 | | | |
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

2PC &&&3PC transaksi terdistribusi
https://www.itsvse.com/thread-9591-1-1.html

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:

ASP.NET Core(4) memfilter validasi model ModelState terpadu
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Inti (iii) Membuat instans secara dinamis menggunakan ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Inti (2) Mulai ulang aplikasi dengan kode
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) menggunakan caching Redis
https://www.itsvse.com/thread-9393-1-1.html


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:

【Pertempuran Praktis】 Tutorial instalasi RabbitMQ di bawah Windows
https://www.itsvse.com/thread-4630-1-1.html

【Latihan】RabbitMQ menginstal plugin manajemen web
https://www.itsvse.com/thread-4631-1-1.html
Menambahkan akun juga dihilangkan, silakan merujuk ke:

【Latihan】Konsol rabbitMQ untuk menambahkan informasi akun
https://www.itsvse.com/thread-4655-1-1.html
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.

Masalah idempotensi antarmuka
https://www.itsvse.com/thread-6010-1-1.html

Terakhir, lampirkan kode sumber:

Wisatawan, jika Anda ingin melihat konten tersembunyi dari posting ini, silakanJawab






Mantan:Konversi online CSV sintaks Markdown
Depan:HttpClient POST langsung untuk mengirim permintaan kompresi byte byte (gzip)
Dipaparkan pada 2021-3-18 18:11:20 |
Datang dan lihat, terima kasih telah berbagi
Dipaparkan pada 2021-9-22 20:42:18 |
Belajar untuk belajar...
Dipaparkan pada 2021-12-31 15:08:21 |
Pembelajaran
Sangat bagus, sangat bagus
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com