SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式







数组

1)引入依赖
在cloud-demo父工程的pom文件中的<dependencyManagement>
中引入SpringCloudAlibaba的依赖:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.6.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency>
然后在user-service和order-service中的pom文件中引入nacos-discovery依赖:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
nacos 分级

cluster-name 群集名称

com.alibaba.cLoud.nacos.ribbon.NacosRuLe
先本地->随机

不同空间无法访问!!服务不可见
临时示例 :心跳,被动
非临时示例: 只标记不健康 ,主动
主动推送变更给消费者


短暂的


CAP:C(一致性),A(可用性),P(分区容错)



feign配置


Feign的优化:
1.日志级别尽量用basic
2.使用HttpClient或OKHttp代替URLConnection
①引入feign-httpClient依赖
②配置文件开启httpClient功能,设置连接池参数

通常不建议在服务器和客户机之间共享接口。这会引入紧耦合,并且实际上也不能与当前形式的SpringMVC一起工作(方法参数映射不是继承的)。





部分

所有



@order(-1)

多实现,单继承



daemon 守护进程


流控模式

流控效果

排队等待 流量整形

记得加注解


记得先注入bean,返回的是userclient

在启动类里添加@ComponentScan来扫描feign的包

线程池隔离则是不使用请求本身的线程,它会把请求放到自己的线程池里面去调用其他服务,同时也就实现了异步调用







持久化

cap 理论
cap 理论
- 节点数据一致
- 用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝
- 分区: 因为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接,形成独立分区。容错:在集群出现分区时,整个系统也要持续对外提供服务
p 一定会出现,cp or ap
es cp










零侵入 强一致vs最终一致

脏写问题

全局锁---行锁










AOF全称为Append Only File(追加文件)。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。

bgrewriteaof


offset 第一次全量




选举主节点







故障转移

手动故障转移





缓存预热 InitializingBean




数据库binlog




总结



