新闻中心

分布式缓存平台方案

作者:澳门赌场  来源:澳门真人正规官网  时间:2020-06-15 13:21  点击:

  bakaka:[reply]weixin_42343424[/reply]仔细看了一下这个使用操作和说明,正好契合目前我们的需求,简介不臃肿,请问可以分享一下吗?

  以redis为底层存储设施,建设高性能、高可用、可扩展、易于运维和管理的缓存平台,以灵活满足各种缓存应用场景。

  redis提供的这些特性,便于达成我们的目标。在此之上,按照实际的业务需求,进行扩展和辅助工具的开发,建立完善的统一管理平台。

  独立部署一系列redis server或者将现有已经部署的redis server纳入管理,形成逻辑上统一的缓存资源池。

  部署一系列分布式采集应用节点,分别对所有的redis server和redis proxy进行信息采集,存储的同时发送到实时监控服务。

  部署一系列分布式统计应用节点,分别对原始采集数据进行准实时统计汇总并存储。原始采集信息统计完毕之后删除。集中存储所有的统计结果。统计节点本地系统同时存储本节点负责的统计结果,以便展现。

  负责将变动的集群信息(节点拓扑、路由和读写策略等)push到相应的proxy。负责提供配置和元信息服务,以便应用端的Client SDK来polling变更。负责控制各个物理机上的Agent,对redis实例进行部署管理和配置文件同步。

  部署在缓存资源池中各个物理机上,负责本机redis实例的部署和配置文件同步。

  Client SDK为应用提供操作redis集群数据的API。利用polling到的集群配置元信息(节点拓扑、路由和读写策略等),访问后端的redis server节点。SDK负责监控配置信息变更(比如故障切换、服务节点迁移等),动态重启底层的连接池。对应用透明。

  Client SDK相对比较复杂,而且需要适应多种开发语言。因此可以把Client SDK的功能后移到中间的proxy层,通过proxy来对应用屏蔽这些复杂性。Redis proxy是实现了redis 协议的无状态的server,无论何种语言的redis客户端都可访问它。应用通过load balance设备来访问后端的多个proxy server。

  缓存平台对外提供的协议或接口,除了本身就支持的redis协议外,还可通过proxy中间件提供memcached、REST等协议。

  在性能完全满足业务需求的场景,可考虑使用proxy。否则,可使用专用的redis客户端SDK。

  redis采用异步方式保证最大的复制效率,同时对master性能影响最小。不支持同步方式,而是通过复制的可靠性配置来保证数据的安全。

  将redis实例所有的写操作命令以redis协议文本格式追加到本机日志文件,通过replay日志来恢复数据。

  appendfsync always:每次追加日志同时都执行fsync持久到介质,最可靠,性能最差。

  appendfsync no:只追加,不执行fsync。由操作系统保证高速缓存持久到介质,性能最高,可靠性依赖操作系统,有可能丢失尚未持久到介质的更新数据。

  appendfsync everysec:每秒执行一次fsync,性能居中,最坏丢失的更新数据不超过2秒。

  将redis实例内存数据完整的持久到本机二进制快照文件,通过load快照文件恢复数据。

  实现redis的复制协议的中间件。在跨机柜/交换机或者跨机房的主机上,将一个或多个实例的数据复制到jd-redis-dumper所在机器,并以AOF或RDB方式存储。通过远端的AOF和RDB来恢复数据。数据安全和Master/Slave一样,但是节约了内存资源,恢复速度要慢。

  zookeeper协调的多个采集器,定期收集所有集群和实例的info/config信息供准实时分析,同时发现故障实例,报告给故障决策组件。

  当发生报警后,通过人工或者故障决策组件自动确认后,开始进行故障切换。只有AOF或者RDB的,通过Agent重启实例恢复数据。有Slave的,将Slave提升为主。

  通过在本机或跨机部署多个实例形成一个逻辑上的集群,提高整体性能,减少单点故障。每个实例作为逻辑集群的一个分片(Sharding),承担部分数据的存储和读写请求。每个分片还可以配置对应的Slave,形成一个高可用分布式的集群方案。client/proxy按照key通过特定路由算法(比如一致性hash)请求特定的分片。

  pre-sharding,创建足够多的分片实例,部署在有限的几台物理机上。当缓存增长时,可通过扩大物理机内存,或将实例迁移到另外的物理机上,并扩大每个实例的最大内存设置,来达到整体扩容的目的。

  当一个分片实例的内存容量增长到已经不合适放在一台物理机上时,势必要进行分片数量的增加。涉及到缓存数据的重新分布,可通过jd-redis-bridge来做。

  预先规划,合理配置。按照业务缓存数据增长量来提前规划分片数量,权衡成本和收益,配合垂直扩展和水平扩展来适应缓存的增长。

  作者介绍杨彪 , 蚂蚁金服技术专家,《分布式服务架构:原理、设计与实战》和《可伸缩服务架构:框架与中间件》作者。近10年互联网和游戏行业工作经验,曾在酷我音乐盒、人人游戏和掌趣科技等上市公司担任核心研发职位,做过日活跃用户量达千万的项目,也做过多款月流水千万以上的游戏。本文节选自即将出版的《可伸缩服务架构:框架与中间件》一书,作者:李艳鹏、杨彪、李海亮、贾博岩、刘淏如今,市面上的

  目录介绍特性架构总述介绍       JD_databus是为满足多数据中心项目的mysql在数据中心间复制的需求所产生的。最开始JD_databus是在LinkedIn的databus的基础上开发的,本次设计考虑到可维护性、代码的简洁、需求的快速迭代,决定重新开发。设计和开发过程中参考了Databus、Canal/Otter的一些好的思路,对于Binlog解析部分则直接使用了......

  主要有redis cluster和codis,在进行了一系列调研之后,redis cluster现阶段的模块耦合使得我最后放弃了这一

  ,转向了codis。在使用过程中,发现了一些codis的不足之处。因此笔者在官方codis的基础上(基于最新版本3.2.2),修改了源码,做出了codisX。先说一下......

  随着互联网的发展,用户规模和数据规模越来越大,对系统的性能提出了更高的要求,

  就是其中一个非常关键的组件,从简单的商品秒杀,到全民投入的双十一,我们都能见到它的身影。分布式

  原理基本相同,CPU是用性能更好的静态RAM来为性能一般的DRAM加速,分布式

  则是通过内存或者其他高速存储来加速,但是由于用到了分布式环境中......

  一、redis和memcache有什么区别?redis是现在的企业使用最广泛

  技术,它们比较相似,但有如下一些区别:(1)redis相对于memcache来说拥有更丰富的数据类型,可以适用更多复杂场景。(2)redis原生就是支持cluster集群模式的,但memcache没有原生的集群模式,需要依靠客户端来实现往集群中分片写入......

  互联网发展的同时,也引领者相关技术的发展与变革,比如集群、高并发、负载均衡、高可用、海量数据的处理、系统安全、分布式

  技术。2、三层架构1、web层(表现层):主要对用户数据接收,以及数据处理完成后返回,为客户端提供应用程序的访问2、应用层:对业务的处理3、持久层:数据访问层,即对数据的操作表现层框架: Struts2   spring...

  ,你会怎么去设计?答:主要有Memcached和Redis。我使用Redis来做分布式

  。 刚开始对Redis的操作都是单机版,虽然Redis的速度很快,但是在特别高的并发下,Redis也有性能瓶颈。Redis中的数据都放在内存里面,内存能有多大呢?64个G,已经很大了,64G都放满了呢?还能放吗?可以,内存放满了会放在硬盘中的虚拟内存......

澳门赌场

上一篇:采用空气输送某固体颗粒固体颗粒的松散密度1100kgm3

下一篇:缓冲平台的制作方法