SpringCloud
文章平均质量分 87
SpringCloud
〆、风神
一只热爱编程的程序猿
展开
-
Spring Boot 和 Spring Cloud Feign调用服务及传递参数踩坑记录
FeignClient用于通知Feign组件对该接口进行代理(不需要编写接口实现),使用者可直接通过@Autowired注入。Spring Cloud应用在启动时,Feign会扫描标有@FeignClient注解的接口,生成代理,并注册到Spring容器中。生成代理时Feign会为每个接口方法创建一个RequetTemplate对象,该对象封装了HTTP请求需要的全部信息,请求参数名、请求方法等信息都是在这个过程中确定的,Feign的模板化就体现在这里。微服务端。原创 2022-12-22 12:02:16 · 1347 阅读 · 0 评论 -
SpringCloud Fegin解决java.lang.IllegalArgumentException: Body parameter 0 was null
造成这个错误的原因是,我在服务a 调用服务b 的时候参数传递的是null,而服务b通过 @RequestBody 来接收参数,@RequestBody 的 required 默认值是true。最近在工作中遇到了一个Fegin传参异常,特此记录便于日后查阅。原创 2022-12-22 11:30:23 · 1130 阅读 · 0 评论 -
Method has too many Body parameters的处理办法
当使用Feign时,如果发送的是get请求,那么需要在请求参数前加上@RequestParam注解修饰,Controller里面可以不加该注解修饰 ,@RequestParam可以修饰多个,@RequestParam是用来修饰参数,不能用来修饰整个对象。注意 用来处理@RequestBody Content-Type 为 application/json、application/xml编码的内容。原创 2022-12-22 11:17:07 · 1914 阅读 · 2 评论 -
No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
今天的疑惑报错,我大意了啊,没有闪。项目中引入了openfeign,没有在意版本。直到运行项目进行远程调用时报错。由于SpringCloud Feign在Hoxton.M2 RELEASED版本之后不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错。加入spring-cloud-loadbalancer依赖 并且在nacos中排除ribbon依赖,不然loadbalancer无效。原创 2022-12-20 17:53:55 · 126 阅读 · 0 评论 -
手把手教你搭建SpringCloud项目(十八)集成Sleuth分布式链路跟踪
今天这篇文章介绍一下链路追踪相关的知识,以Spring Cloud Sleuth和zipkin这两个组件为主。为什么需要链路追踪?大型分布式微服务系统中,一个系统被拆分成N多个模块,这些模块负责不同的功能,组合成一套系统,最终可以提供丰富的功能。在这种分布式架构中,一次请求往往需要涉及到多个服务,如下图:服务之间的调用错综复杂,对于维护的成本成倍增加,势必存在以下几个问题:服务之间的依赖与被依赖的关系如何能够清晰的看到?出现异常时如何能够快速定位到异常服务?出现性能瓶颈时如何能够迅速定位哪个原创 2021-12-28 19:00:42 · 2971 阅读 · 2 评论 -
手把手教你搭建SpringCloud项目(十七)集成Stream消息驱动
一、概述1. 是什么?在实际应用中有很多消息中间件,比如现在企业里常用的有ActiveMQ、RabbitMQ、RocketMQ、Kafka等,学习所有这些消息中间件无疑需要大量时间经历成本,那有没有一种技术,使我们不再需要关注具体的消息中间件的细节,而只需要用一种适配绑定的方式,自动的在各种消息中间件内切换呢?消息驱动就是这样的技术,它能屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型。Spring Cloud Stream 是一个构建消息微服务驱动的框架。可以屏蔽底层消息中间件的差异,降低原创 2021-12-28 16:36:00 · 728 阅读 · 0 评论 -
手把手教你搭建SpringCloud项目(十六)集成Bus消息总线
为什么要用SpringCloud Bus?用SpringCloud Config时,我们可以实现配置信息手动的动态刷新,也就是远端配置信息发生改变后,需要告诉服务端配置信息发生变化后,服务端才会更新配置信息,而现在我们想要实现分布式自动刷新配置信息功能,这就需要我们使用SpringCloud Bus消息总线配合SpringCloud Config实现配置信息的动态刷新。SpringCloud Bus 原理简介Spring Cloud Bus 使用轻量级的消息代理来连接微服务架构中的各个服务,可以将其用原创 2021-12-27 18:52:38 · 991 阅读 · 0 评论 -
手把手教你搭建SpringCloud项目(十五)集成Config分布式配置中心
为什么会有Spring Cloud Config分布式配置中心?为什么要有用分布式配置中心这玩意儿?现在这微服务大军已经覆盖了各种大小型企业,每个服务的粒度相对较小,因此系统中会出现大量的服务,每个服务都要有自己都一些配置信息,或者相同的配置信息,可能不同环境每个服务也有单独的一套配置,这种情况配置文件数量比较庞大,维护起来相当费劲,举个栗子:在开发的过程中,一般数据库是开发环境数据库,所有服务DB的IP配置为:92.168.0.1,突然老大说,开发环境换了,DB的IP要修改,这下可不好受了,所有模块挨原创 2021-12-26 19:58:24 · 1160 阅读 · 1 评论 -
手把手教你搭建SpringCloud项目(十四)集成Gateway新一代服务网关
Gateway简介什么是API 网关?是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理授权、访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的调用者透明。因此,隐藏在 API 网关后面的业务系统就可以专注于创建和管理服务,而不用去处理这些策略性的基础设施。API 网关都有哪些职能?API 网关的分类与功能?Gateway是什么Spring原创 2021-12-26 17:35:54 · 1596 阅读 · 1 评论 -
手把手教你搭建SpringCloud项目(十三)集成Hystrix之图形化Dashboard实时监控
在这篇手把手教你搭建SpringCloud项目(十二)集成Hystrix之服务熔断文章中,介绍了Hystrix的三大作用,其中服务降级和服务降级上两篇文章都学习完了,这篇文章就该轮到实时的监控,Hystrix除了隔离依赖服务的调用以外,还提供了准时的调用监控(Hystrix Dashboard)Hystrix会持续地记录所有通过Hystrix发起的请求的执行信息,并以统计报表和图形的形式展示给用户包括每秒执行多少请求多少成功,多少失败等。Netflix通过hystrix-metrics-event-stre原创 2021-12-24 17:08:08 · 802 阅读 · 0 评论 -
手把手教你搭建SpringCloud项目(十二)集成Hystrix之服务熔断
什么是断路器?“断路器”本身是一种开关装置,当某个服务单元发生故障监控(类似熔断保险丝),向调用方法返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方法无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延。乃至雪崩。什么是熔断机制?熔断机制是应对雪崩效应的一种微服务链路保护机制,当扇出链路的某一个微服务出错不可用或者响应时间太长,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息,当检测到该原创 2021-12-24 16:04:10 · 349 阅读 · 0 评论 -
手把手教你搭建SpringCloud项目(十一)集成Hystrix之服务降级
微服务架构的雪崩效应什么是微服务中的雪崩效应?首先介绍两个概念:扇入和扇出。对于微服务中某个服务来说,调用它的服务请求称为扇入,它调用其它服务的请求称为扇出。微服务中,⼀个请求可能需要多个微服务接口才能实现,会形成复杂的调用链路。这就带来⼀个问题,假设微服务A调⽤微服务B和微服务C,微服务B和微服务C⼜调⽤其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调⽤响应时间过⻓或者不可⽤,对微服务A的调⽤就会占⽤越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。雪崩效应的解决方案原创 2021-12-24 13:06:32 · 442 阅读 · 0 评论 -
手把手教你搭建SpringCloud项目(十)集成OpenFeign服务接口调用
OpenFeign简介什么是Feign?Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解,同时也支持JAX-RS标准的注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用支持负载均衡。Feign是能干什么?Feign旨原创 2021-12-22 15:42:37 · 1398 阅读 · 0 评论 -
手把手教你搭建SpringCloud项目(九)集成Ribbon负载均衡器
一、Ribbon简介分布式系统中,各个微服务会部署多个实例,如何将服务消费者均匀分摊到多个服务提供者实例上,就要使用到负载均衡器Ribbon 是负载均衡器 ,是一个基于HTTP和CP的客户端负载均衡工具,它提供了很多负载均衡算法,例如轮询、随即等,在配置服务提供者地址后,可以将服务消费者请求均匀的分发Ribbon的架构图Ribbon的核心组件IRuleIRule的七大负载算法IRule接口有7个实现类,每个实现类代表一个负载均衡算法,默认使用轮询什么是Load Balancer?Loa原创 2021-12-17 13:42:30 · 1068 阅读 · 0 评论 -
手把手教你搭建SpringCloud项目(八)集成Consul服务注册中心
一、了解Consul这篇文章学习另外一个服务注册中心Consul,那什么是Consul?Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。与其它分布式服务注册与发现的方案相比,Consul 的方案更“一站式”——内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存原创 2021-12-16 19:35:01 · 1121 阅读 · 1 评论 -
手把手教你搭建SpringCloud项目(七)Eureka实现服务发现(Discovery)
服务发现简介各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件上(eureka,zookeeper,Consul),服务发现组件会存储这些信息。服务消费者会从服务发现组件查询服务提供者的网络地址,然后根据该地址调用服务提供者的接口。各个微服务与服务发现组件使用一定的机制来维持心跳,服务发现组件若发现有服务没有提供心跳,那么服务发现组件会将该服务剔除。微服务网络地址发生变更(例如实例增减或者IP端口发生变化等),会重新注册到服务发现组件上,使用这种方式,可以避免因网络变化导致服务之间的通讯停止,服原创 2021-12-05 16:40:09 · 873 阅读 · 0 评论 -
手把手教你搭建SpringCloud项目(六)actuator微服务信息完善与Eureka自我保护机制
主机名称:服务名称修改问题服务注册含有主机名称,要想按照规范的要求,只暴露服务名,不要出现主机名。解决方法1.找到application.yml,添加配置8001服务: instance: instance-id: payment80018002服务: instance: instance-id: payment80022.测试访问信息有IP信息显示问题鼠标放在①上,在左下角②中没有IP显示。后续的话,这些微服务可能部署到几号机器上的,服务端口是多少原创 2021-12-05 17:56:03 · 776 阅读 · 1 评论 -
手把手教你搭建SpringCloud项目(五)生产者集群版搭建
这篇文章主要是演示生产者集群的搭建与负载均衡,也就是我们支付的服务,我们参照之前搭建的端口为8001的服务springcloud-provider-payment8001,现在我们搭建服务springcloud-provider-payment8002,端口为8002。生产者支付服务8001集群环境搭建1.建立module: springcloud-provider-payment80022.pom.xml 同8001的 pom.xml 一样3.写application.yml,注意改端口4.原创 2021-12-05 16:10:38 · 1118 阅读 · 0 评论 -
手把手教你搭建SpringCloud项目(四)EurekaServer集群版搭建
上一篇我们只是简单的搭建了Eureka的单机版,但是在真正的生产环境上,是远远不够的,微服务RPC远程服务调用最核心的就是高可用,如果一台Eureka宕机了,那我们整个服务就不能使用了,所以就需要我们的集群版,实现负载均衡与故障容错。搭建EurekaServer集群环境1.建立module: springcloud-eureka-server70022.pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="ht原创 2021-12-05 15:06:56 · 472 阅读 · 0 评论 -
手把手教你搭建SpringCloud项目(三)集成Eureka服务注册中心
我们首先了解 Eureka:官方介绍了解Eureka1、什么是服务治理?Springcloud 封装了Netfix公司开发的Eureka模块来实现服务治理。在传统的RPC远程调用中,管理每个服务于服务之间依赖关系复杂,管理复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。2、什么是服务注册与发现?Eureka采用了CS的设计架构,Eureka Server服务端作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用Eur原创 2021-12-04 19:10:25 · 907 阅读 · 0 评论 -
手把手教你搭建SpringCloud项目(二)生产者与消费者
项目版本技术版本cloudHoxton.SR1boot2.2.2.RELEASEcloud alibaba2.1.0.RELEASEjavajava8Maven3.5及以上Mysql5.7及以上搭建生产者微服务模块步骤:建module改pom写yml主启动业务类1.建立支付module: cloud-provider-payment8001项目结构:2.pom.xml如下:<?xml version="1.原创 2021-12-04 13:52:35 · 1423 阅读 · 1 评论 -
手把手教你搭建SpringCloud项目(一)搭建Maven父工程,傻瓜式操作
项目版本技术版本cloudHoxton.SR1boot2.2.2.RELEASEcloud alibaba2.1.0.RELEASEjavajava8Maven3.5及以上Mysql5.7及以上1.新建Maven父工程maven架构选择org.apache.maven.archetypes:maven-archetype-sitepom.xml代码如下<?xml version="1.0" encoding="UTF-8"?原创 2021-12-04 12:19:00 · 2620 阅读 · 0 评论 -
SpringCloud简介与5大常用组件
springcloudspringcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建,对我们熟悉spring的程序员来说,上手比较容易。通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注Netflixspringcloud的版本说明springcloud项目是由多个独立项目集合而成的,每个项目都是独立的,各自进行自己的迭代和版本发布。所以springcloud原创 2021-12-05 19:45:56 · 514 阅读 · 0 评论 -
什么是微服务?有手就行
一、微服务架构的演变微服务是一种服务间松耦合的、每个服务之间高度自治并且使用轻量级协议进行通信的可持续集成部署的分布式架构体系。这一句包含了微服务的特点,微服务架构和其他架构有什么区别?以下对比一些常见的架构。1、单体结构单体架构是最简单的软件架构,常用于传统的应用软件开发以及传统 Web 应用。传统 Web 应用,也就是大家早期所学习的ssm或者ssh项目,采用分层架构模式,数据库访问层、业务逻辑层、控制层、从前端到后端的代码都放到同一个项目一般是将所有功能模块都打包(jar、war)在一个 Web原创 2021-12-04 16:38:54 · 444 阅读 · 0 评论