网站的充值是怎么做的宣传画册设计
网站的充值是怎么做的,宣传画册设计,北京网站建设策划解决方案,容桂电子商务网站建设一、OpenFeign基础应用
1.1 概念
OpenFeign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用OpenFeign#xff0c;可以做到使用HTTP请求访问远程服务#xff0c;就像调用本地方法一样的#xff0c;开发者完全感知不到这是在调用远程方法#xff0c;更感知不到在访…一、OpenFeign基础应用
1.1 概念
OpenFeign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用OpenFeign可以做到使用HTTP请求访问远程服务就像调用本地方法一样的开发者完全感知不到这是在调用远程方法更感知不到在访问HTTP请求用法其实就是编写一个接口在接口上添加注解即可。
可以简单理解它是借鉴Ribbon的基础之上封装的一套服务接口注解的方式的远程调用器。
1.2 OpenFeign作用
它的宗旨是在编写Java Http客户端接口的时候变得更加容易其底层整合了Ribbon所以也支持负载均衡。
之前我们使用Ribbon的时候利用RestTemplate对Http请求进行封装处理但是在实际开发中由于对服务依赖的调用不可能就一处往往一个接口会被多处调用所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。所以OpenFeign在此基础之上做了进一步的封装由它来帮助我们定义和实现依赖服务接口的定义我们只需创建一个接口并使用注解的方式来配置它即可完成对微服务提供方的接口绑定简化Ribbon的操作。
1.3 具体案例
模拟两个服务提供者 9001,9002一个消费者9003。三个服务
首先在父工程的pom.xml文件引入
dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-openfeign/artifactId version2.2.3.RELEASE/version
/dependency然后再9003服务引入依赖 dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-openfeign/artifactId
/dependency启动类增加EnableFeignClients注解创建远程调用服务接口FeignService
Service
FeignClient(value nacos-payment-provider)
public interface FeignService { GetMapping(/demo) public String demo();
}controller层调用 Resource
private FeignService feignService; GetMapping(/demoTest)
public String demoTest(){ return feignService.demo();
}通过浏览器访问负载均衡的调用9001 9002服务
1.4 OpenFeign超时时间控制
OpenFeign 客户端默认等待1秒钟但是如果服务端业务超过1秒则会报错。为了避免这样的情况我们需要设置feign客户端的超时控制。
由于OpenFeign 底层是ribbon 。所以超时控制由ribbon来控制。在yml文件中配置
server: port: 9003
spring: application: name: cloud-nacos-consumer cloud: nacos: discovery: server-addr: localhost:8848 #设置feign客户端超时时间(OpenFeign默认支持ribbon)
ribbon: #指的是建立连接后从服务器读取到可用资源所用的时间 ReadTimeout: 5000 #指的是建立连接所用的时间适用于网络状况正常的情况下,两端连接所用的时间 ConnectTimeout: 50001.5 OpenFeign日志打印
Feign 提供了日志打印功能我们可以通过配置来调整日志级别从而了解 Feign 中 Http 请求的细节。 简单理解就是对Feign接口的调用情况进行监控和输出
日志级别
NONE默认的不显示任何日志BASIC仅记录请求方法、URL、响应状态码及执行时间HEADERS除了 BASIC 中定义的信息之外还有请求和响应的头信息FULL除了 HEADERS 中定义的信息之外还有请求和响应的正文及元数据
具体应用
需要在启动类中通过Bean注解注入OpenFeign的日志功能
Bean
Logger.Level feignLoggerLevel(){ return Logger.Level.FULL;
}在yaml配置文件中配置日志级别
server: port: 9003
spring: application: name: cloud-nacos-consumer cloud: nacos: discovery: server-addr: localhost:8848 #设置feign客户端超时时间(OpenFeign默认支持ribbon)
ribbon: #指的是建立连接后从服务器读取到可用资源所用的时间 ReadTimeout: 5000 #指的是建立连接所用的时间适用于网络状况正常的情况下,两端连接所用的时间 ConnectTimeout: 5000 logging: level: com.wsrbb.service.FeignService: debug1.6 Sentinel整合OpenFeign
在我们的9003消费者服务里面增加依赖
dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
/dependency
dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-openfeign/artifactId
/dependency
dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-sentinel/artifactId
/dependency激活Sentinel对OpenFeign的支持配置yml
# 激活Sentinel对OpenFeign的支持
feign:sentinel:enabled: trueOpenFegin接口编写 fallback: 定义容错的处理类当调用远程接口失败或超时时会调用对应接口的容错逻辑fallback指定的类必须实现FeignClient标记的接口
Service
FeignClient(value nacos-payment-provider,fallback FeignServiceFallBack.class)
public interface FeignService { GetMapping(/demo) public String demo();
}Component
public class FeignServiceFallBack implements FeignService { Override public String demo() { return 服务降级; }
}测试访问正常没问题如果我们手动关闭9001 9002两个服务则会出现
二、 Sentinel持久化配置
在Sentinel Dashboard中配置规则之后重启应用就会丢失所以实际生产环境中需要配置规则的持久化实现Sentinel提供多种不同的数据源来持久化规则配置包括fileredis、nacos、zk。
2.1 Sentinel规则持久化到Nacos
将限流规则持久化进Nacos保存只要刷新8401某个接口地址Sentinel控制台的流控规则就能感应到同时只要Nacos里面的配置不删除针对8401上Sentinel的流控规则就持续有效。 ![[Pasted image 20240110233829.png]]
其实就是实现Sentinel Dashboard与Nacos之间的相互通信
通过Nacos配置文件修改流控规则—拉取—Sentinel Dashboard界面显示最新的流控规则
**注意在Nacos控制台上修改流控控制虽然可以同步到Sentinel Dashboard但是Nacos此时应该作为一个流控规则的持久化平台所以正常操作过程应该是开发者在Sentinel Dashboard上修改流控规则后同步到Nacos遗憾的是目前Sentinel Dashboard不支持该功能。
2.2 具体操作步骤
引入依赖
dependencygroupIdcom.alibaba.csp/groupIdartifactIdsentinel-datasource-nacos/artifactIdversion1.8.1/version
/dependency配置yaml文件
server: port: 8042
spring: application: name: cloud-sentinel-8042 cloud: nacos: discovery: server-addr: localhost:8848 sentinel: transport: # 配置Sentinel dashboard地址 dashboard: localhost:8080 # 默认8719端口键入被占用会自动从87191直到找到未被占用的端口 port: 8719 web-context-unify: false datasource: nacos: nacos: server-addr: localhost:8848 groupId: DEFAULT_GROUP dataId: ${spring.application.name}-flow-rules.json rule-type: flow进入到Nacos控制台。添加配置 具体配置内容
[ {resource: test1,limitApp: default,grade: 1,count: 2,strategy: 0,controlBehavior: 0clusterMode: false}
]
---------------具体内容含义-----------------
resource资源名称
limitApp来源应用
grade阈值类型0表示线程数1表示QPS
count单机阈值
strategy流控模式0表示直接1表示关联2表示链路
controlBehavior流控效果0表示快速失败1表示Warm Up2表示排队等待
clusterMode是否集群。重启项目刷新对应的接口我们就可以在Sentinel界面上看到对应的限流规则 如果对你有帮助可以关注博主不定期更新各种技术文档 给博主一个免费的点赞以示鼓励谢谢 ! 欢迎各位点赞评论收藏⭐️
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/90991.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!