1.配置中心的作用

  1. Nacos配置中心一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新。

2.nacos如何保证高可用

 首先可以先搭建多个nacos配置中心,数据从mysql中获取,接着部署一个Nginx,利用Nginx的反向代理加上负载均衡的功能,把请求分发给多个nacos,实现nacos的高可用.

3.nacos如何动态变更配置

  • 基于@Value
    • 在@Value注入的变量所在类上添加注解@RefreshScope
  • 基于@ConfigurationProperties
    • 需要自己手写一个配置类 ```java @Component @Data @ConfigurationProperties(prefix = “pattern”) //前缀是pattern,该注解默认就是热更新 public class PatternProperties { private String dateformat; }

@Autowired private PatternProperties patternProperties;

@GetMapping("now")
public String now(){
    return LocalDateTime.now().format(DateTimeFormatter.ofPattern(patternProperties.getDateformat()));
}
<a name="nQh1U"></a>
### 4.nacos如何实现多环境配置
    nacos默认读取两个文件

   - 服务名-环境.后缀名
   - 服务名.后缀名 (多环境共享)

    **优先级**

   - 环境独享的配置 > 多环境共享的 > 服务本地的
<a name="U6mNZ"></a>
### 5.nginx介绍
反向代理服务器:在服务器端接收客户端的请求,然后把请求分发给具体的服务器进行处理,然后再将服务器的响应结果反馈给客户端。Nginx就是其中的一种反向代理服务器软件。
<a name="Na41q"></a>
### 6.feign的介绍及作用?
    Feign是一个声明式的http客户端,其作用就是帮助我们优雅的实现http请求的发送,可以避免代码可读性差,编程体验不统一,参数复杂URL难以维护等问题.
<a name="cbSi6"></a>
### 7.feign的基本工作原理?

   - 首先通过@EnableFeignCleints注解开启FeignCleint
   - 根据Feign的规则实现接口,并加@FeignCleint注解
   - 程序启动后,会进行包扫描,扫描所有的@ FeignCleint的注解的类,并将这些信息注入到ioc容器中。
   - 当接口的方法被调用,通过jdk的代理,来生成具体的RequesTemplate
   - RequesTemplate在生成Request
   - Request交给Client去处理,其中Client可以是HttpUrlConnection、HttpClient也可以是Okhttp
   - 最后Client被封装到LoadBalanceClient类,这个类结合类Ribbon做到了负载均衡。
<a name="excEy"></a>
### 8.feign的性能优化?

   - 使用ApacheHttpClient(支持连接池)代替默认的URLConnection
      - 引依赖,加配置
   - 日志,最好basic、none
<a name="gyiDq"></a>
### 9.gateway网关的介绍及作用?
    Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。

   - 作用
      - 请求路由、负载均衡
      - 身份认证、权限校验
      - 请求限流
<a name="NSjmg"></a>
### 10.gateway网关中路由的作用?
      路由是构建网关的基本模块, 他由ID,目标URI,一系列的断言和过滤器组成,如果断言为 true 则匹配该路由,以达到请求转发的目的.
<a name="eiiqD"></a>
### 11.如何配置一个路由?

- **路由规则**
   - id  路由的唯一标示
   - uri   路由的目的地:lb://userserivce
   - predicates   断言,路由的匹配条件,符合了才做路由
   - filters   过滤器可选的
```java
server:
  port: 10010 # 网关端口
spring:
  application:
    name: gateway # 服务名称
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
    gateway:
      routes: # 网关路由配置
        - id: user-service # 路由id,自定义,只要唯一即可
          # uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址
          uri: lb://userservice # 路由的目标地址 lb就是负载均衡,后面跟服务名称
          predicates: # 路由断言,也就是判断请求是否符合路由规则的条件
            - Path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求

12.gateway中断言的作用?

每一个Predicate的使用,可以理解为:当满足这种条件后才会被转发,如果是多个,那就是都满足的情况下被转发。