# springcloud_study **Repository Path**: aTaoInXJTU/springcloud_study ## Basic Information - **Project Name**: springcloud_study - **Description**: 记录学习 springcloud 的过程 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-10-11 - **Last Updated**: 2022-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # **spring cloud 学习** 1. 微服务是什么---**一个应用划分为多个服务,每个服务运行在独立的进程中** 2. 微服务的结构:服务注册与发现、服务消息队列、服务降级熔断、负载均衡、服务监控等等 3. 建module 改pom 写yml 主启动 业务类 4. eureka zookeeper consul 服务注册 5. ribbon + restTemplate nginx openFeign 负载均衡 6. Hystrix 服务熔断、降级 三种方案: ~~~ 1. @Component @FeignClient(value = "CLOUD-PAYMENT-HYSTRIX-SERVICE", fallback = PaymentHystrixServiceImpl.class) public interface PaymentHystrixService { @GetMapping("/payment/hystrix/ok/{id}") public String payment_ok(@PathVariable("id") Integer id); @GetMapping("/payment/hystrix/timeout/{id}") public String payment_false(@PathVariable("id") Integer id); 2. @GetMapping("/consumer/payment/hystrix/timeout/{id}") @HystrixCommand(fallbackMethod = "paymentTimeOutHandle", commandProperties = { @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "1000") }) public String payment_false(@PathVariable("id") Integer id) { return paymentHystrixService.payment_false(id); } 3. @DefaultProperties(defaultFallback = "payment_Global_fallbackMethod") 7.**微服务网关** springCloud-gateway: 异步非阻塞基于webflux的网络io **为什么要有微服务网关?** 路由转发 + 过滤器 | API网关仅仅就是不再暴露接口这么点作用吗? 生产、测试与部署的无缝衔接 客户端永远不知道真是的后台到底在访问谁 动态路由实现负载均衡 断言 + 路由 + 过滤器 8.配置中心 将部分配置文件放在git 分为客户端和服务端 消息总线rabbitmq解决动态更新 9.消息总线 消息驱动 链路跟踪(zipkin) 消息总线---所有微服务监听和消费总线 消息驱动---类似jdbc驱动,屏蔽底层差异,实现应用和消息中间件的隔离 链路跟踪与监控 寻找错误 10.nacos---服务发现、配置、管理=Eureka+Config+Bus 11.Sentinel---服务熔断限流,流量控制 流控效果---快速失败、预热(冷加载)、排队等待(超时失效)漏桶算法 漏桶算法---把请求比作水,水来了先放入桶中,并且以限定的速度出水,水溢出则拒绝服务 令牌漏桶算法---匀速向桶里放令牌,一个请求就会向桶里取令牌消耗 区别---强行限制请求速率 限制速率的同时能允许一定程度的突发传输