2020年7月

本篇主要写 Eureka 服务发现慢的原因,Spring Cloud 超时设置问题。如果你刚刚接触Eureka,对Eureka的设计和实现都不是很了解,可能就会遇到一些无法快速解决的问题,这些问题包括:新服务上线后,服务消费者不能访问到刚上线的新服务,需要过一段时间后才能访问?或是将服务下线后,服务还是会被调用到,一段时候后才彻底停止服务,访问前期会导致频繁报错?这些问题还会让你对 Spring Cloud 产生严重的怀疑,这难道...

阅读全文 »

Spring Cloud Stream 消息驱动组件是帮助我们更快速、更方便、更友好的去构建消息驱动微服务的。MQ:消息队列/消息中间件/消息代理,产品有很多:ActiveMQ RabbitMQ RocketMQ Kafka等。Stream解决的痛点问题MQ消息中间件广泛应用在应用解耦合、异步消息处理、流量削峰等场景中。不同的MQ消息中间件内部机制包括使用方式都会有所不同,比如RabbitMQ中有Exchange(交换机/交换器)...

阅读全文 »

Config配置自动更新实现一次通知处处生效在微服务架构中,我们可以结合消息总线(Bus)实现分布式配置的自动更新(Spring Cloud Config + Spring Cloud Bus)消息总线Bus所谓消息总线Bus,即我们经常会使用MQ消息代理构建一个共用的Topic,通过这个Topic连接各个微服务实例,MQ广播的消息会被所有在注册中心的微服务实例监听和消费。换言之就是通过一个主题连接各个微服务,打通脉络。Sprin...

阅读全文 »

分布式配置中心应用场景往往,我们使用配置文件管理一些配置信息,比如application.yml单体应用架构,配置信息的管理、维护并不会显得特别麻烦,手动操作就可以,因为就一个工程;微服务架构,因为我们的分布式集群环境中可能有很多个微服务,我们不可能一个一个去修改配置然后重启生效,在一定场景下我们还需要在运行期间动态调整配置信息,比如:根据各个微服务的负载情况,动态调整数据源连接池大小,我们希望配置内容发生变化的时候,微服务可以自...

阅读全文 »

网关(翻译过来就叫做GateWay):微服务架构中的重要组成部分。局域网中就有网关这个概念,局域网接收或者发送数据出去通过这个网关,比如用Vmware虚拟机软件搭建虚拟机集群的时候,往往我们需要选择IP段中的一个IP作为网关地址。GateWay-->Spring Cloud GateWay(它只是众多网关解决方案中的一种)GateWay简介Spring Cloud GateWay是Spring Cloud的一个全新项目,目标...

阅读全文 »

之前用过服务消费者调用服务提供者的时候使用RestTemplate技术,存在几个不便之处:拼接urlrestTemplate.getForObJect这两处代码都比较模板化,能不能不写这种模板化的东⻄另外来说,拼接url显得很low,拼接字符串,拼接参数,很low还容易出错Feign简介Feign是Netflix开发的一个轻量级RESTful的HTTP服务客户端(用它来发起请求,远程调用的),是以Java接口注解的方式调用Http...

阅读全文 »

Hystrix熔断器属于一种容错机制。微服务中的雪崩效应微服务中,一个请求可能需要多个微服务接口才能实现,会形成复杂的调用链路。假设存在一个微服务,那上游微服务对它的调用叫做“扇入”,它对下游微服务的调用叫做“扇出”。扇入:代表着该微服务被调用的次数,扇入大,说明该模块复用性好。扇出:该微服务调用其他微服务的个数,扇出大,说明业务逻辑复杂。扇入大是一个好事,扇出大不一定是好事。在微服务架构中,一个应用可能会有多个微服务组成,微服务...

阅读全文 »

关于负载均衡负载均衡一般分为服务器端负载均衡和客户端负载均衡。所谓服务器端负载均衡,比如Nginx、F5这些,请求到达服务器之后由这些负载均衡器根据一定的算法将请求路由到目标服务器处理。所谓客户端负载均衡,比如我们要说的Ribbon,服务消费者客户端会有一个服务器地址列表,调用方在请求前通过一定的负载均衡算法选择一个服务器进行访问,负载均衡算法的执行是在请求客户端进行。Ribbon是Netflix发布的负载均衡器。Eureka一般...

阅读全文 »

关于服务注册中心服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者(比如一个微服务部署多个实例),这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB(负载均衡)机制(就是在配置文件中写死服务实例的列表信息,负载均衡策略从这个配置文件中读取)就不再适用了,需要...

阅读全文 »

RestTemplate案例代码在使用Spring Cloud开发之前,可以先做一个小案例来感受一下远程调用会出现哪些问题。在Spring Boot和Restful开发的几个微服务之间进行远程调用会有很多组件和方法可供选择,其中比较方便的就有Spring的RestTemplate,它一般在消费端使用,用来调用其他服务端的远程方法。在消费端的Spring Boot启动类中:/** * 注入RestTemplate * @retu...

阅读全文 »