【GZW- 微服务Spring Cloud】

本文介绍Spring Cloud Alibaba在微服务架构中的应用,包括Feign远程调用、Nacos服务注册与发现、Seata分布式事务处理等内容。还讨论了Ribbon负载均衡、Hystrix服务降级以及RocketMQ消息中间件的使用。
摘要由CSDN通过智能技术生成

spring cloud alibaba

Feign

feign注解,扫描所有的微服务模块。
举例:我们的项目 很多微服务模块,其中用了一个总行的青云文件系统的jar包,它们的jar包路径不一样,
如果想要调用它的话,就要在启动类配上 另一个jar的包路径,否则会显示服务熔断,

另外,也要加上@componentscan,扫描somponet service,否则这些接口不会被spring装到容器里
因此,也就不能使用@autwire注入到controller

nacos:

(=eureka)
英文全称 dynamic naming and cofiguratin service. 服务配置 注册 ,ps: 说是配置的动态刷新,其实有时候还是要重启DCE服务才能生效,可能时pom里没引入 spring-cloud-starter-nacos-config。

步骤:

  1. bootstrap.yml
    在代码的bootstrap.yml项目启动文件里 写上nacos的配置
    如 微服务名称、每个环境(dev sit uat prod)的 nacos服务地址、命名空间、用户名密码,
    ps:可以是动态的,后期通过JVM启动参数去动态修改;
    项目启动时(在启动类上 开启@EnableDiscoveryClient注解开启nacos服务发现功能;),会根据微服务名称 去连接nacos 找到具体的配置;启动成功,该服务 会自动注册到nacos上;

配置中心:

在pom里引入 spring-cloud-starter-nacos-config,可以实现 配置的获取 和 动态刷新。
当修改nacos某个服务的配置时,会自动刷新 获取最新的;

服务配置、注册、发现
nacos
服务调用:
feign(=alibaba的dubbo)
路由:
gateway
分布式消息:
rocketMQ
分布式事务:
seata
服务限流 熔断:
sentinel
安全认证:
spring security JWT或oauth

nacos源码:
nacos默认集成了ribbon调用;
用@LoadBalance注解;

nacos支持集群;

在这里插入图片描述

在这里插入图片描述

seata:阿里的分布式事务框架

https://blog.csdn.net/yueyue763184/article/details/128044674

为了保证 数据的原子性 一致性,保证正确。

  1. 分库分表 的跨数据库 一致性
    spring框架下的@Transactional注解 保证单一数据源增删改查的一致性,出现异常就回滚了。

但随着业务不断扩大,假如一个用户表里有1个亿的用户, 库表里塞不下数据了; 此时,分库是很常见的解决方案,塞不下的那些数据 就在另一个数据库里;
以前一个库里的事务操作,现在变成了跨数据库的事务操作。
此时@Transactional注解就失效了,这就是跨数据库分布式事务问题

  1. 跨微服务模块的 事件一致性
    如:一件事:
  2. report模块 增加企业
  3. auth模块 增加用户
    这两件事 要么同时成功,否则就同时失败;不能一半成功 一半失败;
    在这里插入图片描述

在这里插入图片描述

Ribbon 负载均衡

微服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon来实现的,包括后续我们将要介绍的Feign,它也是基于Ribbon实现的工具。
而软件负载均衡 则是 通过在服务器上安装一些 用于负载均衡功能或模块等软件 来完成请求分发工作,比如Nginx等

硬件负载均衡的设备或是软件负载均衡的软件模块都会 维护一个可用的服务端清单,通过心跳检测 来剔除故障的服务端节点 以保证清单中 都是可以正常访问的服务端节点。当客户端发送请求到负载均衡设备的时候,该设备按某种算法(比如线性轮询、按权重负载、按流量负载等)从维护的可用服务端清单中取出一台服务端端地址,然后进行转发。

hystrix 服务降级
防止由于一个微服务挂了 导致影响其他微服务不能使用;
在这里插入图片描述

RocketMQ 是阿里参考Kafka特点研发的一个队列模型的消息中间件
RocketMQ存储层算法优化、JVM与操作系统调优。更多的细节大家可以参考《万亿级数据洪峰下的分布式消息引擎》。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

使用线程池模式,需要注意如下几点:

线程数不宜过高,避免占用过多的数据库连接池 ;
需要考虑评估线程池队列的大小,以免出现内存溢出的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值