springcloud alibaba微服务体系的组成:
服务发现 - Nacos
服务调用 - OpenFeign/Dubbo/gRPC
路由网关 - Gateway
配置中心 - Nacos
消息驱动 - RocketMQ
流量控制 - Sentinel
分布式事务 - SEATA
分布式任务调度 - SchedulerX
分布式存储 - OSS
NACOS作用:
服务发现和服务健康检测
动态配置服务
动态dns服务
服务及元数据管理

微服务 外部服务 内部服务区别 微服务rbac_spring cloud alibaba


设置mybatis驼峰命名自动转换规则:

微服务 外部服务 内部服务区别 微服务rbac_spring cloud alibaba_02


Feign和OpenFeign:

Feign是一个开源声明式的WebService客户端,用于简化服务通信

Feign采用接口+注解方式开发,屏蔽了网络通信的细节

OpenFeign是springcloud对Feign的加强,用于简化Feign的开发

其本身是一个http协议的通讯工具包调用过程:

微服务 外部服务 内部服务区别 微服务rbac_spring cloud alibaba_03


Ribben:

Ribben是SpringCloud自带组件,用于实现微服务通信的客户端负载均衡

微服务 外部服务 内部服务区别 微服务rbac_spring boot_04


Sentinel:

下载Sentinel jar包并运行,访问localhost:8080 Sentinel仪表盘对服务进行操作

微服务 外部服务 内部服务区别 微服务rbac_spring cloud alibaba_05


流控规则:

流控模式:

微服务 外部服务 内部服务区别 微服务rbac_java_06


微服务 外部服务 内部服务区别 微服务rbac_spring boot_07


微服务 外部服务 内部服务区别 微服务rbac_spring cloud alibaba_08

流控效果:

微服务 外部服务 内部服务区别 微服务rbac_java_09


微服务 外部服务 内部服务区别 微服务rbac_spring cloud alibaba_10

微服务 外部服务 内部服务区别 微服务rbac_微服务 外部服务 内部服务区别_11


熔断机制:

微服务 外部服务 内部服务区别 微服务rbac_spring cloud alibaba_12


熔断策略:

微服务 外部服务 内部服务区别 微服务rbac_spring cloud alibaba_13


微服务 外部服务 内部服务区别 微服务rbac_微服务 外部服务 内部服务区别_14


微服务 外部服务 内部服务区别 微服务rbac_微服务 外部服务 内部服务区别_15


Sentinel通信原理:

微服务 外部服务 内部服务区别 微服务rbac_spring cloud alibaba_16


通信的特点:

微服务 外部服务 内部服务区别 微服务rbac_spring cloud alibaba_17


OpenFeign整合Sentinel:

自定义熔断或限流触发内容:

微服务 外部服务 内部服务区别 微服务rbac_微服务_18


指定fallbackFactory熔断或限流触发类

微服务 外部服务 内部服务区别 微服务rbac_微服务_19


限流熔断类型:

微服务 外部服务 内部服务区别 微服务rbac_spring cloud alibaba_20


Nacos和Sentinel持久化:

当服务重启后,可视化界面设置的配置就失效了,原因是默认在当前的主机内存中对规则进行的管理,可以在nacos控制台的配置管理>新建配置创建规则:

微服务 外部服务 内部服务区别 微服务rbac_spring boot_21


上图配置的json内容对呀sentinel仪表盘中新建流控规则的各个属性和属性值,配置完成后需要添加maven依赖,在yml配置文件中进行绑定,application.yml文件如下:



com.alibaba.csp

sentinel-datasource-nacos


微服务 外部服务 内部服务区别 微服务rbac_微服务 外部服务 内部服务区别_22

微服务 外部服务 内部服务区别 微服务rbac_spring boot_23


Gateway微服务网关:

微服务 外部服务 内部服务区别 微服务rbac_微服务_24


创建gateway项目,yml配置如下:

微服务 外部服务 内部服务区别 微服务rbac_spring boot_25

启动项目,请求http://localhost/服务名/服务路由地址 访问具体的服务

路由规则设置

微服务 外部服务 内部服务区别 微服务rbac_spring boot_26


跨域设置

微服务 外部服务 内部服务区别 微服务rbac_微服务 外部服务 内部服务区别_27

基于JJWT实现微服务JWT授权:

创建认证中心服务,引入JJWT依赖

微服务 外部服务 内部服务区别 微服务rbac_spring boot_28


yml配置文件:

微服务 外部服务 内部服务区别 微服务rbac_微服务 外部服务 内部服务区别_29


模拟登陆返回token信息:

微服务 外部服务 内部服务区别 微服务rbac_微服务_30


自定义注解和拦截器组合验证token:

定义自定义注解:

微服务 外部服务 内部服务区别 微服务rbac_spring boot_31


定义拦截器配置:

微服务 外部服务 内部服务区别 微服务rbac_spring cloud alibaba_32


拦截器进行校验:

微服务 外部服务 内部服务区别 微服务rbac_微服务_33


微服务 外部服务 内部服务区别 微服务rbac_spring cloud alibaba_34


使用注解:

微服务 外部服务 内部服务区别 微服务rbac_spring cloud alibaba_35


nacos配置中心:

引入依赖



com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-config

${spring-nacos.version}


在nacos注册中心配置列表新建一个配置,配置内容为application.yml文件内容:

微服务 外部服务 内部服务区别 微服务rbac_java_36


删掉项目中的配置文件,创建一个bootstrap.yml引导文件:

微服务 外部服务 内部服务区别 微服务rbac_spring boot_37


nacos应用的配置共享:

微服务 外部服务 内部服务区别 微服务rbac_spring cloud alibaba_38


在bootstrap.yml文件中添加如下配置

微服务 外部服务 内部服务区别 微服务rbac_微服务_39


在nacos注册中心配置列表新建一个配置,配置内容为common-dev.yml文件,配置需要共享的配置内容。

**配置优先级为:服务名-{profiles}.yml > 服务名.yml > 全局共享.yml**

自动刷新配置:

微服务 外部服务 内部服务区别 微服务rbac_微服务_40