什么是微服务?
    之前的项目是将所有功能写在一个项目里,打成jar包或war包部署,是单体架构,单体架构的缺点:1、耦合度高,拓展成本高。
    首先微服务是一种分布式架构的方案,微服务对业务之间进行了拆分,每个业务拆分成单独的一个服务,每一个服务只负责某一个业务,也就是所说的微服务。
    服务间的调用方式有哪些?
    RestTemplate、OpenFeign、Dubbo
    什么是SpringCloud?
    SpringCloud是目前国内使用最广泛的微服务框架,SpringCloud不是某一个框架,而是解决微服务架构的一系列框架,它其中包含了很多组件
    它包括的组件如下:
    1、服务注册:
    Eureka 、Nacos、consul
    2、服务远程调用
    OpenFegin 、Dubbo
    3、服务链路监控
    Zipkin、Sleuth
    4、统一配置管理
    SpringCloudConfig、Nacos
    5、统一网关路由
    SpringCloudGateway、Zuul
    6、流控、降级、保护
    Hystix、Sentinel
    SpringCloud中的核心组件?
    注册中心:
    1、eureka 2、nacos
    负载均衡
    1、ribbon
    服务远程调用
    1、OpenFegin 2、Dubbo
    SpringBoot、SpringCloud、微服务三者间关系?
    首先SpringBoot和SpringCloud同属于Spring家族,SpringBoot使得搭建Springcloud更加的简单,而SpringCloud是实现微服务架构的框架。
    什么是注册中心?
    eureka注册中心本身也是一个服务,同时提供了负载均衡的功能
    注册中心的作用?

    2、服务发现
    **

    如何使用Eureka注册中心
    1、在父工程先新建一个maven模块
    2、引入eureka服务端依赖
    3、编写启动类、在启动类上加上@EnableEurekaServer注解
    4、在配置文件中配置服务名称、注册中心地址
    5、在具体的服务中引入Eureka客户端依赖
    6、在配置文件中配置服务名称、注册中心地址
    如何使用Nacos注册中心
    1、在父工程中引入引入SpringCloudAlibaba的依赖
    2、在服务中引入nacos-discovery依赖:
    什么是Ribbon? 作用?
    Ribbon是一种负载均衡策略,作用:可以将请求按照一定的规则算法分配到具体的服务中
    Ribbon的工作原理?
    1、RibbonLoadBalancerClient会拦截请求,获取请求中的服务名称,
    2、DynamicServerListLoadBalancer会根据服务名称去注册中心拉取服务列表
    3、eureka返回服务列表,例:locahost:8080、locahost:8081
    4、IRule利用内置负载均衡规则,从列表选择一个比如:locahost:8080、
    5、RibbonLoadBalabcerClient修改请求地址,用locahost:8080代替服务名称,然后发送真实请求
    Ribbon支持的负载均衡策略?
    RoundRobinRule:简单轮询服务列表来选择服务器。
    AvailabilityFilteringRule:对以下两种服务器进行忽略: (1)在默认情况下,这台服务器如果3次连接失败,这台服务器就会被设置为“短路”状态。短路状态将持续30秒,如果再次连接失败,短路的持续时间就会几何级地增加。 (2)并发数过高的服务器。如果一个服务器的并发连接数过高,配置了AvailabilityFilteringRule规则的客户端也会将其忽略。并发连接数的上限,可以由客户端的..ActiveConnectionsLimit属性进行配置。
    WeightedResponseTimeRule:为每一个服务器赋予一个权重值。服务器响应时间越长,这个服务器的权重就越小。这个规则会随机选择服务器,这个权重值会影响服务器的选择。
    ZoneAvoidanceRule:以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询。
    BestAvailableRule:忽略那些短路的服务器,并选择并发数较低的服务器。
    RandomRule:随机选择一个可用的服务器。
    RetryRule:重试机制的选择逻辑
    Ribbon如何配置修改负载均衡策略?
    第一种、
    在配置类里定义一个新的IRule,交给ioc容器管理
    第二种、
    在配置类里配置:
    userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
    ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则
    Ribbon如何设置饥饿加载?
    在配置类里:
    ribbon:
    eager-load:

    clients: userservice
    Nacos和Eureka的区别和共同点:
    共同点:
    两者都具有服务注册、服务发现、健康检测等功能
    区别:nacos会把服务提供者划分为临时实例和非临时实例
    而临时实例是服务提供者像注册中心发送心跳、当服务提供者宕机,注册中心会从列表中剔除。
    非临时实例是注册中心主动发请求询问服务提供者的健康状态,若服务提供者宕机了,注册中心也不会从列表中剔除。