技术 架构
文章平均质量分 81
iteye_15264
这个作者很懒,什么都没留下…
展开
-
有关一致性哈希算法的应用场景
Tim Yang去年在博客(http://timyang.net)讨论一个有状态服务的场景下如何使用一致性哈希算法的问题。其中主要涉及到增加或删除节点时引起的系统震荡。其中也讨论了是否使用随机选取节点,并使用memcached保持选择的方案。我们知道一致性哈希算法可以很好的解决增加或删除节点时引起的系统震荡问题。采用虚拟节点后,平均的将增删节点产生的震荡分配到其他节点上。测试证实了一致性哈...2011-08-13 08:49:50 · 267 阅读 · 0 评论 -
Memcached for移动互联网:mcperf压测1k~10k数据笔记
移动互联网场景中随着人机交互方式的改变,用户数据也发生了比较大的改变。从以1k以下的文本为主数据,变为1k~10k的音频占很大比例的数据。响应的后端服务的队列、存储、缓存也需要做一系列针对性调整。这里就简单记录一下maoyidao对Memcached的压测情况。1. 压测工具:mcperfmcperf使用简单,输出报告清晰。最初是twitter为了证明其Twemcache在特定场景下(需要...2012-12-31 18:56:28 · 490 阅读 · 0 评论 -
构建高性能服务(二)java高并发锁的3种实现
提高系统并发吞吐能力是构建高性能服务的重点和难点。通常review代码时看到synchronized是我都会想一想,这个地方可不可以优化。使用synchronized使得并发的线程变成顺序执行,对系统并发吞吐能力有极大影响,我的博文 http://maoyidao.iteye.com/blog/1149015 介绍了可以从理论上估算系统并发处理能力的方法。 那么对于必须使用synchron...2012-06-18 22:27:58 · 1856 阅读 · 0 评论 -
架构师笔记【杂】cache/容量及带宽规划/sysctl.conf配置等
不知道什么时候记得一些笔记,现在翻出来看看还是很有启发。也不想整理了,格式有点乱不过反映了当时的一些思考。好的架构时演进出来的而不是从石头缝里蹦出来的,需要我们在工作中不断的思考、总结、实践。。。 1. 有关架构师的思考,从模块间的耦合关系上考虑A,健康状况大致为多少线程、db每port写入量为多少,多少server,带宽占用,请求频率;B,如果峰值情况怎样?C,如前...2012-12-05 13:31:58 · 199 阅读 · 0 评论 -
构建高性能服务(一)ConcurrentSkipListMap和链表构建高性能Java Memcached
场景缓存服务器是互联网后端服务中常用的基础设施。场景(一)图片服务器上存储了大量图片,为了提高图片服务的吞吐量,希望把热门的图片加载到内存中。场景(二)分布式存储服务,为提高访问吞吐,把大量的meta信息存储在内存中。问题但是使用Java语言开发缓存服务,不可避免的遇到GC问题。无论使用ehcache是基于Map实现的缓存,都会产生大量Minor GC无法回收的对象,最终...原创 2012-06-12 22:01:04 · 172 阅读 · 0 评论 -
大型网站架构实现伸缩性的最佳实践
前言为防止成为标题党,首先定义一下什么是大型网站,(1)业务依赖多,一个业务流程,需要调用多种资源,Memcached/DB/其他模块等等;(2)业务快速增长且不平均,比如电商网站中某一类产品增长特别明显;(3)并发访问量高,数据量大,请求响应时间要求严格;(4)业务要求7*24小时高可用性;(5)业务模块多,研发团队多,业务部门多; 以上条件满足一部分就可以称为大...原创 2012-05-26 21:56:28 · 143 阅读 · 0 评论 -
构建高性能服务(三)Java高性能缓冲设计 vs Disruptor vs LinkedBlockingQueue
一个仅仅部署在4台服务器上的服务,每秒向Database写入数据超过100万行数据,每分钟产生超过1G的数据。而每台服务器(8核12G)上CPU占用不到100%,load不超过5。这是怎么做到呢?下面将给你描述这个架构,它的核心是一个高效缓冲区设计,我们对它的要求是:1,该缓存区要尽量简单2,尽量避免生产者线程和消费者线程锁3,尽量避免大量GC缓冲 vs 性能瓶颈提高硬盘写入I...原创 2012-08-26 15:52:04 · 753 阅读 · 0 评论 -
排查Java线上服务故障的方法和实例分析
前言作为在线系统负责人或者是一个技术专家,你可能刚刚接手一个项目就需要处理紧急故障,或者被要求帮忙处理一些紧急的故障,这个时候的情景是:(1)你可能对这个业务仅仅是听说过,而不怎么真正了解;(2)你可能没有这个故障的详细信息,比如可能仅仅是有使用方反馈服务中断了10分钟;(3)你对代码细节还没有仔细研究过。 这个时候该怎么解决问题呢?根据以前的经验,工程师们常常倾向于直接登上服务...2012-04-08 22:20:57 · 152 阅读 · 0 评论 -
分库分表策略的可实现架构
分库分表是解决mysql水平扩展的主要手段。网上有关策略的讨论很多,主要是hash扩展、按时间扩展、按范围扩展等等。但真正想实施分库分表的朋友们往往觉得“策略听来终觉浅,觉知此事要代码”,因此本文的主要目的是给朋友们提供一个可实现架构。JDBCTemplate和Hibernate大家都知道Hibernate是ORM(对象-关系数据库 mapping)意义上的第一个真正的“统治级”产品...2012-03-18 11:14:36 · 152 阅读 · 0 评论 -
protobuf厂内通讯模块的设计的思考
一直以来比较关心高性能通讯模块的设计,最近看到两篇好文,由此想到曾经参与的几个通讯模块的设计和实现,跟大家分享思路。 首先来分享好文:http://agapple.iteye.com/blog/859052这一篇讲得是google protobuf协议和其他序列化的性能测试。朋友们看了一定会砰然心动,protobuf如此之高的通讯效率当然是求之不得。新浪微博IM各模块之间也采用...2011-11-06 23:18:55 · 113 阅读 · 0 评论 -
在HBase中应用MemStore-Local Allocation Buffers解决Full GC问题:第二部分
maoyidao注:上个月写了一遍博文,介绍一种高效的Java缓存实现,http://maoyidao.iteye.com/admin/blogs/1559420。其本质是模仿Memcached的Slab,通过分配连续定长的byte[]减少大规模使用Java Heap作为缓存时不可避免的GC问题。虽然当时构思和实现这一思路时并没有参照其他开源产品,但这一思路在很多著名的开源产品上也有类似...2012-07-09 22:06:58 · 119 阅读 · 0 评论 -
在HBase中应用MemStore-Local Allocation Buffers解决Full GC问题:第一部分
译者注:上个月写了一遍博文,介绍一种高效的Java缓存实现http://maoyidao.iteye.com/blog/1559420。其本质是模仿Memcached的Slab,通过分配连续定长的byte[]减少大规模使用Java Heap作为缓存时不可避免的GC问题。虽然当时构思和实现这一思路时并没有参照其他开源产品,但这一思路在很多著名的开源产品上也有类似的实现。随着内存使用成本越来越低...2012-07-03 08:15:31 · 207 阅读 · 0 评论 -
Memcache架构新思考
2011年初Marc Kwiatkowski通过Memecache@Facebook介绍了Facebook的Memcache架构,现在重新审视这个架构,仍有很多方面在业界保持先进性。作为weibo内部数据处理量最大,对数据延迟最敏感的部门,基于本厂2年多来对mc的使用心得,我在本文总结对MC架构的一些新思考。 1. Memcache使用中的雷区通常你可能考虑不到,但又隐藏在某处...2013-04-11 23:28:04 · 176 阅读 · 0 评论