Spring Cloud Alibaba 使用手册
2022-03-09 16:21:24 3 举报
AI智能生成
Spring Cloud Alibaba 使用手册
作者其他创作
大纲/内容
微服务注册与发现Nacos
Nacos Server 注册中心安装
Nacos Client之服务提供者注册
添加spring-cloud-starter-alibaba-nacos-discovery依赖
配置
主启动类添加@EnableDiscoveryClient
Nacos Client之服务消费者注册
添加spring-cloud-starter-alibaba-nacos-discovery依赖
配置
主启动类添加@EnableDiscoveryClient
测试微服务调用
使用loadBalancerClient和RestTemplate
微服务配置中心Nacos
Spring Cloud Alibaba整合Nacos Config
pom
添加bootstrap.properties
测试
配置中心准备配置
测试微服务是否使用配置中心的配置
Config相关配置
支持配置的动态更新
支持profile粒度的配置
spring.profiles.active=develop
配置中心配置
测试
支持自定义 namespace 的配置
支持自定义 Group 的配置
支持自定义扩展的 Data Id 配置
完整配置
通过自定义扩展的 Data Id 配置,既可以解决多个应用间配置共享的问题,又可以支持一个应用有多个配置文件
在多个应用间配置共享的Data Id
配置的优先级
@RefreshScope 动态感知配置
微服务客户端负载均衡器Ribbon
Spring Cloud整合Ribbon
添加spring-cloud-starter-netflix-ribbon依赖
pom
添加@LoadBalanced注解
调用逻辑
Ribbon更多配置
修改默认负载均衡策略
Ribbon负载均衡策略
全局配置:调用其他微服务,一律使用指定的负载均衡算法
局部配置:调用指定微服务提供的服务时,使用对应的负载均衡算法
修改application.yml
自定义负载均衡策略
通过实现IRule接口可以自定义负载策略,主要的选择服务逻辑在choose方法中
实现基于Nacos权重的负载均衡策略
配置自定义策略
全局配置
局部配置
修改application.yml
饥饿加载
开启饥饿加载,解决第一次调用慢的问题
限流容错降级组件sentinel
springboot整合Sentinel
pom
例子
配置
@SentinelResource
value
entryType
blockHandler / blockHandlerClass
fallback / fallbackClass
defaultFallback(since 1.6.0)
exceptionsToIgnore(since 1.6.0)
示例
sentinel控制台
微服务架构介绍
微服务技术栈
服务注册与发现
Spring Cloud Netflix Eureka
Spring Cloud Consul
Spring Cloud Zookeeper
Spring Cloud Alibaba Nacos
服务调用
客户端负载均衡器
Spring Cloud Netflix Ribbon
Spring Cloud LoadBalancer
RPC调用
Spring Cloud OpenFeign
Dubbo
服务限流熔断降级
Spring Cloud Netflix Hystrix
Spring Cloud Alibaba Sentinel
配置中心
Spring Cloud Config
Spring Cloud Zookeeper
Spring Cloud Alibaba Nacos
服务网关
Spring Cloud Netflix Zuul
Spring Cloud Gateway
分布式事务
Spring Cloud Alibaba Seata
服务链路跟踪
Spring Cloud Sleuth+Zipkin
Skywalking
服务安全
Spring Cloud Security
分布式消息
Spring Cloud Stream
RabbitMQ
Kafka
RocketMQ
Spring Cloud Alibaba&Spring Boot版本选型
版本选择:Spring Cloud Alibaba 2.2.5.RELEASE
聚合工程父pom
Spring Cloud Alibaba官方文档
微服务客户端负载均衡器LoadBalancer
RestTemplate整合LoadBalancer
引入依赖pom
注意:nacos-discovery中引入了ribbon,需要移除ribbon的包,
如果不移除,也可以在yml中配置不适用ribbon
如果不移除,也可以在yml中配置不适用ribbon
修改application.yml
使用@LoadBalanced注解配置RestTemplate
微服务调用组件Feign
优势
Spring Cloud Alibaba整合Feign
添加spring-cloud-starter-openfeign依赖
pom
编写调用接口+@FeignClient注解
value=服务名
调用端在启动类上添加@EnableFeignClients注解
发起调用,像调用本地方式一样调用远程服务
提示:Feign的继承特性可以让服务的接口定义单独抽出来,作为公共的依赖,以方便使用
Spring Cloud Feign的自定义配置及使用
日志配置
配置一个配置类,定义日志级别
全局配置
局部配置方式1
局部配置方式2
在yml配置文件中执行Client的日志级别才能正常输出日志,格式是:"logging.level.feign接口包路径=debug"
契约配置
修改契约配置,支持Feign原生的注解
OrderFeignService中配置使用Feign原生的注解
注意:修改契约配置后,OrderFeignService不再支持springmvc的注解,需要使用Feign原生的注解
局部配置
也可以通过yml配置契约
通过拦截器实现认证
Feign中我们可以直接配置Basic认证
扩展点:feign.RequestInterceptor
自定义拦截器实现认证逻辑
全局配置
局部配置
yml中配置
超时时间配置
全局配置
局部配置
yml中配置
客户端组件配置
配置Apache HttpClient
pom
修改yml配置,将Feign的Apache HttpClient启用
测试,调用会进入feign.httpclient.ApacheHttpClient#execute
配置OkHttp
pom
修改yml配置,将Feign的HttpClient禁用,启用OkHttp
测试,调用会进入feign.httpclient.OkHttpClient#execute
GZIP压缩配置
注意:只有当Feign的Http Client不是okhttp3的时候,压缩才会生效,配置源码再FeignAcceptGzipEncodingAutoConfiguration
编码器解码器配置
扩展点:Encoder & Decoder
java配置方式
yml配置方式
微服务调用组件Dubbo
Spring Cloud整合Dubbo
provider端
pom
application.yml
服务实现类上配置@DubboService暴露服务
consumer端
pom
application.yml
服务消费方通过@DubboReference引入服务
从Open Feign迁移到Dubbo
修改服务提供者
服务消费端引入依赖
pom
feign接口添加@DubboTransported注解
调用对象添加@DubboTransported注解
分布式事务组件Seata
微服务网关gateway
官方文档
核心概念
Route 路由
gateway的基本构建模块。它由ID、目标URI、断言集合和过滤器集合组成。如果聚合断言结果为真,则匹配到该路由。
Predicate 断言
这是一个Java 8 Function Predicate。输入类型是 Spring Framework ServerWebExchange。这允许开发人员可以匹配来自HTTP请求的任何内容,例如Header或参数
Filter 过滤器
这些是使用特定工厂构建的 Spring FrameworkGatewayFilter实例。所以可以在返回请求之前或之后修改请求和响应的内容。
快速开始
环境搭建
引入依赖
注意:会和spring-webmvc的依赖冲突,需要排除spring-webmvc
编写配置文件
路由断言工厂(Route Predicate Factories)配置
After 路由断言 Factory
Before 路由断言 Factory
Between 路由断言 Factory
Cookie 路由断言 Factory
Header 路由断言 Factory
Host 路由断言 Factory
Method 路由断言 Factory
Path 路由断言 Factory
Query 路由断言 Factory
RemoteAddr 路由断言 Factory
Weight 路由断言 Factory
Xforwarded 路由断言 Factory
过滤器工厂 GatewayFilter Factories
31个
31个
AddRequestHeader GatewayFilter Factory
AddRequestParameter GatewayFilter Factory
。。。
自定义过滤器工厂
继承AbstractNameValueGatewayFilterFactory且我们的自定义名称必须要以GatewayFilterFactory结尾并交给spring管理
配置自定义的过滤器工厂
全局过滤器 Global Filters
LoadBalancerClient Filter
其实就是用来整合负载均衡器Ribbon的
ReactiveLoadBalancerClientFilter
整合负载均衡loadbalancer
.....
自定义全局过滤器
gateway跨域问题
通过yml配置的方式
通过java配置的方式
gateway高可用配置
gateway整合sentinel限流
快速开始
引入依赖
使用时只需注入对应的SentinelGatewayFilter实例以及SentinelGatewayBlockExceptionHandler实例即可
用户可以通过GatewayRuleManager.loadRules(rules)手动加载网关规则
接入Sentinel dashboard控制台
添加yml配置
0 条评论
下一页