springcloud

SpringCloud简介与5大常用组件

服务发现-Netflix Eureka

SpringCloud之Eureka注册中心原理及其搭建

客服端负载均衡—Netflix Ribbon
  1. Ribbon详解
  • 核心:服务发现,服务选择规则,服务监听
  • 主要组件:ServerList(获取可用地址), ServerListFilter(过滤), IRule(负载均衡规则)

用处

  • RestTemplate(@LoadBalanced)
  • Feign
  • Zuul
  1. Http和RPC
  2. SpringCloud中服务间两种restful调用方式

RestTemplate

Feign

  • Feign设计原理
  • 声明式REST客户端(伪RPC,感觉上是本地调用)
  • 采用基于接口的注解
分布式配置——Spring Cloud Config

why

  • 方便维护
  • 配置内容的安全与权限
  • 更新配置项目无需重启

配置文件bootstrap与application的作用以及区别

SpringCloud Bus自动刷新配置

  • 引入spring-cloud-starter-bus-amqp
  • 使用消息队列机制(RabbitMQ)
  • github配置webhooks触发(借助natapp将本地地址映射成网络地址)

RabbitMQ

  • RabbitMQ应用
  • 商品 —(库存变换)— 消息队列 —(库存变化)— 订单

product(在减库存的同时将消息写入mq)

  • private AmqpTemplate amqpTemplate;
  • amqpTemplate.convertAndSend(“productInfo”, JsonUtil.toJson(productInfoOutputList));

order(接收消,存储到redis中)

  • @RabbitListener(queuesToDeclare = @Queue(“productInfo”))
  • stringRedisTemplate.opsForValue().set(String.format(PRODUCT_STOCK_TEMPLATE,
    productInfoOutput.getProductId()),String.valueOf(productInfoOutput.getProductStock()));

同步流程

  1. 查询商品信息(调用商品服务)
  2. 计算总价(生成订单详情)
  3. 商品服务扣库存(调用商品服务)
  4. 订单入库(生成订单)

异步扣库存

  1. 库存在redis中保存
  2. 收到请求后,redis判断是否库存充足,减掉redis中库存
  3. 订单服务创建订单写入数据库,并发送消息
  4. 如果商品服务接收消息,扣库存失败,回滚redis数据
服务网关——Netflix Zuul
  • 设置cookie sensitiveHeaders:

高可用

  • 多个Zuul节点注册到Eurake Server
  • Nginx和Zuul混搭
  • 应用

典型应用场景

  • 前置(Pre):限流; 鉴权; 参数校验调整
  • 后置(Post):统计; 日志

应用实例–权限校验(过滤器 )

  • /order/create 只能买家访问
  • /order/finish 只能卖家访问
  • /product/list 都可访问

应用实例–跨域设置

断路器——Netflix Hystrix
  • 功能

服务降级(优先核心服务,非核心服务不可用或弱可用)

  • 通过HystrixCommand注解指定
  • fallbackMethod(回退函数)中具体实现降级逻辑

服务熔断

  • @HystrixCommand(commandProperties = {
  • @HystrixProperty(name = “circuitBreaker.enabled”, value = “true”), //设置熔断
  • @HystrixProperty(name = “circuitBreaker.requestVolumeThreshold”, value = “10”), //请求数达到后才计算
  • @HystrixProperty(name = “circuitBreaker.sleepWindowInMilliseconds”, value = “10000”), //休眠时间窗(熔断器open状态与half close状态之间的间隔,此间隔内,降级逻辑为主逻辑,此间隔后,将释放请求到原来的主逻辑上,如果可以通过,关闭熔断)
  • @HystrixProperty(name = “circuitBreaker.errorThresholdPercentage”, value = “60”), //错误率(熔断器打开的条件)
  • })

依赖隔离
监控(Hystrix Dashboard)

Spring Cloud是一个用于构建分布式系统的开发工具集合。它提供了一些常用的组件和框架,包括服务注册和发现、负载均衡、断路器、分布式配置等等。在使用Spring Cloud时,有一些常见的错误和注意事项需要注意。 首先,关于Spring Boot和Spring Cloud版本对应错误。在使用Spring Cloud时,需要确保Spring Boot和Spring Cloud的版本兼容。不同版本之间可能存在依赖冲突或不兼容的情况,因此需要根据官方文档或者相关文档来选择合适的版本。 另外,Spring Cloud Config是一个用于集管理和动态获取配置的工具。它支持从Git、SVN或本地文件系统获取配置文件,并提供了服务器和客户端支持。你可以通过官方使用明文档了解更多关于Spring Cloud Config的详细信息。 此外,关于选择使用Nacos还是Eureka作为服务注册和发现组件的问题。Nacos是一个功能更强大的服务注册和发现组件,它整合了Spring Cloud Eureka、Spring Cloud Config和Spring Cloud Bus的功能。使用Nacos可以实现配置的心动态刷新,而不需要为配置心新增集群或使用消息队列。另一方面,Eureka是Spring Cloud原生全家桶的一部分,相对来更加稳定一些。选择使用哪个组件需要根据具体的需求和项目特点来决定。 综上所述,Spring Cloud是一个用于构建分布式系统的开发工具集合,它提供了一些常用的组件和框架。在使用Spring Cloud时,需要注意Spring Boot和Spring Cloud版本的兼容性,并可以使用Spring Cloud Config来动态获取配置。同时,可以选择使用Nacos或Eureka作为服务注册和发现组件,具体选择需要根据项目需求来决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值