博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分布式缓存:Velocity之应用实践
阅读量:6151 次
发布时间:2019-06-21

本文共 1976 字,大约阅读时间需要 6 分钟。

最近一直在研究微软的分布式缓存(Velocity)项目,今天终于完成 了公司的分布式缓存系统的编码,在完成的第一时间就想写出来分享给大家,希望能帮到那些正在学习,渴望实例的同学,废话不多说,先上图哈~

哈哈,界面简单比较丑,不喜勿喷哈~,下面继续

  1. 项目简介

    系统以微软的分布式缓存(Velocity)项目为基础,实现了对分布在各地的缓存服务器实现集群管理,主要技术采用TCP协议、信道通信模式完成了如下功能:

    1、分区:缓存集群区域管理

    2、安全:访问IP限制

    3、备份:缓存项实时备份

    4、日志:日志采用界面、文件双记录

    5、服务端未启动客户端无异常

二、整体架构设计

三、代码解读

3.1、 服务启动(TCP协议信道通信)

/// <summary>

/// 启动服务

/// </summary>

/// <param name="Port"></param>

public static void Start(int Port)

{

IDictionary props = new Hashtable();

props["name"] = "Velocity";

props["port"] = Port;

IAuthorizeRemotingConnection authorizeCallback = (IAuthorizeRemotingConnection)new Server();

channel = new TcpServerChannel(props, new BinaryServerFormatterSinkProvider(), authorizeCallback);

//channel = new HttpServerChannel("Velocity", Port);

ChannelServices.RegisterChannel(channel, false);

RemotingConfiguration.RegisterWellKnownServiceType(typeof(VelocityUtil), "Velocity", WellKnownObjectMode.SingleCall);

}

3.2服务停止

     /// <summary>

/// 停止服务

/// </summary>

public static void Stop()

{

if (channel == null)

{

return;

}

ChannelServices.UnregisterChannel(channel);

}

3.3、安全验证(IP限制)

     /// <summary>

/// 验证IP

/// </summary>

/// <param name="endPoint"></param>

/// <returns></returns>

public bool IsConnectingEndPointAuthorized(System.Net.EndPoint endPoint)

{

#region 验证IP地址代码

bool flag = true;

flag = SafeIP.Count == 0 || SafeIP.Contains(endPoint.ToString().Split(':')[0]);

if (!flag)

{

VelocityUtil.UpLog(string.Format("非法访问:{0}", endPoint.ToString()), VelocityUtil.LogType.Warning);

}

return flag;

#endregion

}

3.4、备份启动缓存区初始化

public DataCache BackCache

{

get

{

#region 初始化方

if (backCache == null)

{

InitCache();

#region 初始化备份缓存区

Parallel.ForEach(Areas, (a) =>

{

try

{

backCache.CreateRegion(a, false);

}

catch { }

});

#endregion

}

return backCache;

#endregion

}

set { backCache = value; }

}

四、注意事项

1、缓存备份的实时性及缓存区的同步

2、系统通信的安全性能,防止恶意访问

3、委托更新UI太频繁容易界面假死

哈哈,由于工作原因就先写这么多吧,有机会再补充,欢迎转载,共同学习,转载请留下本人(:349545750) 脚印~谢谢,欢迎一起交流学习!

转载于:https://www.cnblogs.com/Alum/p/3649850.html

你可能感兴趣的文章
Android JSON数据解析
查看>>
DEV实现日期时间效果
查看>>
java注解【转】
查看>>
centos 下安装g++
查看>>
嵌入式,代码调试----GDB扫盲
查看>>
下一步工作分配
查看>>
Response. AppendHeader使用大全及文件下载.net函数使用注意点(转载)
查看>>
Wait Functions
查看>>
jQuery最佳实践
查看>>
centos64i386下apache 403没有权限访问。
查看>>
jquery用法大全
查看>>
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>