Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 57382|Yanıt: 3

[ASP.NET] ASP.NET Core (beş) CAP dağıtık işlemlere dayanmaktadır

[Bağlantıyı kopyala]
2021-3-17 tarihinde yayınlandı 18:12:50 | | | |
CAP ilkeleri

CAP ilkesi, CAP teoremi olarak da bilinir ve dağıtık bir sistemdeki tutarlılık, kullanılabilirlik ve bölünme toleransını ifade eder. CAP ilkesi, bu üç unsurun aynı anda yalnızca iki puana ulaşabileceğini belirtir.Üçünü aynı anda almak imkansız

2PC &&&3PC dağıtık işlemler
https://www.itsvse.com/thread-9591-1-1.html

CAP ilkesinin özü ya AP, CP ya da AC'dir, ancak CAP yoktur. Dağıtık bir sistemde verinin kopyası yoksa, sistem güçlü tutarlılık koşulunu karşılamalıdır, çünkü sadece benzersiz bir veri vardır, veri tutarsızlığı olmaz, bu noktada C ve P elemanları mevcuttur, ancak sistemde ağ bölümleme koşulu veya kesinti varsa, kaçınılmaz olarak bazı verilerin erişilemeyeceğine yol açar ve erişilebilirlik koşulu karşılanamaz, yani bu durumda CP sistemi elde edilir, ancakCAP aynı anda tatmin edilemez

Eleştiri:

ASP.NET Core(4) filtresi birleşik ModelState model validasyonu
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) ActivatorUtilities kullanarak dinamik örnekler oluşturun
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Çekirdek (2) Uygulamayı kodla yeniden başlat
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) Redis önbellekleme kullanır
https://www.itsvse.com/thread-9393-1-1.html


DotNetCore.CAP

CAP, dağıtık bir sistemde (SOA, MicroService) bir olay veri yolu ve uygulamasıdır.Son Tutarlılık(Dağıtık İşlemler), hafif, yüksek performanslı ve kullanımı kolay olan açık kaynaklı bir C# kütüphanesidir.

GitHub adresi:Bağlantı girişi görünür.

Dotnet CAP, Event Bus'ın tüm özelliklerine sahiptir ve CAP, EventBus'ta yayın yapma/abonelik işlemlerini daha kolaylaştıran bir yol sunar.

MediatR, tek bir işleyiciye yayınlama için Send yöntemi ve birden fazla işleyiciye yayınlama için Publish yöntemi sunan süreç içi mesaj aboneliği ve yayınlama çerçevesidir; bu da kullanımı oldukça kullanışlıdır. Şu anda, .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 ve diğer sürümler, bu sürümler platformlar arasında kullanılabiliyor.

ASP.NET Core, MediatR aracı modelini kullanır
https://www.itsvse.com/thread-9272-1-1.html

Mimari önizleme



CAP, Kafka, RabbitMQ, AzureServiceBus, AmazonSQS gibi mesaj kuyruklarını destekler ve veritabanı depolama olarak Sql Server, MySql, PostgreSQL ve MongoDB için uzantılar sağlar.

Bu makale, mesaj kuyrukları ve depolama olarak RabbitMQ ve SQL Server'ı kullanır.

RabbitMQ'yu Yükle

Özel kurulum eğitimleri için lütfen şu adrese bakınız:

【Practical Combat】RabbitMQ kurulum eğitimi Windows altında
https://www.itsvse.com/thread-4630-1-1.html

【Practice】RabbitMQ web management plugin'i installs the web management plugin
https://www.itsvse.com/thread-4631-1-1.html
Hesap eklemek de göz ardı edilmiş, lütfen şu adrese bakınız:

【Pratik yap】rabbitMQ konsolu hesap bilgisi eklemek için
https://www.itsvse.com/thread-4655-1-1.html
Test hesabını ekledim ve Sanal Hostları sınırlandırdım, aşağıda gösterildiği gibi:



Aksi takdirde, hata şu şekilde olur:

ACCESS_REFUSED - Kimlik doğrulama mekanizması PLAIN'le giriş reddedildi. Detaylar için broker log dosyasına bakınız.

Belirtilen uç noktaların hiçbiri ulaşılamıyordu

.NET Core CAP entegre eder

İlk olarak, hem gönderici hem de alıcı olan yeni bir ASP.NET Core projesi oluşturun. Paketi şu şekilde kurmak için nuget komutunu kullanın:

Başlangıçta, ConfigureServices hizmet yöntemini aşağıdaki şekilde yapılandırın:

Gösterge panelini aşağıda gösterildiği gibi görmek için web sitesi/cap adresini ziyaret edebilirsiniz:



Veri kalıcılığı: CapOtomatik oluşturma"Yayınlanan" ve "Alınan" iki yerel veritabanı tablosudur

