SpringCloud

平时多流汗,战时少流血!

服务发现组件

服务注册中心

服务发现要解决的一个问题是: 解耦服务。 服务提供者、服务消费者、服务发现组件三者关系: 各微服务启动的时候,将自己的网络信息注册到服务发现组件中,服务发现组件会储存这些信息。 服务消费者可以通过服务发现组件中查询服务提供者的网络地址,并使用该网络地址调用服务。 各微服务与服务发现组件通过心跳机制通信,服务发现组件如长时间无法与某个服务实例通信,服务发现组件会注销该实例。 在微服务架...

微服务为什么要使用网关服务

在没有网关服务时,是怎么工作的 不同的微服务一般会有不同的网络地址,但 web 端或 APP 端需要调用多个服务的接口才能完成一个业务需求。在这种客户端直接与各个服务通信的架构时,会有以下问题: 客户端需要维护很多服务的请求地址; 客户端会多次请求不同的微服务,增加了客户端的复杂性; 存在跨域请求,处理相对复杂; 认证复杂,每个服务都需要独立认证; 随着项目的迭代,可能需要重新划分微服务(...

微服务简介

单体应用架构存在的问题 一个 war 包含所有功能的应用程序,通常称为单体应用。尽管在程序中进行了模块化,但若干业务模块被打包在一个 war 包中,这样的应用系统称为单体应用。 优点:容易部署、测试。可以快速实现需求。 缺点:随着需求的不断增加,开发团队的状大,代码库也在迅速增长, 此时单体应用变得越来越臃肿,可维护性、灵活性逐渐下降,维护成本高: 模块非常多、模块的边界模糊、依赖关系不...

实践bug总结-Feign使用Hystrix配置

在之前的文章中使用注解@HystrixCommand 的 fallbackMethod属性实现回调的。 @Slf4j @Component public class AdditionCommand { @Autowired private AdditionClient additionClient; @HystrixCommand(fallbackMethod...

SpringCloud智能网关-核心功能过滤器

过滤器 在上一篇我们通过使用Spring Cloud Zuul构建了一个基础的API网关服务,同时也演示了Spring Cloud Zuul基于服务的自动路由功能。然而,目前的服务路由并没有限制权限这样的功能,所有请求都会被毫无保留地转发到具体的应用并返回结果,为了实现对客户端请求的安全校验和权限控制,需要为微服务实现一套用于校验签名和鉴别权限的过滤器或拦截器。由于网关服务的加入,外部客户端...

SpringCloud智能网关入门介绍

Zuul入门介绍

问题 通过之前几篇Spring Cloud中几个核心组件的介绍:Eureka用于服务的注册与发现,Ribbon或Feign支持服务的调用以及均衡负载,Hystrix处理服务的熔断防止故障扩散,似乎一个微服务框架已经完成了。 但是,为了保证对外服务的安全性,我们需要实现对服务访问的权限控制,如果这些功能实现在微服务中,导致在工作中除了要考虑实际的业务逻辑之外,还需要额外为每个微服务增加对外接口...

SpringCloud-Hystrix数据进行聚合展示-Turbine

Turbine-通过HTTP方式收集聚合

背景 上一篇使用Hystrix Dashboard来展示Hystrix用于熔断的各项指标。通过Hystrix Dashboard,可以方便的查看服务实例的综合情况,但是,在实际的生产环境中,我们的服务是肯定需要做高可用的,而仅通过Hystrix Dashboard只能实现对服务单个实例的数据展现。那么对于多实例的情况,我们就需要将这些指标数据进行聚合。接下来将使用另外一个工具:Turbine...

SpringCloud Feign遇到的问题

2017-12-06遇到的问题,调试了一天...

问题一:由于马虎,缺少配置,报错如下: Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.gemantic.springcloud.service.AdditionClient': FactoryBean threw exception ...

SpringCloud @RestController返回值问题

2017-12-05遇到的问题,百思不得其解,又是一天终于解决...

实现一下加法的Controller进行测试,代码如下: import com.gemantic.commons.Message; import com.gemantic.commons.ResultData; import com.gemantic.springcloud.service.Addition; import io.swagger.annotations.Api; impor...

SpringCloud-Hystrix-Dashboard监控面板

Hystrix Dashboard 让你更了解系统的运行情况

Hystrix Dashboard 断路器的打开和关闭状态的变化是由系统收集一些重要参数,当达到条件时才触发的。而这些请求情况的指标信息都是Hystrix Command和Hystrix Observable Command实例在执行过程中记录的重要信息,为了帮助我们系统运维或性能优化做出判断,Hystrix Dashboard实现Hystrix指标数据的可视化。 接口实现使用了@Hystr...

SpringCloud-Hystrix-让你的系统稳一点儿

服务容错保护(服务降级、依赖隔离、断路器)

背景 在微服务架构中,我们将系统拆分成了一个个的服务单元,各单元应用间通过服务注册与订阅的方式互相依赖。由于每个单元都在不同的进程中运行,依赖通过远程调用的方式执行,这样就有可能因为网络原因或是依赖服务自身问题出现调用故障或延迟,而这些问题会直接导致调用方的对外服务也出现延迟,若此时调用方的请求不断增加,最后就会出现因等待出现故障的依赖方响应而形成任务积压,线程资源无法释放,最终导致自身服务...

Feign封装RESTfulAPI简化客户端调用

Feign对服务的声明式定义和调用

Spring Cloud Feign 在此之前,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端,使用起来很不方便,需要了解URL,有时还需要拼装真正请求的URL。有没有一种用起来更方便、更优雅的方式吗?答案是肯定的,Spring Cloud想到了这些————Feign。Spring Cloud Feign是一套基于Netflix Feign实现...

Spring Cloud Ribbon简化负载均衡调用服务端实战

Spring Cloud Ribbon Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。它是一个基于HTTP和TCP的客户端负载均衡器。它可以通过在客户端中配置ribbonServerList来设置服务端列表去轮询访问以达到均衡负载的作用。 当Ribbon与Eureka联合使用时,ribbonServerList会被DiscoveryE...

SpringCloud基础服务注册中心Eureka

基础服务注册中心Eureka

如何使用Spring Cloud来实现服务治理? 由于Spring Cloud为服务治理做了一层抽象接口,所以在Spring Cloud应用中可以支持多种不同的服务治理框架,比如:Netflix Eureka、Consul、Zookeeper。在Spring Cloud服务治理抽象层的作用下,我们可以无缝地切换服务治理实现,并且不影响任何其他的服务注册、服务发现、服务调用等逻辑。(有过面向接...

SpringCloud初探

SpringCloud全家桶

什么是SpringCloud? Spring Cloud是一系列框架的有序集合,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架(服务发现注册、配置中心、消息总线、负载均衡、断路器、智能路由、数据监控、分布式会话和集群状态管理等)组合起来,通过Spring Boot进行再封装屏蔽掉了复杂的配置,巧妙地简化了分布式系统基础设施的开发,最终给我们一套简单易懂、易部署和易维护的分布式系...