背景 有一套特定规格的应用(程序+数据库),当有业务需求时,就需要多部署应用,并且所有的应用都使用一个共同的后台来管理.应用新增后,如何通知后台更新连接串成了一个关键的问题.于是就产生了使用ZooKeeper管理数据库连接串的奇思异想.具体方案如下: 1. 运维负责搭建数据库,并执行初始化脚本,然后把对应的数据库配置刷入ZooKeeper: 2. 运维完成App(1...N)的部署,App(1...N)从ZooKeeper读取对应的数据库配置: 3. 后台监听ZooKeeper,更新数据库配置到…
背景 工作中经常会有定时任务的需求,常见的做法可以使用Timer.Quartz.Hangfire等组件,这次想尝试下新的思路,使用RabbitMQ死信队列的机制来实现定时任务,同时帮助再次了解RabbitMQ的死信队列. 交互流程 1. 用户创建定时任务 2. 往死信队列插入一条消息,并设置过期时间为首个任务执行时间 3. 死信队列中的消息过期后,消息流向工作队列 4. 任务执行消费者监听工作队列,工作队列向消费者推送消息 5. 消费者查询数据库,读取任务信息 6. 消费者确认任务有效(未被撤销…
转载地址:http://www.cnblogs.com/ldp615/archive/2011/08/01/distinct-entension.html 刚看了篇文章 <Linq的Distinct太不给力了>,文中给出了一个解决办法,略显复杂. 试想如果能写成下面的样子,是不是更简单优雅: 1 2 var p1 = products.Distinct(p => p.ID); var p2 = products.Distinct(p => p.Name); 使用一个简单的 lamb…
# 扩展方法出来已久,介绍扩展方法的文章也很多,但都是笼统的.本人最近一直在思考扩展方法的应用,也悟出了一些,准备将这最近一段时间对扩展方法的思考,写成一个系列文章.每个文章只介绍一个应用方面,篇幅不会太长. 先声明一下,本系列文章主要为提供一个新的编程的思路(所提供的代码仅供参考,不足处请包涵),希望大家把讨论的重点放在编程思想上. 打算将文章写成三个部分:基础篇.高级篇.变态篇. 1.基础篇简单易懂,主要是一些常用操作. 2.高级篇会将扩展方法与泛型.委托.lambda表达式.反射.异步调用…
刚看了篇文章 <Linq的Distinct太不给力了>,文中给出了一个解决办法,略显复杂. 试想如果能写成下面的样子,是不是更简单优雅 var p1 = products.Distinct(p => p.ID); var p2 = products.Distinct(p => p.Name); 使用一个简单的 lambda 作为参数,也符合 Linq 一贯的风格. 可通过扩展方法实现: Distinct 扩展方法 首先,创建一个通用比较的类,实现 IEqualityComparer…
基于依赖程序的版本信息:HikariCP:3.3.1               驱动程序mysql-connector-java:8.0.17 上一篇:Druid是如何管理数据库连接的 零.类图和流程图 开始前先来了解下HikariCP获取一个连接时类间的交互流程,方便下面详细流程的阅读. 获取连接时的类间交互: 图1 一.主流程1:获取连接流程 HikariCP获取连接时的入口是HikariDataSource里的getConnection方法,现在来看下该方法的具体流程: 主流程1 上述为…
基于依赖程序的版本信息:druid:1.1.16               驱动程序mysql-connector-java:8.0.17 下一篇:HikariCP是如何管理数据库连接的 零.类图&流程预览 下方流程中涉及到的类.属性.方法名均列在这里:Druid-类图-属性表  ←该表格用来辅助理解下面的流程图和代码,不用细看,混乱时可用来理清关系. 本文会通过getConnection作为入口,探索在druid里,一个连接的生命周期.大体流程被划分成了以下几个主流程: (图片可以右击新页面…
本文转载:http://www.cnblogs.com/ldp615/archive/2009/08/07/1541404.html 其中本人觉得很经典的:c# 扩展方法奇思妙用基础篇五:Dictionary<TKey, TValue> 扩展 地址:http://www.cnblogs.com/ldp615/archive/2011/01/28/1947205.html…
zookeeper是hbase集群的"协调器".由于zookeeper的轻量级特性,因此我们可以将多个hbase集群共用一个zookeeper集群,以节约大量的服务器.多个hbase集群共用zookeeper集群的方法是使用同一组ip,修改不同hbase集群的"zookeeper.znode.parent"属性,让它们使用不同的根目录.比如cluster1使用/hbase-c1,cluster2使用/hbase-c2,等等.       使用以上方法有一个现实的问题…
一.使用zookeeper管理远程Mycat配置文件 环境准备: 虚拟机192.168.152.130: zookeeper,具体参考前面文章 搭建dubbo+zookeeper+dubboadmin分布式服务框架(windows平台下) 虚拟机192.168.152.128: 安装好Mycat,具体参考前面文章Mysql系列五:数据库分库分表中间件mycat的安装和mycat配置详解 本机: 搭建好zookeeper的客户端工具ZooInspector ,具体参考文章Zookeeper数据查看…