TABLO OLUŞTUR [cap]. [Yayınlandı] (
        [Id] [büyük ses] BOŞ DEĞIL,
        [Versiyon] [nvarchar] (20) BOŞ DEĞIL,
        [İsim] [nvarchar] (200) BOŞ DEĞİL,
        [İçerik] [nvarchar] (max) NULL,
        [Tekrar Atıyor] [int] BOŞ DEĞIL,
        [Eklendi] [datetime2] (7) GEÇERSIZ DEĞIL,
        [Süresi doluyor] [datetime2] (7) NULL,
        [DurumAdı] [nvarchar] (50) BOŞ DEĞİL,
KISITLAMA [PK_cap. Yayınlandı] BIRINCIL ANAHTAR KÜMELENMIŞ
(
        [Id] ASC
)(PAD_INDEX = KAPALI, STATISTICS_NORECOMPUTE = KAPALI, IGNORE_DUP_KEY = KAPALI, ALLOW_ROW_LOCKS = AÇIK, ALLOW_PAGE_LOCKS = AÇIK) ILE [PRIMERARY]
) ON [ILKOKUL] TEXTIMAGE_ON [ÖNCEK]
GIT
TABLO OLUŞTUR [cap]. [Alındı] (
        [Id] [büyük ses] BOŞ DEĞIL,
        [Versiyon] [nvarchar] (20) BOŞ DEĞIL,
        [İsim] [nvarchar] (200) BOŞ DEĞİL,
        [Grup] [nvarchar] (200) NULL,
        [İçerik] [nvarchar] (max) NULL,
        [Tekrar Atıyor] [int] BOŞ DEĞIL,
        [Eklendi] [datetime2] (7) GEÇERSIZ DEĞIL,
        [Süresi doluyor] [datetime2] (7) NULL,
        [DurumAdı] [nvarchar] (50) BOŞ DEĞİL,
KISITLAMA [PK_cap. Alındı] BIRINCIL ANAHTAR KÜMELENMIŞ
(
        [Id] ASC
)(PAD_INDEX = KAPALI, STATISTICS_NORECOMPUTE = KAPALI, IGNORE_DUP_KEY = KAPALI, ALLOW_ROW_LOCKS = AÇIK, ALLOW_PAGE_LOCKS = AÇIK) ILE [PRIMERARY]
) ON [ILKOKUL] TEXTIMAGE_ON [ÖNCEK]
GIT


HomeController kontrolcü yöntemi şöyledir:

Kullanıcı başarılı bir şekilde kayıt yaptırdığında, farklı konulara sahip 3 mesaj gönderilir ve abone bunları tüketir.

CAP başladığında, aynı tüketici grubunun birden fazla tüketicisi aynı konu mesajını tüketiyorsa, varsayılan bir tüketici grubu oluşturur,Sadece bir tüketici icra edilir。 Tam tersine,Tüketiciler farklı tüketici gruplarındaysa, tüm tüketiciler idam edilir

Yeni bir .NET Core konsol projesi oluşturmak, abone (tüketici) olarak veya pakete referans vermek için dashboard göz ardı edilebilir.

Eğer Kontrolör'deyse, ilgili mesajlara abone olmak için doğrudan [CapSubscribe("")] ekleyin.

Eğer yönteminiz Kontrolör'de değilse, abone olduğunuz sınıf ICapSubscribe'ı devralmalı ve ardından [CapSubscribe("")] etiketini eklemelidir.

Kod şöyledir:

Abonelik istemcisini açın ve mesaj göndermek için http://localhost:28116/Home/UserRegister erişmeye çalışın, etki şu şekildedir:



Hem konsol hem de kontrolcü alıcısı tetiklenir, aşağıdaki şekilde gösterilmiştir:



Alıcı mesaj yöntemine manuel olarak bir istisna eklemeyi deneyin, kod şöyledir:

CAP yöntemi otomatik olarak yeniden deneyecek,Başarısızlıktan sonra tekrar deneme sayısı varsayılan olarak 50'dir ve başarısızlıktan sonraki tekrar deneme aralığı varsayılan olarak 60 saniyedir, aşağıdaki şekilde gösterildiği gibi:



Çerçeve, mesajın sadece bir kez yürütüldüğünden %100 emin olamazBu nedenle, bazı önemli senaryolarda, mesaj tarafı, yöntem uygulama sürecinde iş deduplicationuna dikkat eder.

Arayüz idempotensi sorunları
https://www.itsvse.com/thread-6010-1-1.html

Son olarak, kaynak kodunu ekleyin:

Turistler, bu gönderinin gizli içeriğini görmek isterseniz lütfenYanıt






Önceki:Markdown sözdiziminin CSV çevrimiçi dönüşümü
Önümüzdeki:HttpClient POST'u doğrudan bayt bayt (gzip) sıkıştırma isteklerini göndermek için
2021-3-18 tarihinde yayınlandı 18:11:20 |
Gel ve bir bak, paylaştığın için teşekkürler
2021-9-22 tarihinde yayınlandı 20:42:18 |
Öğrenmeyi öğren...
2021-12-31 tarihinde 15:08:21 tarihinde yayınlandı |
Öğrenme
Çok iyi, çok güzel
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com