File tree Expand file tree Collapse file tree 4 files changed +22
-20
lines changed Expand file tree Collapse file tree 4 files changed +22
-20
lines changed Original file line number Diff line number Diff line change 1+ ## 理论
2+ CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。
3+
4+ 分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:
5+
6+ * 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
7+ * 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
8+ * 分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
9+
10+ CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。
11+
12+ ## 个人理解
13+ 分区容错性是指能否对分布式系统中对数据不一致的容忍,那么在当前硬件条件下是肯定会出现不一致的情况,所以需要在一致性和可用性中进行选择。
14+
15+ 如果选择一致性,则需要将数据同步更新到所有节点上,每次写操作就都要等待全部节点写成功,会导致可用性的降低。
16+ 如果选择可用性,就需要将数据复制到很多个节点,需要复制的数据很多,复制的过程缓慢,会导致一致性的降低
17+
18+ BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。
Original file line number Diff line number Diff line change 11## 消息队列
2- 消息队列是为了解决** 生产和消费的速度不一致** 导致的问题,有以下好处:
2+ 消息队列目的:
3+
341 . 减少请求响应时间。比如注册功能需要调用第三方接口来发短信,如果等待第三方响应可能会需要很多时间
452 . 服务之间解耦。主服务只关心核心的流程,其他不重要的、耗费时间流程是否如何处理完成不需要知道,只通知即可
563 . 流量削锋。对于不需要实时处理的请求来说,当并发量特别大的时候,可以先在消息队列中作缓存,然后陆续发送给对应的服务去处理
67
7- 如果想要实现一个消息队列,可以参考[ 这里] ( https://zhuanlan.zhihu.com/p/21649950 )
8- 最简单的消息队列就是一个消息转发器,基本功能只有三个:消息存储、消息发送、消息删除,可使用LinkedBlockingQueue、ConcurrentLinkedQueue实现
9-
10- 对于消息队列另外一个通俗易懂的[ 解释] ( https://www.zhihu.com/question/34243607 )
8+ 如果想要实现一个消息队列,可以参考[ 这里] ( https://zhuanlan.zhihu.com/p/21649950 )
Load Diff This file was deleted.
Original file line number Diff line number Diff line change @@ -27,12 +27,10 @@ PS:除开知识点,一定要准备好以下套路:
2727* [ 常用的几个设计模式] ( https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/通用基础-设计模式.md )
2828* [ 从URL到看到网页的过程] ( http://www.wangtianyi.top/blog/2017/10/22/cong-urlkai-shi-,ding-wei-shi-jie/ )
2929### 分布式
30- * [ 高并发解决思路] ( https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/高并发.md )
31- * [ CAP理论] ( https://www.zhihu.com/question/54105974 )
30+ * [ CAP理论] ( https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/分布式-CAP理论.md )
3231* [ 锁] ( https://www.jianshu.com/p/c2b4aa7a12f1 )
3332* [ 事务] ( https://mp.weixin.qq.com/s/gg4q_53eiHCI3OUWzN7eWg )
3433* [ 消息队列] ( https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/分布式-消息队列.md )
35- * [ 限流] ( https://crossoverjie.top/2018/04/28/sbc/sbc7-Distributed-Limit )
3634* [ ID生成方式] ( https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/分布式-ID生成方式.md )
3735* [ 四层、七层负载均衡的区别] ( https://www.jianshu.com/p/fa937b8e6712 )
3836* [ 一致性算法] ( https://github.com/crossoverJie/JCSprout/blob/master/MD/Consistent-Hash.md )
You can’t perform that action at this time.
0 commit comments