1. 什么是微服务?
    • 微服务是一种分布式架构分案,可以由多个服务组成,各个服务可以独立部署,降低耦合
    1. 服务间的调用方式有哪些?
    • RPC
      • 并发能力强
      • 代表框架: dubbo
    • HTTP
      • 灵活
      • 代表框架: HttpClient、UrlConnection、OkClient
      • Spring提供了整合: RestTemplate
    1. 什么是SpringCloud?
    • 微服务的一站式解决方案
    1. SpringCloud中的核心组件?
    • 服务注册中心 eureka、nacos
    • 负载均衡 ribbon
    • 熔断器 hystrix、sentinel
    • 服务调用 feign
    • API网关 gateway
    • 配置中心 nacos
    1. SpringBoot、SpringCloud、微服务三者间关系?
    • SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开SpringBoot,属于依赖的关系。SpringCloud+SpringBoot 实现微服务开发,SpringCloud具备微服务开发的核心技术。
    • image.png
    1. 什么是注册中心?
    • 注册各个服务的实例信息,决定业务服务是否正常调用
    1. 注册中心的作用?
    • 注册服务提供者的信息
    • 服务消费者从注册中心调用服务提供者的接口
    • 服务提供者会给注册中心发送心跳请求,报告健康状态
    1. 如何使用Eureka注册中心
    • 引入eureka-server依赖
    • 添加@EnableEurekaServer
    • 在application.yml中配置eureka地址
    1. 如何使用Nacos注册中心
    • 在cloud-demo父工程中添加spring-cloud-alilbaba的管理依赖

      1. <dependency>
      2. <groupId>com.alibaba.cloud</groupId>
      3. <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.6.RELEASE</version>
      4. <type>pom</type>
      5. <scope>import</scope>
      6. </dependency>
    • 注释掉order-service和user-service中原有的eureka依赖

    • 添加nacos的客户端依赖 ```java
      com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
    1. - 修改user-service&order-service中的application.yml文件,注释eureka地址,添加nacos地址:
    2. ```yaml
    3. spring:
    4. cloud:
    5. nacos:
    6. server-addr: localhost:8848
    • 重启微服务后,登录nacos管理页面,可以看到微服务信息
    • image.png
    1. 什么是Ribbon? 作用?
    • Srping Cloud Ribbon 是基于 Netflix Ribbon实现的一套客户端负载均衡的工具。
    • 作用:实现负载均衡调用
    1. Ribbon的工作原理?
    • 请求被LoadBalancerInterceptor拦截
    • 获取uri中的服务名称
    • 交给RibbonLoadBalanceClient的对象,根据服务名称获取服务列表,保存DynamicServerListLoadBalancer
    • 交给IRule,利用负载均衡规则选择实例
    • 利用实例的ip和端口替换url的服务名称,发起请求
    • image.png
    1. Ribbon支持的负载均衡策略?
    • image.png
    1. Ribbon如何配置修改负载均衡策略?
    • 通过定义IRule实现可以修改负载均衡

      1.代码方式:

      @Bean
      public IRule randomRule(){
        return new RandomRule();
      }
      

      2.代码方式:配置文件方式

      userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
      ribbon:
        NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则
      
    1. Ribbon如何设置饥饿加载?
    • 通过开启饥饿加载配置
      ribbon:
      eager-load:
        enabled: true
        clients: userservice