image.png

    references:

    1. 它在项目中是处理什么问题
      • Spring集成的一个实现分布式框架的模型,里面进一步地集成了 Alibaba, Gateway, OpenFeign 等的子模块,这些子模块都是我们在实现构建分布式框架时需要用到的
    2. 大概写法什么
    3. 对于团队有什么好处
    4. 有没有其他替代方案(优缺点)
    5. 它替代了什么老的技术,解决了老技术的什么问题 (备选)

    httpClient
    restTemplate

    服务注册就是当服务器启动时,会将自身的信息(比如服务器通讯地址等)注册到注册中心上,那么当消费者需要使用对应的服务时,就可以在服务中心获得所需要的信息。Eureka的客户端通过连接到Eureka服务端并维持心跳连接来表明自己在正常运行


    Eureka(服务注册)

    • 虽然已经停止更新,但还是稍稍了解一下吧
    • 需要在 server 端和 client 端分别添加对应的依赖包,并在 properties 设置好注册相关的参数
    • 分别在启动类添加 @EnableEurekaServer 和 @EnableEurekaClient
    • 不能与 Nacos(或者其他的服务注册的插件?)同时使用
      • nacosRegistration 和 eurekaRegistration 有冲突,估计是同一个类的 bean,那么在容器中注册的时候只能存在一个,所以就会报错
    • 使用的时候,要注意 service-url 和 default-zone

    Nginx

    • nginx - 反向代理服务器 - 请求转发(路径匹配),负载均衡,动静分离(将java动态页面的静态资源放置到不同的服务器,然后再按需调用)
    • nginx 的启动和关闭
      • 在 cmd 窗口运行命令:ngnix.exe
      • ngnix.exe -s stop
    • ngnix 实现请求转发:
      • 在 conf/nginx.conf 中配置监听的端口号和匹配路径
      • server, listen, server_name, location … …
      • 然后在前端修改为 nginx 所监听的端口

    Nacos

    • nacos 可以实现的功能:服务发现,分布式配置,消息总线
    • nacos 的使用
      • 安装:将 nacos 文件包下载下来,然后安装到合适的路径下即可,运行 bin 文件夹中的 startup 文件
      • 登陆 nacos:localhost:8848/nacos
      • 服务注册
        • 引入依赖:spring-cloud-starter-alibaba-nacos-discovery
        • 在 配置文件(xml 或者 yml 文件)中配置 nacos 地址:spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
        • 在 module 的启动类添加注解:@EnableDiscoveryClient
        • 注册成功,可以在 nacos 页面中服务列表中找到已注册的服务
        • nacos 页面中的服务名将参照配置文件中的 spring.application.name

    OpenFeign

    • 通过 OpenFeign 实现服务调用 / 服务发现
    • OpenFeign 的使用方法
      • 引入依赖包:spring-cloud-starter-openfeign
      • 在调用方 module 的启动类上添加注解 @EnableFeignClients
      • 在调用方中创建 feignClient 接口 interface
        • 该接口注解:@Component & @FeignClient( “目标api所在的服务名” )
        • 在接口中定义调用路径 -> “接口化请求调用”
        • notes:调用路径要写全路径,@PathVariable 一定要指定参数名,否则会出错
      • 在实现代码中通过调用接口中的方法来调用服务

    Hystrix 熔断器

    • 使用方法
      • 引入依赖:spring-cloud-starter-netflix-hystrix
      • 在配置文件中设定:
        • feign.hystrix.enabled=true(开启熔断机制)
        • hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds(超时时间)
      • 在调用方中创建类实现之前的 feignClient 接口,实现方法定义当出错了的时候的输出内容
      • 在 feignClient 接口的 @FeignClient 注解中加上 fallback 属性,指向之前定义的实现类

    Gateway 网关