赞
踩
服务注册和发现组件:Eureka、Consul、Zookeeper等,用于实现服务注册和发现功能。
服务调用组件:Ribbon、Feign、RestTemplate等,用于实现服务之间的调用和负载均衡。
API网关组件:Zuul、Spring Cloud Gateway等,用于实现API网关功能,提供统一的入口和路由控制。
配置中心组件:Config Server、Spring Cloud Config等,用于实现配置管理功能,支持动态刷新配置。
熔断器组件:Hystrix、Resilience4j等,用于实现熔断器功能,提高系统的容错能力。
分布式跟踪组件:Zipkin、Sleuth等,用于实现分布式跟踪和日志追踪功能。
消息总线组件:Spring Cloud Bus、Kafka等,用于实现消息总线功能,支持消息广播和动态刷新配置等。
安全组件:Spring Cloud Security等,用于实现安全管理功能,提供基于OAuth2的安全认证和授权机制。
Zookeeper是一个开源的分布式协调服务框架,主要用于解决分布式应用中的一些协调和管理问题。基于高可用性的分布式数据存储和通知机制,可以实现分布式应用的协同工作。
分布式数据存储:Zookeeper提供了一个分布式的数据存储机制,支持数据的读写和监听等操作,可以保存各种配置信息和状态信息。
通知机制:Zookeeper基于发布-订阅模式,支持事件和通知机制,可以实现数据变更的监听和通知,提高分布式应用的实时性和可靠性。
高可用性和容错性:Zookeeper使用ZAB协议实现数据同步和一致性,支持主从切换和故障转移,保证数据的可用性和容错性。
分布式锁和队列:Zookeeper提供了分布式锁和队列机制,支持共享锁和排他锁,可以用于实现分布式应用的协同工作。
Zookeeper中的文件系统是指ZNode的组织结构和存储方式,ZNode类似于一个文件或者目录,是Zookeeper的基本数据单元。ZNode存储在Zookeeper的内存中,以树形结构组织,可以通过唯一的路径进行访问和操作。
是Zookeeper用于实现数据同步和一致性的核心协议。ZAB协议的主要目标是实现数据的强一致性和可靠性,保证Zookeeper的高可用性和容错性。
Zookeeper基于发布-订阅模式,支持事件和通知机制,可以实现数据变更的监听和通知,提高分布式应用的实时性和可靠性。Zookeeper的通知机制是基于Watcher机制实现的。Watcher是Zookeeper的一种机制,用于实现对ZNode节点的监听和事件通知。当ZNode节点发生变化时,Watcher机制可以自动触发相应的事件,并向客户端发送通知,以便客户端能够及时处理和响应变化。
public void getData(String path, boolean watch) throws KeeperException, InterruptedException { Stat stat = zooKeeper.exists(path, watch); if (stat != null) { byte[] data = zooKeeper.getData(path, watch, stat); System.out.println("Node data: " + new String(data)); } else { System.out.println("Node not exists: " + path); } } @Override public void process(WatchedEvent event) { if (event.getState() == Event.KeeperState.SyncConnected) { if (event.getType() == Event.EventType.None && event.getPath() == null) { countDownLatch.countDown(); } else if (event.getType() == Event.EventType.NodeDataChanged) { try { getData(PATH, true); } catch (KeeperException | InterruptedException e) { e.printStackTrace(); } } } }
在getData方法中,通过调用exists方法并传入watch参数来注册Watcher,如果节点存在,则获取节点数据,并打印出来。在process方法中,判断Watcher所接收到的事件类型,如果是NodeDataChanged事件,则调用getData方法重新获取节点数据,并继续监听节点数据的变化。
在分布式系统中,保证事务的顺序一致性通常需要对数据进行全局排序。一种常见的做法是使用时间戳来实现全局排序。例如,对于多个写操作,可以为每个操作分配一个全局唯一的时间戳,然后按照时间戳顺序执行操作。在一些分布式数据库系统中,也可以使用分布式锁来保证操作的顺序一致性。
Dubbo是一个高性能的开源RPC(远程过程调用)框架,最初由阿里巴巴开发。它提供了一组工具来构建分布式系统,包括负载均衡、服务注册和发现以及容错处理。
使用Dubbo,开发人员可以轻松创建微服务,并在分布式环境中管理它们。Dubbo采用分层架构,并支持各种通信协议,包括HTTP、TCP和UDP。它还支持各种序列化协议,如JSON、Hessian和Protobuf。
策略:Weighted Random LoadBalance 加权随机 默认算法,默认权重相同
RoundRobin LoadBalance 加权轮询 借鉴于 Nginx 的平滑加权轮询算法,默认权重相同,
LeastActive LoadBalance 最少活跃优先 + 加权随机 背后是能者多劳的思想
Shortest-Response LoadBalance 最短响应优先 + 加权随机 更加关注响应速度
ConsistentHash LoadBalance 一致性哈希 确定的入参,确定的提供者,适用于有状态请求
1、地址发现与负载均衡:地址发现支持服务实例动态上下线,负载均衡确保流量均匀的分布到每个实例上。
2、基于路由规则的流量管控:路由规则对每次请求进行条件匹配,并将符合条件的请求路由到特定的地址子集。
两阶段提交(2PC):2PC是一种基于协调者和参与者的分布式事务协议,可以保证各个分布式系统的事务操作具有原子性和一致性,但是会引入阻塞和单点故障等问题。
补偿事务(TCC):TCC是一种基于try-confirm-cancel三阶段的分布式事务协议,可以在不阻塞事务的前提下保证各个分布式系统的事务操作具有原子性和一致性,但是会引入代码复杂度和可靠性等问题。
最大努力通知(Best Effort Delivery,BED):BED是一种基于异步消息传递的分布式事务协议,可以通过消息重试和重投等机制保证数据的最终一致性,但是无法保证数据的实时性和可靠性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。