`
xiaoZ5919
  • 浏览: 400127 次
  • 性别: Icon_minigender_1
  • 来自: 安平人@北京
博客专栏
Group-logo
Netty学习笔记
浏览量:72732
社区版块
存档分类
最新评论
文章列表
1. 前提     好长时间不写博客了,应该吐槽,写点什么东西了!最近在研究数据库读写分离,分表分库的一些东西。其实这个问题好早之前就想好,只是以前使用hibernate,难点是不好判断什么样的sql走读库,什么样的sql走主库?用正则匹配开头或许可以,/^select 没想出什么好的解决方法,mybatis就不一样了,mappedstatement有commandtype属性,象select,update,delete等类型,为实现读写分离打下来良好的基础。 2. 解决方法     LazyConnectionProxy + RoutingDataSource +   Plugin 在 ...
场景:       使用redis clusterRC1部署集群,6台机器,每台部署16个实例,每个master使用一个slave,node_timeout为默认值(15s)。kill掉其中一个master发现failover完成不了。通过cluster nodes观察,该节点一直处于pfail状态。问题出在失败判 ...
背景    Redis是单进程的,为了发挥多核的优势,我们redis集群采用在单台机器上部署多个redis实例,同时对持久化方式做了改进,采用rdb和增量的aof相结合的方式,appendfsync配置为no。那这样会有一个时段同时进行aof和rdb,当aof和rdb同时进行时,监控系统报警说某些请求Timeout,我们超时设置为2s。另外我们的机器分为两种类型,cpu配置不同,一种是4核,另外一种是12核,timeout发生在4核的机器上。 分析    解决这个问题还是走了不少弯路的,所以在这儿和大家分享一下。经过一番分析找到一下可能导致慢的原因 CPU,rdb过程会有lzf compre ...
什么是mmap     mmap对于c程序员很熟悉,对于java程序员有点陌生。简而言之,将文件直接映射到用户态的内存地址,这样对文件的操作不再是write/read,而是直接对内存地址的操作。     在c中提供了三个函数来实现     [list]    ...
   首先第一眼印象,单机使用磁盘IO的话能支持100w qps。我只能说这是神一样的开源了。 首先来看一个概念IOPS,每秒的IO次数,内存大概是1000w,SSD盘 35000,sas盘180,stat盘90 这些数据我摘抄自《大规模分布式存储系统》,180的IOPS如何能支持100w的qps,还有CoolHash如果在一台机器上开启多个工人是并发随机IO,还是工人只负责写入内存,再用另外的线程负责将所有数据写磁盘,这样是顺序IO,大部分KV存储都是这样搞的,包括leveldb和beansdb。如果说180的IOPS能支撑100wqps,那我只能说Coolhash将sas演绎的太神奇了,Co ...
   前一段时间fourinone在ITEYE资讯上发表了一篇http://www.iteye.com/news/29025-Fourinone-CoolHash高性能数据库引擎产品宣言,我回复评论说玩得酷,还要考得住,借用一些企鹅手机管家的台词,结果被fourinone十分不满意。又把我骂了一顿,我继续回击。面试的时候流行一句话,talk is cheap,show me the code,我在此又借用了一下,talk is cheap,show the benchmark!自此我每天一贴呼唤fourinone拿出benchmark,但至此他都没有回应!好吧我就自己动手看看CoolHash的高 ...
    fourinone号称了集成了hadoop,zk,memcache,mq于一身的四不像超级神器,致力于分布式应用。别的我不懂,今儿聊一下fourinone中的分布式缓存以及分布式文件系统,说到分布式,不得不用到网络通讯,不得不提及RPC,fourinone号称只有 ...
    fourinone号称了集成了hadoop,zk,memcache,mq于一身的四不像超级神器,致力于分布式应用。别的我不懂,今儿聊一下fourinone中的分布式缓存以及分布式文件系统,说到分布式,不得不用到网络通讯,不得不提及RPC,fourinone号称只有 ...
1. 获取object的idletime的算法     if (server.lruclock >= o->lru) {         return (server.lruclock - o->lru) * REDIS_LRU_CLOCK_RESOLUTION;     } else {         return ((REDIS_LRU_CLOCK_MAX - o->lru) + server.lruclock) *                     REDIS_LRU_CLOCK ...
马年第一帖,记录一下过去的2013看过的技术blog linux   1.  理解inode       http://www.ruanyifeng.com/blog/2011/12/inode.html   2.  下厨房mysql数据丢失事故总结       http://tech.xiachufang.com/?p=18   3.   posix_fadvise清除缓存的误解和改进措施      http://blog.yufeng.info/archives/1917     Note: 以上三篇都是和文件系统和pagecache相关,特别是下厨房事件,了解linux ...
  今天又看了一遍boyan的《Nip trick and trip》,又有一些新的收获。比以前看地更深刻了。其中有一处写到Nio的写优化,当Nio的channel设置为nonblocking时,写操作不再阻塞,而是直接返回0,表示当时socket的写缓冲区已满不可写。通常 ...
wait-notify用在经典的生产者-消费者模型。一般代码都是先初始化consumer,然后再初始化producer,程序正常运行。这是带有wait()先进入同步语句块,带有notifyAll()的后进入同步语句块。现在反过来带有notifyAll()先进入同步语句块,儿带有wait()的后进入语句块,这时候程序会一直阻塞,觉得很蹊跷,带着这个对synchronized,wait,notify又深入研究了一番。有一些结论和大家分享一下,首先来看synchronized,这个大家都很清楚,相当于排他锁谁先持有,其他线程必须得等待直到释放。依据这样的结论, 场景一 两个线程同时执行synchr ...
  cache失效大并发透传DB,在TimYang的一篇博文Memcache mutex设计模式介绍过。提到了两种方案。其中第一方案的sleep时长不好把握。 if (memcache.get(key) == null) { // 3 min timeout to avoid mutex holder crash if (memcache.add(key_mutex, 3 * 60 * 1000) == true) { value = db.get(key); memcache.set(key, value); m ...
   Netty也研究了一段时间,实践是对知识掌握的试金石。有些东西只是看了面儿上的东西我觉得懂了,如不去深入,一旦要用它去做点什么东西却又觉得无从下手。学车的时候,学员问教练我怎么算是学会开车了,教练告诉他当 ...
       这段时间在研究web服务器消息推送,除了html5的websocket,comet是一项很好的方案。comet不是一项专门的技术,更像是一个解决方案。说来也简单,服务端需要能把connection hold,浏览器也需要特殊的支持保持从服务端获取数据,幸好用xmlhttprequest,ajax的实现也是靠它。comet一般有两种方式long poll和streaming。长轮询是client发起请求以后,服务端发现没有数据要发给客户端就先hold起来,直到数据要发给client,请求本次请求。客户端需要不断的发起这样的请求。长轮询相比定时发起的短轮询显然能减少对服务器的请求。注意 ...
Global site tag (gtag.js) - Google Analytics