CRL快速开发框架系列教程六(分布式缓存解决方案)
本系列目录
- CRL快速开发框架系列教程一(Code First数据表不需再关心)
- CRL快速开发框架系列教程二(基于Lambda表达式查询)
- CRL快速开发框架系列教程三(更新数据)
- CRL快速开发框架系列教程四(删除数据)
- CRL快速开发框架系列教程五(使用缓存)
- CRL快速开发框架系列教程六(分布式缓存解决方案)
- CRL快速开发框架系列教程七(使用事务)
- CRL快速开发框架系列教程八(使用CRL.Package)
- CRL快速开发框架系列教程九(导入/导出数据)
- CRL快速开发框架系列教程十(导出对象结构)
- CRL快速开发框架系列教程十一(大数据分库分表解决方案)
- CRL快速开发框架系列教程十二(MongoDB支持)
- CRL快速开发框架系列教程十三(嵌套查询)
正文
在上一节讲了如何使用内存缓存,通过Linq.Expressions,可以方便查找数据,不过这有个缺点,仅限当前应用程序
如果想在其它服务器上使用缓存,那就可以选用MemberCache,Redis之类的提供分布式缓存服务了,不过和直接内存查找相比,没法自定义查找
因为他们数据结构是K/V形式,只能按Key查找数据,如果我想在分布式服务器上实现自定义内存查找,那么此方案来了(好像和OData一样)
之前写过一篇,再整理一次 缓存服务新思路,创建动态查询的缓存
为了传输查找命令,有了此结构
实现分布式服务器配置
整体结构大致如此,CRL内部作了简单实现
配置服务端
服务端需要配置能查询哪些缓存类型,因此在应用程序启动
服务端可以自定义通讯方式,需要自已实现,来个TCP的,比HTTP快很多
//增加处理规则,可以添加多个
CRL.CacheServerSetting.AddCacheServerDealDataRule(typeof(Code.ProductData), Code.ProductDataManage.Instance.DeaCacheCommand);
//启动服务端
var cacheServer = new CRL.CacheServer.TcpServer(1136);
cacheServer.Start();
服务端可以添加多种对象类型,返回数据方法为DeaCacheCommand,由CRL自动实现
服务端启动一个TCP监听,客户端由此端口号通信
配置客户端
客户端需要添加服务端组,以获取分布在不同服务器上的数据
//有多个服务器添加多个
/要使用缓存服务,需要设置ProductDataManage.QueryCacheFromRemote 为 true
CRL.CacheServerSetting.AddTcpServerListen("127.0.0.1", 1136);
CRL.CacheServerSetting.Init();
同时设置当前管理类QueryCacheFromRemote为true
目的是告诉本地调用,从此查询缓存由远端处理
public class ProductDataManage : CRL.BaseProvider<ProductData>
...
protected override bool QueryCacheFromRemote
{
get
{
return true;
}
}
客户端调用
和本地缓存调用一样,直接写就行了
var item = Code.ProductDataManage.Instance.QueryItemFromCache(b => b.Id > 0 && b.ProductName.Contains("product"));
因为在服务端配置过能处理哪些数据,在客户端启动时会得到一份列表,然后各种类型的数据上各服务端查找
调试看数据:
服务端收到的命令
反解析为表达式
客户端收到的数据
反序列化为对象
到此整个流程就走完了,分布式缓存调用和本地调用没什么差别,简单方便
CRL快速开发框架系列教程六(分布式缓存解决方案)的更多相关文章
- CRL快速开发框架系列教程五(使用缓存)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程十三(嵌套查询)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程十一(大数据分库分表解决方案)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程十(导出对象结构)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程九(导入/导出数据)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程七(使用事务)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程三(更新数据)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程二(基于Lambda表达式查询)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
随机推荐
- SQL Server表分区
什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在 ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- c#与java的区别
经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...
- 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...
- 设置tomcat远程debug
查看端口占用情况命令: netstat -tunlp |grep 8000 tomcat 启动远程debug: startup.sh 中的最后一行 exec "$PRGDIR"/& ...
- 企业做数据缓存是使用Memcached还是选Redis?
企业是使用Memcached还是选Redis? 在构建一款现代且由数据库驱动的Web应用程序并希望使其拥有更为出色的性能表现时,这个问题总会时不时出现.并给每一位开发人员带来困扰.在考虑对应用程序的性 ...
- Atiti.大企业病与小企业病 大公司病与小公司病
Atiti.大企业病与小企业病 大公司病与小公司病 1. 大企业病,一般会符合机构臃肿 .多重领导 .人才流失的特点.1 2. 大企业病避免方法1 3. 小企业病 1 3.1.1. 表现1 4. 如何 ...
- 解决开启服务器防火墙导致ftp不能连接的问题
在防火墙设置的"高级"选项卡中的"网络连接设置"--"本地连接"--"设置"中添加了"FTP服务器" ...
- 如何在Open Live Writer(OLW)中使用precode代码高亮Syntax Highlighter
早先Microsotf的Windows Live Writer(WLW)现在已经开源了,并且更名为Open Live Writer,但是现在Windows Live Writer还是可以现在,Open ...
- 利用HAProxy代理SQL Server的AlwaysOn辅助副本
利用HAProxy代理SQL Server的AlwaysOn辅助副本 公司最近数据库升级到SQL Server2014 ,并部署了alwayson高可用集群 机房内有三套程序需要读取数据库 第一套:主 ...