SpringCloud

一、微服务

SpringCloud_第1张图片

   微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。

因此,可以认为微服务是一种经过良好架构设计的分布式架构方案

二、SpringCloud

1、SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud。

2、SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。

1、常用的springcloud组件

SpringCloud_第2张图片

  • Eureka、Nacos:注册中心
  • Zuul、Gateway:网关
  • Ribbon:负载均衡
  • Feign:服务调用
  • Hystrix或Resilience4j:熔断器

SpringCloud底层是依赖于SpringBoot的,并且有版本的兼容关系,如下:

SpringCloud_第3张图片

2、总结

  • 单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统

  • 分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝

  • 微服务:一种良好的分布式架构方案

    ①优点:拆分粒度更小、服务更独立、耦合度更低

    ②缺点:架构非常复杂,运维、监控、部署难度提高

  • SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件

三、微服务远程调用--RestTemplate

1、首先在启动类中注册RestTemplate的一个Bean对象

  @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

2、将此方法注入到需要远程调用的service处

四、Eureka注册中心

1、Eureka的结构和作用

SpringCloud_第4张图片

常问问题:

  注册中心的工作原理? 为什么引入注册中心之后,就可以使用服务名代警ip和端口进行访问了?

注册中心主要有三种角色:

  • 服务提供者(RPC Server):在启动时,向 注册中心 注册自身服务,并向 注册中心 定期发送心跳汇报存活状态。

  • 服务消费者(RPC Client):在启动时,向 注册中心 订阅服务,把 注册中心 返回的服务节点列表缓存在本地内存中,并与 RPC Sever 建立连接。

  • 服务注册中心(Registry):用于保存 提供者 的注册信息,当 提供者 节点发生变更时,注册中心  会同步变更,消费者 感知后会刷新本地 内存中缓存的服务节点列表。

最后,消费者 从本地缓存的服务节点列表中,基于负载均衡算法选择一台 提供者 发起调用。

SpringCloud_第5张图片

 

五、Ribbon负载均衡

SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。

SpringCloud_第6张图片

SpringCloud_第7张图片 

  • 拦截我们的RestTemplate请求http://userservice/user/1

  • RibbonLoadBalancerClient会从请求url中获取服务名称,也就是user-service

  • DynamicServerListLoadBalancer根据user-service到eureka拉取服务列表

  • eureka返回列表,localhost:8081、localhost:8082

  • IRule利用内置负载均衡规则,从列表中选择一个,例如localhost:8081

  • RibbonLoadBalancerClient修改请求地址,用localhost:8081替代userservice,得到http://localhost:8081/user/1,发起真实请求

 

你可能感兴趣的:(笔记)