SpringCloud(一)微服务分布式概述

基于:【狂神说Java】SpringCloud最新教程IDEA版

1 相关概念

1.1 微服务和分布式

  • 微服务:微服务是一种软件架构方式,和MVC一样。微服务强调把一个软件的各个模块拆分成小的服务,服务与服务之间用轻量级的通信方式进行通信。
  • 分布式:分布式是一种部署形式,解决软件开发好了之后如何部署的问题。
  • 微服务和分布式的区别:二者没有绝对关系!微服务的所有服务都可以部署在同一单机上,也可以不同的服务部署在不同的机器上,也可以一个服务同时复制多个部署在不同的机器上。分布式的不同机器上可以部署相同的服务,也可以部署不同的服务。总而言之,一个是架构风格,一个是部署方式,都是根据具体的软件场景和访问量需求来的。

1.2 分布式的CAP原则

CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

  • 一致性(Consistency):同一时间,所有节点的数据完全一致。
  • 可用性(Availability):服务一直可用,而且是正常响应时间。好的可用性主要是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。
  • 分区容错性(Partition tolerance):即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性或可用性的服务。

不可能三者同时满足,一般要求CA

  • CA:同时满足的CA的场景是单机部署,不要P。这就违背了分布式的初衷。
  • CP:如果要保证数据的一致性,那么每次更新都需要将全部节点的数据进行更新,更新时间较长,这必然导致可用性的降低,比如分布式数据库,如Redis、HBase等。
  • AP:如果要保证高可用,马上就要响应,就不能保证所有数据库进行同步之后再反馈,就失去了一致性。

1.3 负载均衡

当分布式部署之后,一个客户端请求来了,这个请求应该交给分布式多节点的哪个节点服务,就存在负载均衡问题了。

  • 轮询法:将请求按顺序轮流地分配到每个节点上,不关心每个节点实际的连接数和当前的系统负载。
  • 随机法:将请求随机分配到各个节点。
  • 源地址哈希法:根据客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器节点数进行取模,得到的结果便是要访问节点序号。
  • 加权轮询法:不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。
  • 最小连接数法:根据每个节点当前的连接情况,动态地选取其中当前积压连接数最少的一个节点处理当前请求,尽可能地提高后端服务的利用效率,将请求合理地分流到每一台服务器。

2 RPC

分布式的节点之间的通信可以用HTTP协议;也可以走RPC;
Remote Procedure Call(RPC)远程过程调用。是一种进程之间的通信方式,是一种思想;允许程序调用另外一个地址空间上的过程或者函数,而不用显式编码这个远程调用细节,两个核心,通讯和序列化。

3 Dubbo

一个高性能的RPC框架;
在这里插入图片描述

  • Consumer、消费者:
  • Provider、生产者:
  • Register、注册中心:
  • monitor、监控器:
  1. 生产者从容器启动;
  2. 生产者需要去注册中心登记;(初始化)
  3. 消费者去注册中心订阅;(初始化)
  4. 登记处告诉消费者可以使用了;
  5. 消费者执行调用生产者;
  6. 监视器统计;

4 微服务

微服务提倡将单一的应用程序划分成一组小的服务,每个服务都运行在其独立的自己的进程内,用轻量级的通信机制来互相沟通;

  • 优点:单一职责,每个服务都可以并发开发,独立部署,进程即服务;
  • 缺点:服务之间通信成本变高,数据一致性问题;

5 技术栈

  • 服务开发:SpringBoot、Spring、SpringMVC;
  • 服务配置与管理:Archaius、Diamond;
  • 服务注册与发现:Zookeeper;
  • 服务调用:Rest、RPC;
  • 负载均衡:Nginx;
  • 消息队列:Kafka、RabbitMQ;
  • 服务部署:Docker;
  • ……

SpringBoot专注于快速、方便的开发个体微服务,SpringCloud关注全局的服务治理框架

6 常见组合搭配

  1. Spring Cloud NetFlix
  2. Dubbo Zookeeper
  3. Spring Cloud Alibaba

7 SpringCloud架构

在这里插入图片描述

8 SpringCloud五大组件

  • 服务发现:Netflix Eureka

  • 客服端负载均衡:Netflix Ribbon

  • 断路器:Netflix Hystrix

  • 服务网关:Netflix Zuul

  • 分布式配置:Spring Cloud Config

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值