分布式系统和集群

分布式系统和集群

分布式通过把一个大型系统拆分不同子系统并分开部署提高了系统的扩展性和吞吐量,集群是通过集群管理多个相同的子系统并且保证集群系统的CAP(CP或则AP)来提高整个系统的搞可用和高性能。

  • CP:一致性和容错性,保证集群各节点数据一致才能对外提供服务。这样会出现节点短暂时间不能访问的情况,所以丧失了一些可用性。
  • AP:可用性和容错性,保证集群各节点能随时提供服务,这样会出现各节点数据没有完全同步复制成功,导致有些节点数据不一致,这就是弱一致性,这样会对一些对数据一致性敏感的数据出现错误。
  • P:分区容错性,在某些节点所在的分区出现问题时,整个分布式系统其它分区还能正常提供服务。

注:CP和AP

通常分布式和集群是同时存在一个系统的。通过zookeeper、eureka等组件管理服务和服务的元数据。也有的系统是自身实现分布式集群功能如redis。

一、分布式系统应用的无状态化
相比单点系统,分布式集群系统有更高的可用性和扩展性,但是需要每个系统的无状态化,保证用户请求的正确处理。
PS:单点应用会存储用户请求信息和用户状态信息,用来确认用户身份和保存用户状态数据,假如每次请求都对应到不同服务器,会导致用户数据处理失效和错误,所以无状态化可以保证请求转发到任何服务器都会保证数据的正确处理。

二、缓存处理
1、缓存过期策略
LRU(Least Recently Used):最近最长时间不使用原则,是目前最常用的缓存淘汰算法;
LFU(Least Frequently Used):最近最少使用原则;

三、服务注册与发现
服务注册和发现原理等同DNS,但是分布式服务往往一个服务有多个实例,具体访问哪个实例需要通过注册中心服务来定位和发现。

四、配置中心
服务统一配置项管理中心,方便统一管理配置,并且防止敏感信息由于打jar或则war包外泄(可以使用安全性高的服务作为配置中心服务)。

五、ZooKeeper
ZooKeeper是一个开源的分布式协同服务系统。解决协同服务的单点问题
ZooKeeper的使用:下面有三个著名的开源项目使用ZooKeeper

  • Hadoop:使用Zookeeper做Namenode的高可用
  • HBase:保证集群中只有一个master,保证集群中的RegionServer,保存hbase:meta表的位置。
  • Kafka:集群成员管理,controller节点选举

典型应用场景:

  • 配置管理(configuration management)
  • DNS服务
  • 组成员管理 (group membership)
  • 各种分布式锁

ZooKeeper使用于存储和协同相关的关键数据,不适用于大数据量存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值