随笔分类 -  1.1.1.15 Cache

摘要:key-value分布式存储系统查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,但不能进行复杂的条件查询。如果辅以Real-Time Search Engine(实时搜索引擎)进行复杂条件检索、全文检索,就可以替代并发性能较低的MySQL等关系型数据库,达到高并发、高性能,节省几十倍服务器数量的目的。以MemcacheDB、Tokyo Tyrant为代表的key-value分布式存储,在上万并发连接下,轻松地完成高速查询。而MySQL,在几百个并发连接下,就基本上崩溃了。 虽然key-value分布式存储具有极高的性能,但是只能做类似于MySQL的SELECT * FROM . 阅读全文
posted @ 2011-12-01 10:32 ajian005 阅读(197) 评论(0) 推荐(0)
摘要:记得半年多前写过MySQL vs NoSQL ,且一直以来我比较坚持用数据库存储K/V数据,因为不只是对数据安全等能提供保障,主要是发现大部分系统的qps根本就没那么高,能上4k的水平已经很少了,这点MySQL完全可以满足,因为优化好的K/V请求,在MySQL的SQL层上能实现每核心5k左右的qps,而这一数据在HandlerSocket出来之后,得到了更大的提升。HandlerSocket plugin for MySQL 已经出来一段时间了, 鉴于HandlerSocket和InnoDB的健壮、安全性, 可以预见HandlerSocket取代Memcached等NoSQL存储/Cache, 阅读全文
posted @ 2011-11-29 21:47 ajian005 阅读(280) 评论(0) 推荐(0)
摘要:几种负载均衡算法本地流量管理技术主要有一下几种负载均衡算法:静态负载均衡算法包括:轮询,比率,优先权动态负载均衡算法包括: 最少连接数,最快响应速度,观察方法,预测法,动态性能分配,动态服务器补充,服务质量,服务类型,规则模式。静态负载均衡算法◆轮询(Round Robin):顺序循环将请求一次顺序循环地连接每个服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从顺序循环队列中拿出,不参加下一次的轮询,直到其恢复正常。◆比率(Ratio):给每个服务器分配一个加权值为比例,根椐这个比例,把用户的请求分配到每个服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就 阅读全文
posted @ 2011-11-07 15:47 ajian005 阅读(172) 评论(0) 推荐(0)
摘要:没有人能说清哪种缓存算法优于其他的缓存算法。(以下的几种缓存算法,有的我也理解不好,如果感兴趣,你可以Google一下)Least Frequently Used(LFU):大家好,我是 LFU,我会计算为每个缓存对象计算他们被使用的频率。我会把最不常用的缓存对象踢走。Least Recently User(LRU):我是LRU缓存算法,我把最近最少使用的缓存对象给踢走。我总是需要去了解在什么时候,用了哪个缓存对象。如果有人想要了解我为什么总能把最近最少使用的对象踢掉,是非常困难的。浏览器就是使用了我(LRU)作为缓存算法。新的对象会被放在缓存的顶部,当缓存达到了容量极限,我会把底部的对象踢走 阅读全文
posted @ 2011-11-07 15:44 ajian005 阅读(161) 评论(0) 推荐(0)
摘要:之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法,在这篇文章中将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程和所需掌握的知识体系,希望能给想从事互联网行业的同学一点初步的概念,:),文中的不对之处也请各位多给点建议,让本文真正起到抛砖引玉的效果。架构演变第一步:物理分离webserver和数据库最开始,由于某些想法,于是在互联网上搭建了一个网站,这个 阅读全文
posted @ 2011-11-02 18:11 ajian005 阅读(136) 评论(0) 推荐(0)
摘要:java面试题 http://blog.csdn.net/uiop_7890_7890 阅读全文
posted @ 2011-11-02 18:09 ajian005 阅读(147) 评论(0) 推荐(0)
摘要:memcached 安装使用:http://hi.baidu.com/156544632/blog/item/4dd35433152caffc1b4cff44.html注意:Linux 下memcached默认不能再root用户下运行memcached-session-manager http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfigurationMemcached 协议中英文对照 http://blog.s135.com/book/memcached/memcached完全剖析–1. memcached 阅读全文
posted @ 2011-07-04 14:45 ajian005 阅读(470) 评论(0) 推荐(0)
摘要:曾经研究过jkd1.5新特性,其中ConcurrentHashMap就是其中之一,其特点:效率比Hashtable高,并发性比hashmap好。结合了两者的特点。 集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅。在tiger之前,我们使用得最多的 阅读全文
posted @ 2011-06-08 08:52 ajian005 阅读(212) 评论(0) 推荐(0)
摘要:集群中session安全和同步是个最大的问题,下面是我收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景。1. 客户端cookie加密这是我以前采用的方式,简单,高效。比较好的方法是自己采用cookie机制来实现一个session,在应用中使用此session实现。问题:session中数据不能太多,最好只有个用户id。参考实现:http://rollerweblogger.org/2. application server的session复制可能大部分应用服务器都提供了session复制的功能来实现集群,tomcat,jboss,was都提供了这样的功能。问题: 阅读全文
posted @ 2011-06-01 23:24 ajian005 阅读(190) 评论(0) 推荐(0)
摘要:本文从程序的运行时结构和源代码的组织结构两个方面探讨了系统构架设计应考虑的各种因素,列举了系统构架设计文档应考虑的一些问题。 一、与构架有关的几个基本概念: 1、模块(module):一组完成指定功能的语句,包括:输入、输出、逻辑处理功能、内部信息、运行环境(与功能对应但不是一对一关系)。 2、组件(component):系统中相当重要的、几乎是独立的可替换部分,它在明确定义的构架环境中实现确切的功能。 3、模式(pattern):指经过验证,至少适用于一种实用环境(更多时候是好几种环境)的解决方案模板(用于结构和行为。在 UML中:模式由参数化的协作来表示,但 UML不直接对模式的其他... 阅读全文
posted @ 2011-02-17 17:25 ajian005 阅读(479) 评论(0) 推荐(0)
摘要:本文从程序的运行时结构和源代码的组织结构两个方面探讨了系统构架设计应考虑的各种因素,列举了系统构架设计文档应考虑的一些问题。 一、与构架有关的几个基本概念: 1、模块(module):一组完成指定功能的语句,包括:输入、输出、逻辑处理功能、内部信息、运行环境(与功能对应但不是一对一关系)。 2、组件(component):系统中相当重要的、几乎是独立的可替换部分,它在明确定义的构架环境中实现确切的功能。 3、模式(pattern):指经过验证,至少适用于一种实用环境(更多时候是好几种环境)的解决方案模板(用于结构和行为。在 UML中:模式由参数化的协作来表示,但 UML不直接对模式的其他... 阅读全文
posted @ 2011-02-17 17:22 ajian005 阅读(189) 评论(0) 推荐(0)
摘要:参考:memcached完全剖析–1. memcached的基础 http://tech.idv2.com/2008/07/10/memcached-001/memcached本身是集中式的缓存系统,要搞多节点分布,只能通过客户端实现。memcached的分布算法一般有两种选择:1、hash模余算法:根据hash(key)的结果,模连接数的余数决定存储到哪个节点(键的整数哈希值,根据服务器个数取余来选定服务器节点),也就是hash(key)% sessions.size(),这个余数计算的方法简单,数据的分散性也相当优秀。 但也有其缺点。那就是当添加或移除服务器时,缓存重组的代价相当巨大。添加 阅读全文
posted @ 2011-02-17 17:07 ajian005 阅读(174) 评论(0) 推荐(0)
摘要:目前在网站的架构构成中普遍使用到缓存来提供WEB应用的性能,由于网站规模的不同,分别存在如下几种类型的缓存架构。(1)单机缓存(2)简单分布式缓存(3)使用复制方式的缓存集群(4)使用散列方式的缓存集群(5)高性能高、可靠的缓存集群下面对于上述几种缓存策略的实际应用的适用情况以及优缺点进行详细分析,当然并没有一个缓存的教条存在,有的只是参考案例,对于具体的应用来讲要具体分析。(1)单机缓存单机缓存也就是WEB应用和缓存是同一个应用,也就是最简单的缓存策略,大家在程序中使用的static的HashMap、List这些都可以算作缓存的范畴。比较有代表性的单机缓存有OSCache、Ehcache。O 阅读全文
posted @ 2011-02-17 16:57 ajian005 阅读(244) 评论(0) 推荐(0)
摘要:Cache是提高CPU性能的一种技术手段,通过Cache存储器把程序频繁用到的指令和数据存储起来,等再次访问该指令或数据时CPU可以直接从Cache中读取而不用访问主存从而能提高程序运行的效率。Cache背后的理论基础是程序运行的“局部性”原理, “程序局部性原理”包括 时间局部性 和 空间局部性。时间局部性的主要表现为刚被访问过的指令或数据很可能在最近的将来再次被访问,编程语言的循环结构是时间局部性产生的主要原因。空间局部性描述的是:若一个存储单元被访问则其相邻的存储单元也被访问,软件程序的顺序执行及语言中的数组结构是空间局部性产生的主要原因。在硬件设计方面cache的实现大体上分为两种:虚 阅读全文
posted @ 2011-02-17 16:50 ajian005 阅读(343) 评论(0) 推荐(0)
摘要:Scalability, Availability & Stability Patterns在这个PPT中,你会发现大量词语在本站讨论过:分布式缓存;数据网格计算;NoSQL;RDBMS;Http缓存如CDN 反向代理;CAP理论,并发模式(消息传递模式 软事务内存 数据流并发 状态共享并发);分区;复制。EDA事件驱动架构;负载平衡;并行计算(MapReduce模式 Fork/Join模式)。由于难得一见的全面,需要反复多看几次,理清头绪。我下面就逐步诠释一下:(1)Scalability可伸缩性,可伸缩性扣住“状态”这个关键词,2006年我就写了一篇状态对象:数据库的替代者,应该说 阅读全文
posted @ 2011-02-17 16:33 ajian005 阅读(364) 评论(0) 推荐(0)
摘要:关键字 云计算 、分布式、基础设施即服务(IaaS),平台即服务(PaaS)和软件即服务(SaaS)、1什么是云计算?云计算(英文:Cloud computing),是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。整个运行方式很像电网。云计算是继1980年代大型计算机到客户端-服务器的大转变之后的又一种巨变。用户不再需要了解“云”中基础设施的细节,不必具有相应的专业知识,也无需直接进行控制。[1] 云计算描述了一种基于互联网的新的IT服务增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展而且经常是虚拟化的资源。[2][3] 云其实是网络、. 阅读全文
posted @ 2011-02-17 16:04 ajian005 阅读(235) 评论(0) 推荐(0)