WCF之并发,吞吐量和限流
- 并发
- Single重入模式.对于每一个服务实例,同一时刻只能处理一个请求,其他对该实例的请求被排队.
- PerCall,每一线程会分配一个新的服务实例上。不会有并发性问题。不影响吞吐量.
- PerSession,保护服务实例不会受到多线程客户端的影响.多客户端可以并发访问,无并发性问题。减少单一客户端吞吐量.
- Singleton, 实例不受任何并发访问影响。多线程和多客户端都无法并发访问。吞吐量最小.
- Retrant重入模式.
- 客户端可以对同一服务实例,可以进行第2次或者多次的请求进入。
- 单线程,用于回调不是One_way的,当服务退出时释放锁以发起回调.
- PerCall: 在SingleMode中。调用回调时,当回调完成返回到Service时,由于不可重入,被挡在外面等待。WCF会在该情况时。异常。
- Reentrant:回调的调用可以进入Service的实例中。不会有死锁.
- PerSession:允许多线程客户端并发访问.单件:允许任何线程调用服务实例.

- Multip重入模式
- 可以增大吞吐量,当服务实例进行处理时,系统不会自动加锁,对临界资源手动处理.
- 分别对Cache/Session共享状态/服务实例进行加锁.

- Single重入模式.对于每一个服务实例,同一时刻只能处理一个请求,其他对该实例的请求被排队.
- 限流
- 通过ServiceThrottle进行配置.每一个Session对应一个实例,但不是每一个实例对应一个Session,所以Session个数<实例数量.
- 跨服务主机的负载平衡能力对可扩展性有影响.会话影响负载平衡:党没有会话时,请求可以被分配到任何主机上,对于传输层会话,需要Sticky IP.对于其他的会话,需要Sticky会话.
- WCF对于Stream操作规定了一些限制.
- 1)只有部分绑定支持,而且在使用Stream操作时,不能使用Reliable Messaging.
- 2)对于Stream对象本身,FileStream是不可序列化的,当我们把一个FileStream对象作为Stream类型返回给客户端,在客户端,我们仅仅能够使用Stream类型,而不能转化为原本的FileStream类型.而且Stream.Length的调用会抛出异常,原因是不支持Length属性的序列化.
- 3)必须修改TransferMode的值.
- 4)Stream对象的大小不能超过MaxReceivedMessageSize的设置,该属性的最大值为Int.MaxValue.
- 5)涉及Stream的操作的返回值,参数,ref,out参数中只能有一个是Stream对象.
- 6)Stream不支持Session,按照Session的配置得到的结果仍然是PerCall.另外,Stream对象可能较大,所以应该增大绑定的SendTimeout.
WCF之并发,吞吐量和限流的更多相关文章
- [WCF编程]9.性能与限流
一.性能概述 WCF服务的性能取决于很多因素.出了CPU.RAM和网络性能等常见的因素外,实例上下文模式.并发模式.数据契约的设计或使用的绑定等与WCF有关的因素都起着重要的作用. 实例上下文模式用来 ...
- dubbo是如何控制并发数和限流的?
ExecuteLimitFilter ExecuteLimitFilter ,在服务提供者,通过 的 "executes" 统一配置项开启: 表示每服务的每方法最大可并行执行请求数 ...
- 基于Redis的限流系统的设计
本文讲述基于Redis的限流系统的设计,主要会谈及限流系统中限流策略这个功能的设计:在实现方面,算法使用的是令牌桶算法来,访问Redis使用lua脚本. 1.概念 In computer netw ...
- 基于Redis实现分布式应用限流--转
原文地址:https://my.oschina.net/giegie/blog/1525931 摘要: 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限 ...
- Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵动态限流规则
Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵动态限流规则 前面几篇文章较为详细的介绍了Sentinel的使用姿势,还没看过的小伙伴可以访问以下链接查看: &l ...
- Spring Cloud Alibaba:Sentinel实现熔断与限流
一.什么是Sentinel Sentinel,中文翻译为哨兵,是为微服务提供流量控制.熔断降级的功能,它和Hystrix提供的功能一样,可以有效的解决微服务调用产生的“雪崩效应”,为微服务系统提供了稳 ...
- WCF学习笔记之并发与限流
最近一直在学习WCF相关知识:本文章将针对并发与限流知识进行一个梳理,由于很多理论的知识所以做一个简单的记录,为今后回顾做一个记录: 一:并发知识 WCF将服务实例封装在一个称为实例上下文的对象中,并 ...
- wcf利用IDispatchMessageInspector实现接口监控日志记录和并发限流
一般对于提供出来的接口,虽然知道在哪些业务场景下才会被调用,但是不知道什么时候被调用.调用的频率.接口性能,当出现问题的时候也不容易重现请求:为了追踪这些内容就需要把每次接口的调用信息给完整的记录下来 ...
- 快速入门系列--WCF--06并发限流、可靠会话和队列服务
这部分将介绍一些相对深入的知识点,包括通过并发限流来保证服务的可用性,通过可靠会话机制保证会话信息的可靠性,通过队列服务来解耦客户端和服务端,提高系统的可服务数量并可以起到削峰的作用,最后还会对之前的 ...
随机推荐
- Memcached概述
Memcached Memcached是一套分布式的内存对象缓存系统,使用C语言编写,作为数据库的前端cache,缓存数据库查询结果能够减轻数据库负载. 类似一张巨大的hash表,缓存的对象以key- ...
- Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理--转载
原文地址:http://blog.sina.com.cn/s/blog_49be4d570100yvv1.html 1.下载mongodb,可以通过下面2中方法安装. (1)官网下载yum源后直接安装 ...
- Linux服务器集群系统(二)--转
引用地址:http://www.linuxvirtualserver.org/zh/lvs2.html LVS集群的体系结构 章文嵩 (wensong@linux-vs.org) 2002 年 4 月 ...
- c# checked unchecked 关键字
checked 和 unchecked关键字用来限定检查或者不检查数学运算溢出的:如果使用了checked发生数学运算溢出时会抛出OverflowException:如果使用了unchecked则不会 ...
- 探索多线程使用同一个数据库connection的后果
在项目中看到有用到数据库的连接池,心里就思考着为什么需要数据库连接池,只用一个连接会造成什么影响?(只用一个connection)? 1 猜想:jdbc的事务是基于connection的,如果多线程 ...
- 修改avd路径
1.比如你要把AVD放在D盘AndroidAVD下面,则预先在D盘下建立一个文件夹 AndroidAVD.必须的.不然设置了环境变量也没有用,因为模拟器不会自动创建该文件夹. 2.在桌面右击“我的电脑 ...
- java中的容器问题
小小的总结一下java中的容器问题. 一.三个知识点 1.迭代器 1).java.util.Interator + hasnext(); next(); remove(); 2).java.lang. ...
- JDBC批处理读取指定Excel中数据到Mysql关系型数据库
这个demo是有一个Excel中的数据,我需要读取其中的数据然后导入到关系型数据库中,但是为了向数据库中插入更多的数据,循环N次Excel中的结果. 关于JDBC的批处理还可以参考我总结的如下博文: ...
- 2000 Asia shanghai Dance Dance Revolution
思路:dp[i][x][y]表示第i个序列中,右脚在x位置,左脚在y位置时,其最小花费. 那么dp[i][x][y]=min(dp[i-1][a[i]][y]+cost[a[i]][x],dp[i-1 ...
- vue-cli 发布(译)
如果你现在正在使用Vue.js,当你构建一个原型的时候,你所需要做的通常就是通过<script>把Vue.js引入进来,然后就完事了.但是真实情况往往不是这样的.当我们真正开发一个应用的时 ...