SpringCloud
2024-02-01 20:25:35 3 举报
AI智能生成
SpringCloud是一个基于SpringBoot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。SpringCloud包含了多个子项目,如:服务注册与发现(Eureka),配置中心(Config),全链路监控(Actuator)等。这些子项目可以独立使用,也可以组合使用,以构建出符合实际业务需求的微服务架构系统。SpringCloud通过提供一套完整的微服务解决方案,使得开发者可以更加专注于业务逻辑的开发,而无需过多关注底层的技术细节。
作者其他创作
大纲/内容
//进行绑定public void onApplicationEvent(WebServerInitializedEvent event) { bind(event); }
包含namespace、groupId、ip、port、临时持久、健康、服务名
//执行注册register();
通过springBoot自动装配,引入NacosDiscoveryAutoConfiguration
reqApi(UtilAndComs.nacosUrlBase + \"/instance/list\
客户端
//定时任务,每五秒检查一下心跳HealthCheckReactor.scheduleCheck(clientBeatCheckTask);
int()
//获取服务接口InstanceController.list()
服务端
ConfigService.class
配置中心
Nacos
通过SPI加载文件SpiLoader.loadPrototypeInstanceListSorted(ProcessorSlot.class);
为空就进行构建SlotChainProvider.newSlotChain();
lookProcessChain(resourceWrapper);寻找在处理链
Spring自动配置从spring.factory里面加载自动装配,注册SentinelResourceAspect
Sentinel
通过spi获取自动装配LoadBalancerAutoConfiguration
@Bean public IRule ribbonRule() { // 指定使用Nacos提供的负载均衡策略(优先调用同一集群的实例,基于随机权重) return new NacosRule(); }有需要自己写一个Rule
通过Irule接口进行选择实例
ribbon默认是懒加载,第一次调用时候才会初始化实例,开启饥饿加载
远程调用通过添加注解负载均衡@LoadBalanced(拦截器)
1.调用 通过JDK生成代理对象2.做一些整合,原生feign不支持MVC注解3.封装requestTemplate4.拦截器(校验、参数、日志)5.基于负载均衡器等发起HTTP协议
优化:HttpClient5GZIP压缩
Feign
2.代理方法执行transactionalTemplate.execute
判断你是不是开启者
是的话就通过netty去跟seata沟通,去获取全局xid
三张表 全局事务表,分支事务表
seata删除sessionseata删除全局锁对RM发起提交请求,删除udlog,RM加入队列,进行删除UNDOLOg异步提交(在启动初始化时候进行创建多种线程池) 进行删除分支信息,全局Global
4.成功进行Commit
遍历分支,判断是否是失败,如果失败就删除其余发起请求进行回滚,RM判断当前与后置镜像是否相同,如果不同判断与前置镜像是否相等,如果有后置相等进行回滚,与前置相等 不管
5.失败进行rollback
ribbon: eager‐load: enabled: true clients: mall‐order
通过spi引入全局GlobalTransactionScanner
底层基于Netty实现的,通讯执行入栈规则,去判断提交还是回滚
seata
SpringCloud
0 条评论
回复 删除
下一页