Springcloud
lqbz---
一个纯粹的人,一个高尚的人,一个脱离低级趣味的人。
展开
-
Feign timeout 重试
配置后超时并没有重试,重新检查pom文件发现少了spring-retry依赖。原创 2022-12-08 21:23:38 · 348 阅读 · 0 评论 -
JavaRestClient实现文档的CRUD
初始化JavaRestClient略,与上一篇一致通过原创 2021-12-22 22:20:04 · 1586 阅读 · 0 评论 -
RestClient操作索引库
简介ES官方提供了各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES。java就是RestClienteg:利用JavaRestClient实现创建,删除索引,判断索引库是否存在。分析数据结构mapping要考虑的问题:字段名、数据类型、是否参与搜索、是否分词、如果分词,分词器是什么注:像id数据库中可能是Long但分词时是指定为keyword。一般城市、价格、评分这一类字段不需要分词。对于不需要搜索的字段设置index为false。原创 2021-12-19 21:15:58 · 1930 阅读 · 0 评论 -
SpringAMQP 消息转换器
说明:在SpringAMQP的发送中,接收消息的类型是Object,也就是说我们可以发送任意对象类型的消息,SpringAMQP会帮我们序列化为字节后发送。ctrl+p,查看ConvertAndSend方法中的类型,发现都是Object。测试:在之前的配置类中声明一个队列object.queuepackage com.yy.comsumer.config;import org.springframework.amqp.core.Binding;import org.springframew原创 2021-12-17 21:28:18 · 952 阅读 · 0 评论 -
发布订阅模式
前面的简单队列案例、work queue案例中一条消息只能有一个消费者,消费后就会删除。发布订阅模式与之前案例的区别就是允许将同一消息发送给多个消费者。实现方式是加入exchange(交换机)。之前消息是发送直接到达队列,现在是先发给exchange。再由exchange转发给队列。常见exchange类型包括:Fanout:广播Direct:路由Topic:话题注意:exchage负责消息路由,而不是存储,路由失败则消息丢失。FanoutFanout Exchange会将接收到的消息路由原创 2021-12-16 21:50:07 · 563 阅读 · 0 评论 -
Work Queue
接上一篇测试在publisher服务定义测试方法,每秒产生50条消息,发送到simple.queue。在consumer服务中定义两个消息监听者,都监听simple.queue队列。消费者1每秒处理50条消息,消费者2每秒处理10条消息。创建生产者package com.yy.spring;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.amqp.rabbit.core.R原创 2021-12-15 21:24:23 · 661 阅读 · 0 评论 -
Gateway 跨域问题处理
跨域:域名不一致就是跨域。域名不同域名相同,端口不同跨域问题:浏览器禁止请求的发起者与服务端发生跨域ajax请求,请求被浏览器拦截的问题解决方案:CORS网关处理跨域采用的同样是CORS方案,并且只需要简单配置即可实现:spring: cloud: gateway: globalcors: # 全局的跨域处理 add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题,CORS 浏览器到服务器询原创 2021-12-05 19:38:06 · 310 阅读 · 0 评论 -
GatewayFilter
网关过滤器GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理。GatewayFilter Factories有30几个。eg:给所有进入userservice的请求添加一个请求头:Truth=NO.1实现方式:在gateway中修改application.yml文件,给userservice的路由添加过滤器。server: port: 10010 #网关端口spring: application: name: geteway #服务原创 2021-12-05 19:26:56 · 2590 阅读 · 0 评论 -
统一网关Gateway
网关功能微服务内部使用Feign调用,但对外需要一个网关,作为入口。身份认证和权限校验。服务路由、负载均衡。请求限流。SpringCloud有网关的实现包含两种gatewayzuulZuul是基于Servlet的实现,属于阻塞式编程。SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。搭建网关服务的步骤创建module,创建启动类package com.yy.gateway;import org.sp原创 2021-12-05 15:35:39 · 274 阅读 · 0 评论 -
Feign 优化
连接优化Feign底层的客户端实现:URLConnection:默认实现,不支持连接池Apache HttpClient:支持连接池OKHttp:支持连接池优化方向:使用连接池代替默认的URLConncetion日志级别,最好用baseic或none连接池配置引入依赖<!-- httpclient的依赖--> <dependency> <groupId>io.github.openfei原创 2021-12-05 14:03:38 · 727 阅读 · 0 评论 -
Feign 自定义日志配置
feign.Logger.Level修改日志级别,包含4个不同级别,NONE,BASE,HEADERS,FULL1. 基于配置文件ymlfeign: client: config: default: #这里default就是全局配置,如果是写服务名称,则是针对某个微服务的配置 LoggerLevel: FULLlogging: level: com.yy: debug #com.yy为对应基础包名 pattern: dateformat原创 2021-12-05 10:00:39 · 1259 阅读 · 0 评论 -
http客户端Feign
RestTemplate发起远程调用String url = "http://userservice/user/" + order.getUserId();User user = restTemplate.getForObject(url, User.class);存在的问题代码可读性差参数复杂URL难以维护FeginFeign是一个声明式的http客户端,其作用就是帮助优雅的实现http请求的发送,解决上面提到的问题。使用步骤引入依赖<dependency>原创 2021-12-04 22:43:45 · 393 阅读 · 0 评论 -
Nacos 多环境配置共享
开发、生产、测试中的配置属性是一样的,那就需要配置共享,修改一次,多环境都可使用,而不需要多环境都修改。微服务启动时会从Nacos读取多个配置文件:[spring.application.name]-[spring.profile.active].yaml,如userservice-dev.yaml[spring.application.name].yaml,如userservice.yaml无论profile如何变化,[spring.application.name].yaml这个文件一定会加原创 2021-12-01 22:25:12 · 1522 阅读 · 0 评论 -
Nacos 自助刷新
在上一篇中,直接修改Nacos中的配置内容,将-替换成年月日,但对应服务并不会自动更新,原因是还缺少相关配置。pattern: dateformat: yyyy年MM月dd日 HH:mm:ss方式一在@Value注入的变量所在类上添加注解@RefreshScope修改配置后对应控制台会打印对应 yaml修改通知方式二使用@ConfigurationProperties注解(推荐使用)添加一个PatternProperties.javapackage com.yy.config;i原创 2021-11-30 22:08:40 · 218 阅读 · 0 评论 -
Nacos配置管理
简介统一配置管理好处记录微服务的核心配置,微服务启动后读取核心配置结合本地配置作为完整配置去使用。修改配置管理后,主动通知微服务重新读取配置。并进行热更新。配置获取的步骤如下1项目启动->2读取本地配置文件application.yml->3.创建Spring容器->4.加载bean现需改成1项目启动->2读取nacos中配置文件->3.读取本地配置文件application.yml->4.创建Spring容器->5.加载bean注意之前nacos原创 2021-11-29 22:37:00 · 506 阅读 · 0 评论 -
Nacos服务分级存储模型
服务调用尽可能选择本地集群的服务,跨集群调用延迟较高本。本群集群不可访问时,再去访问其它集群。前一篇注册到nacos的服务,集群是default现在修改服务yml,添加集群名称spring: cloud: nacos: server-addr: http://localhost:8848 # nacos服务地址 discovery: cluster-name: CD #配置集群名称,也就是机房位置再重启模块,并查看nacos...原创 2021-11-27 15:42:56 · 591 阅读 · 0 评论 -
Nacos 搭建
Nacos相对Eureka功能更加丰富。在前面的基础上将Eureka替换成Nacoswindows下载nacos-server-1.4.2 ,解压后。进入到对应目录,执行 .\startup.cmd -m standalone-m指定为standalone单例,模式。默认端口8848启动后根据打印信息进行访问用户名和密码都是nacos在父工程pom中引入spring-cloud-alibaba的管理依赖<!--nacos的管理依赖--><dependency>原创 2021-11-27 15:27:03 · 350 阅读 · 0 评论 -
Ribbon负载策略
IRule的实现类有截图中这些。RoundRobinRule:简单轮询服务列表,默认。AvailabilityFilteringRule:对服务器状态进行过滤,如默认3连接失败,就设置为短路状态。而后再智囊就几何增长。并发过高也会被过滤。WeightedResponseTimeRule:为每个服务器赋予一个权重,服务响应时间越长,这个服务器的权重越。ZoneAvoidanceRule:以区域可用的服务器的选择。使用Zone对服务器进行分类,可理解为一个机房、一个机架等。然后对Zone进行轮询。B.原创 2021-11-27 12:10:11 · 239 阅读 · 0 评论 -
Ribbon 负载均衡
前面提到的负载,其实就是由Ribbon实现。当消费方发起请求时,先到Ribbon,然后Ribbon去到Eureka-server,拉取对应服务列表,然后根据负载策略,选择服务。原创 2021-11-27 09:52:12 · 245 阅读 · 0 评论 -
Eureka服务拉取
当前想在上一篇order-server中,查询一个订单所有信息(包含订单用户信息)。创建user-server模块里面包含User所有信息,提供RESTful风格接口,并注册到Eureka。UserController中代码类似于下面@GetMapping("/{id}")public User queryById(@PathVariable("id") Long id,@RequestHeader(value = "Truth", required = false) String truth)原创 2021-11-26 22:14:28 · 418 阅读 · 0 评论 -
Eureka 注册服务
创建模块导入坐标。配置文件中添加配置。在上一篇的基础上,新建maven模块order-serverpom文件中导入客户端坐标<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <.原创 2021-11-20 17:21:39 · 115 阅读 · 0 评论