spring cloud 入门系列四:使用hystrix 实现断路器进行服务容错保护_java开发老菜鸟-编程思维

在微服务中,我们将系统拆分为很多个服务单元,各单元之间通过服务注册和订阅消费的方式进行相互依赖。但是如果有一些服务出现问题了会怎么样? 比如说有三个服务(ABC),A调用B,B调用C。由于网络延迟或C本身代码有问题导致B迟迟得不到回应,这样B调用C的请求就会被挂起,等待。 在高并发的访问的情况下,这些挂起的线程得不到释放,使后续的请求阻塞,最终导致B也挂掉了。依次类推,A可能也会挂掉,进而使整个

spring cloud 入门系列五:使用feign 实现声明式服务调用_java开发老菜鸟-编程思维

一、Spring Cloud Feign概念引入通过前面的随笔,我们了解如何通过Spring Cloud ribbon进行负责均衡,如何通过Spring Cloud Hystrix进行服务断路保护,两者作为基础工具类框架应用在各种基础设施类微服务和业务类微服务中,并且成对存在,那么有没有更高层的封装,将两者的使用进一步简化呢? 有! 他就是Spring Cloud Feign。它基于Netfli

spring cloud 入门系列六:使用zuul 实现api网关服务_java开发老菜鸟-编程思维

  通过前面几次的分享,我们了解了微服务架构的几个核心设施,通过这些组件我们可以搭建简单的微服务架构系统。比如通过Spring Cloud Eureka搭建高可用的服务注册中心并实现服务的注册和发现; 通过Spring Cloud Ribbon或Feign进行负载均衡;通过Spring Cloud Hystrix进行服务容错保护以避免故障蔓延。微服务搭建好了之后我们肯定会提供给外部系统一些统一的

spring cloud 入门系列七:基于git存储的分布式配置中心--spring cloud config_java开发老菜鸟-编程思维

