---------------------------------------------------------------------------------------并發(fā)性課程:
1.多個線程同時訪問相同資源,將產生并發(fā)問題;single(單個)(缺?。?Reentrant(可重入);
2.wcf缺省會保護并發(fā)訪問;
3.在實體模型中,Perssion,single中特有用;
4.在實現(xiàn)接口的服務上添加標記;[ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Single)]
------single:對于每個服務實例,只有一個請求處理,處理時會加鎖,若還有其他請求,就會進行排隊
-single與percal:不會產生并發(fā),也不會對吞吐量(單位時間內wcf處理請求數(shù)量)產生影響;同一時刻處理多個請求,因為服務實例與請求為1對1,不存在并發(fā);
single與Persession:對于Persession服務,保護服務實例不會受多線程客戶端影響;
single,模式會對單一客戶端吞吐量產生影響,將請求進行排隊;同一時刻只能處理一個請求;多個客戶端不會產生并發(fā);
--single與singleton單件:
將多客戶端的請求進行排隊,影響吞吐量;
------Reentrant(可重入的)
1.和single一樣為單線程;同一時刻處理一個請求;可重入(客戶端與服務端來回調用)的單線程模式;
第一請求處理服務時,可以中途離開,當在繼續(xù)處理時,需要排隊等待,接著在處理;
主要應用在有回調的場景中;
Reentrant與percall:不會產生死鎖,但并發(fā)模型為single的話,一旦出現(xiàn)回調會產生死鎖;
所以,有回調的話,不要使用single并發(fā)模型,英愛使用Reentrant并發(fā)模型;
reentrant與PerSession和singletons:
一個請求完成后接著回調,這時,又進來一個請求,所以,回調完之后的第一個請求,
被當在外面,等第二個完成后,回調后的請求才能進行;
-------Multiple:不在是單線程模式,可以多個線程請求服務實例;增加吞吐量,
請求時,不會加鎖;所以不會進行安排隊列;要求開發(fā)者自己利用多線程機制來保護資源;
.net多線程包括:Monitor,Mutex,Semaphore,ReadWriteLock;
-------限流模式:
1.是所有服務不因一個服務的資源破壞而侵占其他資源導致其他服務受影響;
指定吞吐量控制設置:
MaxConcurrentCalls:限制發(fā)送請求;缺省為16;
MaxConCurrentInstances:限制服務實例的數(shù)量,缺省為int.MaxValue;
MaxConcurrentSessions:限制會話的數(shù)量;
--配置項配置:
<behaviors>
????? <serviceBehaviors>
??????? <behavior name="AllenBehavior">
???<serviceThrottling maxConcurrentCalls="" maxConcurrentInstances="" maxConcurrentSessions=""/>
--編程設置:
ServiceThrottle throttle=host.Description.Behaviors.Find<ServiceThrottle>();
if(throttle!=null)
{
?? throttle.MaxConcurrentCalls=30;
}
--限流與PerCall,MaxConcurrentCalls和MaxConCurrentInstances越大吞吐量越大;
--限流與PerSession:MaxConcurrentCalls控制吞吐量,MaxConCurrentInstances應大于或等于MaxConcurrentSessions;
--限流與Singleton:PerSession:MaxConcurrentCalls控制吞吐量,實例只有一個所以MaxConCurrentInstances的設置沒意義;
----------負載平衡和故障轉移;
1.負載平衡與PerCall:隨記加載;
2.負載平衡與PerSession:跟著session走
3.負載平衡與傳輸會話,tcp,跟著Socket走;
4.負載平衡與安全會話,
我們要根據(jù)性能計數(shù)器測量總體的吞吐量并進行限流設置;
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
