vlambda博客
学习文章列表

分布式架构你是怎么玩的呢

是不是最近偶尔会被问到?

得了解一下CAP理论,然后说得清楚spring cloud 微服务咋玩的,各种mq,redis,k8s等的集群是怎么部署的,我觉得应该就差不多了。

CAP 理论的提出者布鲁尔在提出 CAP 猜想的时候,并没有详细定义 ConsistencyAvailabilityPartition Tolerance 三个单词的明确定义。

  • 一致性(Consistence) : 所有节点访问同一份最新的数据副本

  • 可用性(Availability): 非故障的节点在合理的时间内返回合理的响应(不是错误或者超时的响应)。

  • 分区容错性(Partition tolerance) : 分布式系统出现网络分区的时候,仍然能够对外提供服务。

常见的可以作为注册中心的组件有:ZooKeeper、Eureka、Nacos...。

  1. ZooKeeper 保证的是 CP。 任何时刻对 ZooKeeper 的读请求都能得到一致性的结果,但是, ZooKeeper 不保证每次请求的可用性比如在 Leader 选举过程中或者半数以上的机器不可用的时候服务就是不可用的。

  2. Eureka 保证的则是 AP。 Eureka 在设计的时候就是优先保证 A (可用性)。在 Eureka 中不存在什么 Leader 节点,每个节点都是一样的、平等的。因此 Eureka 不会像 ZooKeeper 那样出现选举过程中或者半数以上的机器不可用的时候服务就是不可用的情况。Eureka 保证即使大部分节点挂掉也不会影响正常提供服务,只要有一个节点是可用的就行了。只不过这个节点上的数据可能并不是最新的。

  3. Nacos 不仅支持 CP 也支持 AP。


Spring cloud微服务架构:


kafak:

分布式架构你是怎么玩的呢

集群部署架构:

分布式架构你是怎么玩的呢

分布式架构你是怎么玩的呢

Redis 主从+哨兵:

分布式架构你是怎么玩的呢

哨兵模式三大工作任务

监控(Monitoring):Sentinel 会不断地检查主服务器和从服务器是否运作正常。

提醒(Notification):当被监控的某个Redis服务器出现问题时, Sentinel可以通过API向管理员或者其他应用程序发送通知。

redis-cluster 集群架构

分布式架构你是怎么玩的呢

集群数据分片:

分布式架构你是怎么玩的呢

RabbitMQ 集群架构

分布式架构你是怎么玩的呢

K8S 架构:

一个pod的典型创建过程: