分布式笔记

分布式系统

  • 集中式系统:单体应用,所有的程序、功能、模块都集中到一个项目中,部署在一台服务器上。
  • 分布式系统:把程序、功能拆成不同的子系统,部署在多台服务器上,每个应该专职与某一方面的功能,各应用相互调用完成业务。

微服务系统

微服务架构属于分布式架构的范畴。

优缺点

  • 每个服务独立开发和部署,各自更新不影响其他服务。
  • 更准确的监控服务的资源消耗,进行性能容量评估
  • 减少代码冲突、代码的重复,逻辑流程更加清晰,维护扩展更加容易。
  • 可以使用不同编程语言进行开发。
  • 增加了系统维护和部署的难度;增加了集成测试复杂度;数据的一致性问题,服务之间的通信成本。

RPC和Restful

CAP原理

** A——可用性**:保证服务可用,多节点
** C——一致性**:多节点数据一致
** P——分区容忍性**:是否可以将数据存到多个地方
不可能同时满足C,A,P;
分为AC(放弃分区容忍,物理数据库),
AP(可以短暂允许数据不一致,NoSql数据库),
CP(放弃可用性,短暂不可用)
其中zookeeper 采取的是CP:放弃可用性

SpringCloud

是什么

  • 一站式的开发分布式系统的框架
  • 为开发人员提供了快速构建分布式系统中一些常见模式的工具
  • 成为目前进行微服务架构的优先选择工具
  • 利用SpringBoot的开发便利性巧妙的简化了分布式系统基础设施的开发

架构

  • Service Provider:服务提供方
  • Service Consumer:服务消费方
  • Eureka Server:服务注册中心和服务发现中心
    • 服务注册:将服务所在主机、端口、版本号、通信协议等信息登记到注册中心上。
    • 服务发现:服务消费者向注册中心请求已登记的服务列表,然后得到某个服务的一些信息,实现对具体服务的调用。
    • Eureka、Consul、Zookeeper

Eureka和Zookeeper

  • CAP理论:一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。分区容错性是分布式系统必须满足的。so
  • Zookeeper保证CP:节点挂掉重新leader选举,在此期间整个Zookeeper集群都不可用,注册服务瘫痪。
  • Eureka保证AP:某些节点挂掉不会影响正常工作,剩余节点依然可以提供注册和查询服务(可用性),但信息不一定是最新的(不保证一致性)

Eureka注册中心

  • 服务的发现:由Eureka客户端实现。是一个Java客户端,用来连接Eureka服务端,与服务端进行交互、负载均衡,服务的故障切换等。
  • 服务的消费:由Ribbon实现。是一个基于 HTTP 和 TCP 的客户端负载均衡器。

服务注册中心Eureka

Eureka注册中心高可用集群

将自己作为服务向其他服务注册中心注册自己,形成一组互相注册的服务注册中心,实现服务清单的互相同步,达到高可用效果。

Eureka服务注册中心自我保护机制

  • 没有自我保护:Eureka Server长时间没有收到某个微服务的实例心跳(可能是网络分区故障)就会注销该微服务。但这个微服务其实本身是正常的,不应该被注销。
  • 自我保护模式:Eureka Server短时间丢失过多客户端时(可能是网络分区故障),会把微服务进行保护,不会注销任何微服务。
  • 宁可保留所有微服务(健康的和不健康的),也不盲目注销任何健康的微服务。

客户端负载均衡Ribbon

Ribbon

  • Ribbon 是 Netflix 发布的开源项目,主要功能是提供客户端的软件负载均衡算法,是一个基于 HTTP 和 TCP 的客户端负载均衡工具。
  • Spring Cloud 对 Ribbon 做了二次封装,可以让我们使用 RestTemplate 的服务请求,自动转换成客户端负载均衡的服务调用。

客户端负载均衡

所有客户端节点下的服务端清单,需要自己从服务注册中心上获取

使用客户端负载均衡

  • 启动多个服务提供者实例并注册到一个服务注册中心或是服务注册中心集群。
  • 服务消费者通过被@LoadBalanced 注解修饰过的RestTemplate 来调用服务提供者。

RestTemplate

从服务消费端去调用服务提供者的服务的时候,使用了一个极其方便的对象叫RestTemplate

基于Rest的四种情况:

  • GET 请求 --查询数据
  • POST 请求 –添加数据
  • PUT 请求 – 修改数据
  • DELETE 请求 –删除数据

服务熔断Hystrix

Hystrix

一种服务保护机制:当被调用方没有响应,调用方直接返回一个错误响应即可,而不是长时间的等待,这样避免调用时因为等待而线程一直得不到释放,避免故障在分布式系统间蔓延;

Hystrix Dashboard 仪盘表

Hystrix 仪表盘主要用来监控 Hystrix 的实时运行状态,通过它我们可以看到 Hystrix 的各项指标信息,从而快速发现系统中存在的问题进而解决它。

声明式服务消费Feign

Feign 是 Netflix 公司开发的一个声明式的 REST 调用客户端。
Spring Cloud Feign对 Ribbon 负载均衡、Hystrix 服务熔断进行简化,在其基础上进行了进一步的封装,在配置上大大简化了开发工作,同时还提供了一种声明式的 Web 服务客户端定义方式。

API网关Zuul

类似安检站,所有外部的请求都需要经过它的调度与过滤,然后 API 网关来实现请求路由、负载均衡、权限验证等功能;可以实现对请求的过滤。

Spring Cloud Config

是什么

分布式配置中心:提供了对各个分布式项目配置文件的统一管理支持。

  • Server:提供配置文件的存储,,以接口的形式将配置文件的内容提供出去
  • Client:通过接口获取数据,并依据此数据初始化自己的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值