热门标签
大型网站分布式缓存架构
3. 分布式缓存建筑
深圳网站建设分布式缓存是指在多台服务器组成的集群中部署缓存,以集群方式提供缓存服务。体系结构有两种类型:一种是需要更新由JBoss Cache表示的同步分布式缓存,另一种是由Memcached表示的不i相通信。
JBoss Cache分布式缓存在群集中的所有服务器中保存相同的缓存数据。当一台服务器有缓存数据更新时,它会通知集群中的其他机器更新缓存数据或清除缓存数据,如图4.9JBoss Cache所示一般来说,应用程序和缓存部署在同一台服务器上,应用程序可以快速从本地获取缓存数据。但是,问题是缓存数据的数量受到单个服务器的内存空间的限制。当集群很大时,需要将缓存更新信息的成本同步到集群中的所有计算机,这是非常昂贵的。因此,这种方案在企业应用系统中比较常见,但在大型应用系统中却很少网站。
需要缓存的大型网站数据通常非常大,可能需要TB的内存进行缓存。此时,需要另一种类型分布式缓存,如图4.10所示Memcached采用集中式缓存集群管理,也称为分布式架构非通信模式。缓存和应用程序是分开部署的。缓存系统部署在一组特殊的服务器上。应用程序通过一致性Hash等路由算法选择缓存服务器远程访问高速缓存数据,并且缓存服务器彼此不通信。缓存集群的规模易于实现扩展,具有良好的可扩展性。
Memcached关于可伸缩性设计,请参阅本书第6章。
4. Memcached
Memcached曾经是网站分布式缓存的代词,大量用于网站。它的简单设计、卓越的性能、非通信服务器集群和海量数据可扩展体系结构吸引了架构师。
简单通信协议
远程通信设计需要考虑两个因素,一是通信协议,即选择TCP协议或UDP协议或HTTp协议;一种是通信序列化协议。数据传输的两端必须使用可相互识别的数据序列化方法来完成通信,如XML、JSON等文本序列化协议,或者二进制序列化协议如googleprotobufferMemcached使用TCP协议UDP也支持通信。序列化协议是一组基于文本的自定义协议。它非常简单,首先是一个command关键字,然后是一组命令操作数。例如,读取数据的命令协议是get(此后,许多NoSQL产品已经使用或直接支持该协议)。
客户程序丰富
Memcached通信协议非常简单。只要支持协议的客户端可以与Memcached服务器进行通信,那么Memcached就开发出非常丰富的客户端程序,几乎支持所有主流网站编程语言Java、c/c++/c#Perl、Python、PHP、Ruby等。,因此,它更像是在混合使用多种编程语言网站和Memcached中取水。
高性能网络通信
Memcached服务器的通信模块基于支持事件触发的网络通信程序库libevem。
无通信的服务器集群体系结构
如上所述,正是这一特性使得Memcached在JBoss Cache、OSCache等众多分布式缓存产品中脱颖而出,满足了网站对海量缓存数据的需求。其客户端路由算法一致性Hash已经成为数据存储可伸缩性架构设计的经典范例(参见本书第6章)。事实上,由于集群中的服务器之间没有通信,集群可以实现几乎无限的线性扩展,这是许多流行大数据技术的基本架构特征。
近年来,NoSQL产品层出不穷,很多产品在数据持久性、支持复杂数据结构、甚至性能上都优于Memcached,但Memcached以其简单、稳定、专用的特点,在分布式缓存领域仍占有重要地位。
http://www.ytdns.net/jianzhanzhishi/1323.html 大型网站分布式缓存架构