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