- 整分部集:整个项目是个分布式,其组成应用(所在节点)可能是集群(大分小集)
分布式的每个节点(每个服务器),都可以做集群;而集群不一定是分布式的。
分布式:一个业务一个机器(节点)
集群:一个业务多台机器!+ 负载均衡服务器
分布式是指通过网络连接的多个组件,通过交换信息协作而形成的系统。而集群,是指同一种组件的多个实例,形成的逻辑上的整体。
关键在于是否通过交换信息的方式进行协作。
集群每一台服务器实现的功能没有什么差别。分布式每一台实现的功能是有差异的
-
远程调用 http+json
-
负载均衡(轮询 / 最小连接/ 散列)
-
服务中心 注册/发现
-
配置中心 几百个机器手动太麻烦了
-
熔断降级 一个应用故障连累一条线服务,阻塞,请求积压 -> 资源耗尽–雪崩。
熔断:某被调用服务失败频率高,开启短路保护机制,不再请求调用。返回默认数据
降级(运维期间?): 高峰期,资源紧张,让非核心业务降级运行。不处理,或简单处理(抛异常,返回NULL....)
- API网关:过滤 控制
- 目录挂载:快捷方式
- 技术搭配
SpringCloudAlibaba
nacos注册配置
Sentinel服务容错
原Fescar开源->Seata分布式事务解决方案
SpringCloud
Ribbon负载均衡
Feign声明式HTTP客户端(远程调用服务)
Gataway
Sleuth调用链监控
10.版本匹配
Spring Cloud 2020.0.0 版本需要依赖 Spring Boot 2.4.1
SpringCloudAlibaba –
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2.2.3.RELEASE
https://blog.csdn.net/youanyyou/article/details/111624864
服务要添加nacos依赖
安装并启动注册中心服务器nacos/nacos
配置注册中心地址spring.cloud.nacos.config.server-addr=127.0.0.1:8848
@EnableDiscoveryClient 服务开启客户端才能注册(开启服务注册发现功能)
配置服务命名才能识别application:name: gulimall-coupon
远程调用OpenFeign测试注册中心能不能发现和调用
谁引用引用依赖-谁具有引用具有调用别人服务的能力
被调用方提供访问路径
调用方引入,编写接口,需要远程服务名,请求路径
@FeignClient(“gulimall-coupon”)
public interface CouponFeignService {
被调用的方法完整签名
}
开启feign远程调用功能@EnableFeignClients
{“msg”:“success”,“code”:0,“优惠券”:[{“id”:null,“couponType”:null,“couponImg”:null,“couponName”:“满100减50”,“num”:null,“amount”:null,“perLimit”:null,“minPoint”:null,“startTime”:null,“endTime”:null,“useType”:null,“note”:null,“publishCount”:null,“useCount”:null,“receiveCount”:null,“enableStartTime”:null,“enableEndTime”:null,“code”:null,“memberLevel”:null,“publish”:null}],“member”:{“id”:null,“levelId”:null,“username”:null,“password”:null,“nickname”:“塔吉克”,“mobile”:null,“email”:null,“header”:null,“gender”:null,“birth”:null,“city”:null,“job”:null,“sign”:null,“sourceType”:null,“integration”:null,“growth”:null,“status”:null,“createTime”:null}}