references:
- https://www.bookstack.cn/read/spring-cloud-docs/docs-index.md
- https://cloud.spring.io/spring-cloud-static/Hoxton.SR1/reference/htmlsingle/
- 它在项目中是处理什么问题
- Spring集成的一个实现分布式框架的模型,里面进一步地集成了 Alibaba, Gateway, OpenFeign 等的子模块,这些子模块都是我们在实现构建分布式框架时需要用到的
- 大概写法什么
- 对于团队有什么好处
- 有没有其他替代方案(优缺点)
- 它替代了什么老的技术,解决了老技术的什么问题 (备选)
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 网关