1.什么是微服务?

一个大的项目,由多个微服务组成,每个服务都有单一的业务职责,每个服务都要相对独立,每个服务都要向外暴露rest风格的服务接口,每个服务都访问各自的数据库,并且都可以单独的部署

2.服务间的调用方式有哪些?

RPC:
特点:并发能力强
代表框架:dubbo
HTTP:
特点:更轻量,更灵活
代表框架:HttpClient、UrlConnection、OkClient
spring提供了整合:RestTemplate

3:什么是SpringCloud?

SpringCloud是目前国内使用最广泛的微服务框架,集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配

4.SpringCloud中的核心组件?

服务注册中心: eureka nacos Day01
负载均衡: ribbon Day01
熔断器: hystrix、sentinel
服务调用: feign
API网关: gateway
配置中心: nacos

5.SpringBoot、SpringCloud、微服务三者间关系?
SpringCloud是集成微服务功能组件的一款框架,并且SpringCloud底层是依赖于SpringBoot的自动装配原理,但是SpringCloud与SpringBoot二者之间有版本兼容关系

6.什么是注册中心?

注册中心是实现服务管理的核心组件,主要用来存储服务信息,提供了服务和服务地址的映射关系

7.注册中心的作用?

在配置注册中心后,每个服务在调用另外服务的时候,只需要知道服务名称就可以,而注册中心会通过名称获取具体的服务地址进行调用.
同时注册中心分为服务注册和服务发现

8.如何使用Eureka注册中心

一:

搭建eureka-server

1): 创建独立的eureka-server服务
2): 引入eureka依赖

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  4. </dependency>

3):编写启动类
4):编写配置文件:

server:
  port: 10086
spring:
  application:
    name: eureka-server
eureka:
  client:
    service-url: 
      defaultZone: http://127.0.0.1:10086/eureka

5):启动:
http://127.0.0.1:10086

二:服务注册

1)引入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2)配置文件

spring:
  application:
    name: userservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

3)启动多个user-service实例

三:服务发现

1)引入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2)配置文件

spring:
  application:
    name: orderservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

3):服务拉取和负载均衡
@LoadBalanced
修改service方法:
image.png

9.如何使用Nacos注册中心

服务注册到nacos

1) 引入依赖(版本锁定)

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.6.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

在每个服务中分别引入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2)配置nacos地址

spring:
  cloud:
    nacos:
      server-addr: localhost:8848

10.什么是Ribbon? 作用?

Ribbon是一个组件
作用:为我们实现了负载均衡的功能

11.Ribbon的工作原理?

SpringCloudRibbon底层其实就是采用了一个拦截器,拦截了客户端所发出的请求,RibbonLoadBalancerClient会从请求的url中获取服务名称,DynamicServerListLoadBalancer
会根据获取的服务名称获取去eureka中拉取服务列表,而Irule利用其内置的负载均衡规则,从服务列表中选取一个地址.

12.Ribbon支持的负载均衡策略?

Irule中定义了10中不通的负载均衡策略,有随机获取,轮询获取,以区域可用的服务器为基础进行服务器的选择,权重获取,等

13.Ribbon如何配置修改负载均衡策略?

1):代码方式:定义一个新的IRule

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

2):配置文件方式:

userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则

14:Ribbon如何设置饥饿加载?

Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。
而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载

ribbon:
  eager-load:
    enabled: true
    clients: userservice