| 加入收藏| 设为首页| 联系我们

首页 站长学习 站长之家 源码下载 建站素材 书籍教程 常用工具
 您现在的位置: 动力中国 >> 网络编程 >> ASP.NET教程 >> 文章正文  
 NET下BerkeleyDb数据库缓存同步随笔
 

NET下BerkeleyDb数据库缓存同步随笔

http://www.domcn.org  文章来源:本站收藏  点击数:

  关键字:NET下BerkeleyDb数据库缓存同步随笔

  目前对BerkeleyDb在NET下应用研究,单机环境下,一般应用已经没问题了。在我的普通开发机器上。对BerkeleyDb数据库,并发写150个线程,并发读4000个线程,一点问题没有。而且这不是并发性能测试的极限,是我测试的最大数据,肯定是还可以在提高的,只是我就测试更大的并发读写数量。

   当然了这原不是BerkeleyDb的真实性能。只有使用c 或c++调用BerkeleyDb才能得到他的真实性能测试。据说使用c++。BerkeleyDb的读写并发完全可以支持到上千个线程。

  在NET下使用BerkeleyDb,第一步是先对BerkeleyDb的调用做一个合理的封装。网上下的BerkeleyDb for NET 0.95 调用起来真是太麻烦了。如此麻烦的调用方式在实际开发中意义不是很大。只有做好在进一步的封装。成为如下形式。

ControlBerkeleyDb.AddNewKeyList(aa1, GetConfigNews.GetappSettings(EnvCBD), EnvCBD.db, Error.txt, 0, 52428800, BerkeleyDbType.DbBTree);
EnvDb ED = ControlBerkeleyDb.GetEnvDb(aa1);
ED.MyDbBTree.Put(null, ref key, ref data)

简化调用步骤的复杂性,才是更好的方式。这样单机应用是没问题了。但是最近研究的是如何在多台服务器下实现缓存同步。目前实验项目以成功。得到的一些经验和设想如下。

  首先如果使用BerkeleyDb数据库。最好是可以在服务器上可以使用一个独立的硬盘。防止其他程序和BerkeleyDb数据库产生IO竞争。BerkeleyDb可是非常消耗磁盘空间的的程序。数据库文件本身不用说。给每个环境划分的缓存可是都不小的开销。
  
  为了保证BerkeleyDb的最稳定。我的做法是一个数据库对应一个环境。不在一个环境内加载多个数据库。或者是一个环境中不加载三个数据库,最多加载两个。每个环境的缓存视保留的数据类型和数据量设定。一般在50兆到800兆之间人为变动。

  现在有一些类库。是专门用来做分布式缓存的。比如Memcached。但是现在是要用BerkeleyDb来实现,只好走一些苯方法了。
  
  一个站点,使用负载均衡,用5台服务器来对同一个域名的站点进行服务。那么只好在5个服务器上都建立各自的BerkeleyDb数据库文件。当用户随即被解析到一个服务器上进行web请求处理的时候。如果产生了BerkeleyDb数据改变的逻辑,那么在通知其他四台服务器。一起更新BerkeleyDb数据库。这个时候是不能用web servers的。应为你不能指定您的请求被解析到具体哪台服务器上。
  
  只能用Socket象一个指定的ip地址,发送一个有指定主机头的get请求。并在请求内加好需要的参数。
  
  一般是每个站点都会定义一个http处理程序,用来解析一种特殊的后缀名的文件。比如 dafault.berkeleydb?Id=445555&type=4 。这样的文件和请求。这样的请求就是专门的BerkeleyDb缓存同步指令了。
  
  每台服务器都有自己的ip地址列表。这样几台服务器之间互相传递这样的get请求,就可以保证缓存同步了。用异步委托来发送这样的请求。保证主线程不在Socket上消耗时间。
  
  补充一点,在64位的操作系统上,其实不用在从编译BerkeleyDb的64位c源码文件。就是编译成功64位的c语言DLL。在64的NET环境下。想使用也是很不容易的。
  
  这个项目是公司的项目。我就不能把项目源码打包让大家下载了。不过过几天。在业务时间,我就在写一套BerkeleyDb封装使用的项目。让大家下载。可以看代码。感叹一下写BerkeleyDb for NET 0.95的哪个老外。确实很强啊。


NET下BerkeleyDb数据库缓存同步随笔
  • 上一篇文章:

  • 下一篇文章:
  •  热门文章
    普通文章 电子邮件改头换面 四公司畅谈未
    普通文章 PC病毒史上最声名狼藉的八大病
    普通文章 Rails系统中的AJAX开发技术简析
    普通文章 基于ASP.NET AJAX框架实现表单
    普通文章 开发ASP.NET AJAX客户端定制行
    普通文章 用JFreeChart对JSP报表进行增强
    普通文章 SQL Server 2005上的CLR和ADO.
    普通文章 SQL Server 2005的XML支持机制
    普通文章 Firefox中标签式浏览技巧大全
    普通文章 Tomcat中的Session和Cookie大揭
     
     推荐文章
    推荐文章 把Google地图嵌入网页 就是这么
    推荐文章 迅雷搜索候选资源出错的解决
    推荐文章 轻松去除迅雷里的各种广告和资
    推荐文章 突破限制 免费领养到QQ空间五级
    推荐文章 Rational统一过程RUP贴近中小软
    推荐文章 构建自己的轻量级XML DOM分析程
    推荐文章 WPS Office 2007技巧:妙用配置
    推荐文章 Excel 2007:求余数函数实用进阶
    推荐文章 浅谈ASP.NET的Postback
    推荐文章 软件开发中项目需求管理简述
     
     相关文章
    没有相关文章
    设为首页 | 加入收藏 | 广告合作 | 联系站长 | 版权申明 |
    动力中国为网友提供免费学习资料,可用资源,如果您认为我们的相关内容侵害到了您的权利请联系管理员
    Copyright © 2006-2008 domcn.org All Rights Reserved.