wcf系列学习5天速成——第四天 wcf之分布式架构
2016-11-29 18:01
405 查看
nginx鸡群,iis鸡群,wcf鸡群,DB鸡群,由一个人作战变成了群殴.......
今天我就分享下wcf鸡群,高性能架构中一种常用的手法就是在内存中维护一个叫做“索引”的内存数据库,
在实战中利用“索引”这个概念做出"海量数据“的秒杀。
好,先上图:
这个图明白人都能看得懂吧。因为我的系列偏重于wcf,所以我重点说下”心跳检测“的实战手法。
第一步:上一下项目的结构,才能做到心中有数。
第二步:“LoadDBService”这个是控制台程序,目的就是从数据库抽出关系模型加载在内存数据库中,因为这些东西会涉及一些算法的知识,
在这里就不写算法了,就简单的模拟一下。
LoadDBServcie
因为Dictionary不支持序列化,所以我从网上拷贝了一份代码让其执行序列化
SerializableDictionary
第三步: "HeartBeatService"也做成了一个控制台程序,为了图方便,把Contract和Host都放在一个控制台程序中,
代码中加入了注释,看一下就会懂的。
IAddress.cs
Address.cs
ILiveAddressCallback.cs
第四步: 我们开一下心跳,预览下效果:
是的,心跳现在正在检测是否有活着的Search。
第五步:"SearhService" 这个Console程序就是WCF的search,主要用于从MemerCache里面读取索引。
记得要添加一下对“心跳服务”的服务引用。
IProduct.cs
Product.cs
SearchHost.cs
第六步:此时Search服务已经建好,我们可以测试当Search开启获取关闭对心跳有什么影响:
Search开启时:
Search关闭时:
对的,当Search关闭时,心跳检测该Search已经死掉,然后只能从集群中剔除。
当然,我们可以将Search拷贝N份,部署在N台机器中,只要修改一下endpoint地址就OK了,这一点明白人都会。
第七步:"ClientService" 这里也就指的是IIS,此时我们也要添加一下对心跳的服务引用。
IServiceList.cs
ServiceList.cs
Program.cs
然后我们开启Client,看看效果咋样:
当然,search集群后,client得到search的地址是随机的,也就分担了search的负担,实现有福同享,有难同当的效果了。
最后: 我们做下性能检测,看下“秒杀”和“毫秒杀”的效果。
首先在数据库的User表和Shop插入了180万和20万的数据用于关联。
ClientService改造后的代码:
Program.cs
性能图:
对的,一个秒杀,一个是毫秒杀,所以越复杂越能展示出“内存索引”的强大之处。
源码下载:HeartBeat.rar
相关文章推荐
- wcf系列学习5天速成——第四天 wcf之分布式架构
- wcf系列学习5天速成——第四天 wcf之分布式架构
- wcf系列学习5天速成——第四天 wcf之分布式架构
- wcf系列学习5天速成——第四天 wcf之分布式架构(转载)
- wcf系列学习5天速成——第四天 wcf之分布式架构
- wcf系列学习5天速成——第四天 wcf之分布式架构
- wcf系列学习5天速成——第四天 wcf之分布式架构
- wcf系列学习5天速成——第三天 事务的使用
- wcf系列学习5天速成——第三天 事务的使用
- wcf系列学习5天速成——第五天 服务托管
- wcf系列学习5天速成——第三天 事务的使用
- wcf系列学习5天速成——事务的使用
- wcf系列学习5天速成——第五天 服务托管
- wcf系列学习5天速成——第三天 事务的使用
- wcf系列学习5天速成——第三天 分布性事务的使用 有时间再验证下 不同库的操作
- wcf系列学习5天速成——第三天 事务的使用
- wcf系列学习5天速成——第三天 事务的使用
- wcf系列学习5天速成——第五天 服务托管(转载)
- wcf系列学习5天速成——第三天 事务的使用
- wcf系列学习5天速成