我们前面接触到的spring cloud组件都是基于Netflix的组件进行实现的,这次我们来看下spring cloud 团队自己创建的一个全新项目:Spring Cloud Config.它用来为分布式系统中的基础设施和微服务提供集中化的外部配置支持,分为服务端和客户端两个部分。 其中服务端也称为分布式配置中心,他是独立的微服务应用,用来连接配置仓库并为客户端提供获取接口(这些接口返回配置信

【微框架】之一:从零开始,轻松搞定springcloud微服务系列--开山篇(spring boot 小demo)_神秘人2332-编程思维

Spring顶级框架有众多,那么接下的篇幅,我将重点讲解SpringCloud微框架的实现   Spring 顶级项目,包含众多,我们重点学习一下,SpringCloud项目以及SpringBoot项目 ————————————————————main———————————————————— 一、SpringCloud项目简介   Spring Cloud:     微服务工具包,为开发者提

spring cloud config应用篇(九)_童话述说我的结局-编程思维

一、SpringCloud Config 配置中心 1.1、配置中心说明 SpringCloud Config 服务器以下简称"配置中心"。 Spring Cloud Config 为分布式系统中的外部配置提供服务器和客户端支持。通过 Config Server (配置中心)可以管理 Config Client (应用程序)的外部属性。应用程序可以通过配置 bootstrap.yml,来加载配置

spring cloud hystrix应用篇(十一)_童话述说我的结局-编程思维

一、背景 分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图,对于同步调用,当库存服务不可用时,商品服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可能导致整个商品服务资源耗尽,无法继续对外提供服务。并且这种不可用可能沿请求调用链向上传递,这种现象被称为雪崩效应。   二、雪崩效应常见场景 硬件故障:如服务器宕机,机房断电,光纤被挖断等。 流量激增:如异

spring cloud hystrix源码篇(十二)_童话述说我的结局-编程思维

一、Hystrix处理流程 Hystrix流程图如下:       Hystrix整个工作流如下: 构造一个 HystrixCommand或HystrixObservableCommand对象,用于封装请求,并在构造方法配置请求被执行需要的参数; 执行命令,Hystrix提供了4种执行命令的方法,后面详述; 判断是否使用缓存响应请求,若启用了缓存,且缓存可用,直接使用缓存响应请求。Hystr

spring cloud gateway应用篇(十三)_童话述说我的结局-编程思维

一、概述 在微服务架构中,每个服务都是一个可以独立开发和运行的组件,而一个完整的微服务架构由一系列独立运行的微服务组成。其中每个服务都只会完成特定领域的功能,比如订单服务提供与订单业务场景有关的功能、商品服务提供商品展示功能等。各个微服务之间通过轻量级通信机制 REST API 或者 RPC 完成通信。 微服务之后在某些层面会带来一定的影响,比如,一个用户查看一个商品的详情,对于客户端来说,可能

spring cloud sleuth链路监控应用(十四)_童话述说我的结局-编程思维

https://docs.spring.io/spring-cloud-sleuth/docs/2.2.5.RELEASE/reference/html/ 一、Sleuth介绍   为什么要使用微服务跟踪?它解决了什么问题? 1.微服务的现状? 微服务的现状  随着业务的发展,单体架构变为微服务架构,并且系统规模也变得越来越大,各微服务间的调用关系也变得越来越复杂。多服务协同工作  在微服务的应

spring cloud ribbon服务路径的解析(一)_童话述说我的结局-编程思维

一、RestTemplate     1.1简介 spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值类型即可。相较于之前常用的HttpClient,RestTemplate是一种更优雅的调用RESTful服务的方式。   在Spring应用程序中访问第三方

spring cloud ribbon服务列表的缓存与更新(二)_童话述说我的结局-编程思维

前面讲到RestTemplate的应用也分析了他的实现,接着通过RestTemplate引出了负载均衡,上个篇幅分析了拦截器、负载均衡器的获取及解析,下面我们接着上次内容讲解。 首先看源码一定要学会找入口    点击getForObject    点击doExecute后到达下图所示位置     @Nullable protected <T> T doExecute(

spring cloud ribbon之url重构(三)_童话述说我的结局-编程思维

接着前面的说,前两篇中分析了解析和动态服务列表的获取,这两步完成后那接下来要做的事就是重组解析后的URL路径和发起通信了,这一步完成应该是在前面分析的RibbonLoadBalancerClient.execute方法中接着往下走     从Debugger中可以看到这个request返回的是LoadBalancerRequestFactory并且是一个lambda表达式,打开进去看过后发现他

spring cloud openfeign的应用(五)_童话述说我的结局-编程思维

一、OpenFeign 1.1、OpenFeign 啥玩意  官网:Feign 是一个声明式的Web服务客户端,让编写Web服务客户端变得非常容易,只需 创建一个接口并在接口上添加注解 即可 1.2、OpenFeign 能干嘛  这图不难理解:客服端调用服务端有两种方式 ribbon + restTemplate 或 Openfeign;但是:在我们实际开发当中,往往 一个接口会被多处调

spring cloud openfeign的原理(六)_童话述说我的结局-编程思维

通过上篇我们了解OpenFeign他也可以完成远程通信,但是它并不是真正义意上的RPC通信,因为他是通过封装代理来实现的,下面和以前一样,知道了怎么用就来看下他是怎么实现的。 一、思考Feign要做的事情 有了ribbon的铺垫现在看OpenFeign应该很清楚的知道,这玩意就是通过注解拿到服务名,然后通过服务名获取服务列表,进行解析和负载最终拼接出一个URI路径进行代理请求,那么他要完成这一系

spring cloud eureka应用篇(七)_童话述说我的结局-编程思维

在之前的例子中我们是通过listOfServers来维护一个服务列表的,但是这样的方式是有问题的,当我们的服务节点很多时这个listOfServers列表就会很长,还有另外一个如果服务节点发生上下线时,客户端是没办法感知的,这样会导致请求可能会发到失败的节点上,而且当节点IP要发生变化时,这个列表也要重新维护,竟然有个问题那就要有解决问题的方案,在分布式的架构中,解决这问题很简单,那就是引用第三

spring cloud eureka源码篇(八)_童话述说我的结局-编程思维

一、Eureka的一些概念 在Eureka的服务治理中,会涉及到下面一些概念:服务注册:Eureka Client会通过发送REST请求的方式向Eureka Server注册自己的服务,提供自身的元数据,比如ip地址、端口、运行状况指标的url、主页地址等信息。Eureka Server接收到注册请求后,就会把这些元数据信息存储在一个双层的Map中。服务续约:在服务注册后,Eureka Clie

zipkin_张建斌-编程思维

这玩意最坑的就是环境了,所以上来先把环境给它整好了,伺候好了,后面也就舒服了。 (一)环境准备: 1:java环境     yum -y install java 2:npm环境    随同NodeJS一起安装的包管理工具    这个国内目前我知道的只有淘宝有。    alias npm="npm --registry=https://registry.npm.taobao.org --dist