Spring Cloud常用组件的都有哪几类?如何选型(对比优缺点)?
SpringCloud生态圈中的组件,按照发展可以分为第一代SpringCloud组件和第二代SpringCloud组件
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,基于RPC调用,对于目前使用率较高的Spring Cloud Netflix来说,它是基于HTTP的,所以效率上没有Dubbo高,但问题在于Dubbo体系的组件不全,不能够提供一站式解决方案,比如服务注册与发现需要借助于Zookeeper等实现,而SpringCloud Netflix则是真正的提供了一站式服务化解决方案,且有Spring大家族背景。前些年,Dubbo使用率高于SpringCloud,但目前Spring Cloud在服务化/微服务解决方案中已经有了非常好的发展趋势。
什么是CAP定理
CAP定理,又称CAP原则和作布鲁尔定理,指的是在一个中,Consistency(一致性)、 Availability(可用性)、 tolerance(分区容忍性)这三个基本需求,最多只能同时满足其中的2个。理解CAP理论的最简单方式是想象两个节点分处分区两侧。允许至少一个节点更新状态会导致数据不一致,即丧失了C性质。如果为了保证数据一致性,将分区一侧的节点设置为不可用,那么又丧失了A性质。除非两个节点可以互相通信,才能既保证C又保证A,这又会导致丧失P性质。
常用的分布式系统权衡:
1.Redis中间件-->AP
2.RocketMQ中间件 -----> AP
3.分布式事务-2pc ----> CP
4.分布式事务-最大努力尝试 ---> AP
常用的一致性算法
1.二阶段提交2PC:二阶段提交2PC是一致性协议算法,可以保证数据的强一致性,该算法能够解决很多临时性系统故障(包括进程、网络节点、通信等故障),被广泛地使用于关系型数据库系统中。
2.三阶段提交3PC:为了解决2PC过程中同步阻塞和数据不一致的问题,3PC协议在协调者和参与者中都引入超时机制,并且把两阶段提交协议的第一个阶段拆分成了两步:询问,然后再锁资源,最后真正提交,包括CanCommit、PreCommit和doCommit三个阶段。