智乐活

智乐活

Spring Cloud Zuul 网关(二)
上篇文章 Spring Cloud Zuul 网关(一) 介绍了 Spring Cloud Zuul 的基本使用方法,本篇文章会对 Zuul 的过滤器机制、hystrix 及 ribbon 支持做进一步介绍。 过滤器Zuul 中的过滤器负责在转发外部请求的过程中对处理过程进行干预,在实际运行时,路由映射和请求转发等步骤都是由不同的过滤器完成。 Spring Cloud Zuul 中的过滤器包含以下 4 个基本特征: 过滤类型 过滤器所处的生命周期,Zuul 默认定义了 4 种不同生命周期,分别为 pre(请求被路由前调用)、routing(在路由请求时被调用)、post(在 ro...
Spring Cloud Zuul 网关(一)
利用之前提到的微服务组件,已经可以建立起一个简单的微服务系统: 通过 Spring Cloud Eureka 实现高可用服务注册中心 通过 Spring Cloud Ribbon 或 Feign 实现服务间负载均衡的接口调用 通过 Spring Cloud Hystrix 实现线程隔离和熔断,防止故障扩散 但是由于在微服务架构中,后端服务往往不直接开放给外部程序调用,所以需要一个 API 网关,根据请求的 Url 路由到相应的服务。API 网关负责外部应用到微服务系统之间的请求路由、负载均衡和校验过滤等功能的实现。 在 Spring Cloud 体系中,Spring Cloud Z...
Spring Cloud Feign 声明式服务调用
在微服务的实践过程中,Spring Cloud Ribbon 和 Spring Cloud Hystrix 通常一起使用。 Spring Cloud Feign 是对这两个基础工具的更高层次封装,在 Netflix Feign 的基础上扩展了对 Spring MVC 的注解支持,提供了一种声明式的 Web 服务客户端定义方式。 快速入门启动服务注册中心 eureka-server 及服务提供方 hello-service,创建 spring boot 工程 feign-consumer。 1.添加依赖12345678<dependency> <groupId&g...
Hexo + Github 搭建博客
Hexo 是一款基于 Node.js 的静态博客框架,支持 Github Flavored Markdown 语法,可一键部署到 Github Pages。 配置环境安装 Hexo 前,需要检查是否已经安装下列应用; Node.js Git 如已安装上述必备程序,通过 sudo npm install -g hexo-cli 安装Hexo。 建站流程 在 Github 中创建仓库 username.github.io 创建本地目录 username.github.io 并在目录中执行 hexo init 修改目录中的 _config.yml ,详见 Hexo 配置 ,如下为部署相关配...
Spring Cloud Hystrix 容错保护
在微服务架构中,系统被拆分成很多个服务单元,各个服务单元的应用通过 HTTP 相互调用、依赖。 在某个服务由于网络或其他原因自身出现故障、延迟时,调用方也会出现延迟。若调用方请求不断增加,可能会形成任务积压,最终导致调用方服务瘫痪,服务不可用现象逐渐放大。 Spring Cloud Hystrix针对上述问题,Spring Cloud Hystrix 实现了一系列服务保护措施,从而实现服务降级、服务熔断等功能,对延迟和故障提供强大的容错能力。 Hystrix 有以下主要特性: 服务熔断 Hystrix 会记录各个服务的请求信息,通过 成功、失败、拒绝、超时 等统计信息判断是否打开...
JVM 性能监控与故障处理工具
JDK 中包含一些命令行工具,这些工具能在处理应用程序性能问题、定位故障时发挥很大的作用。 jpsJVM Process Status Tool,用于显示系统内所有的 HotSpot 虚拟机进程。 jps 可以列出正在运行的 JVM 进程,显示 JVM 执行主类及进程的本地虚拟机唯一 ID(与操作系统进程 ID 一致)。 常用选项: -q:只输出进程 ID,隐藏主类名称 -m:输出进程启动时传递给主类 main() 函数的参数 -l:输出主类全名,如进程执行的是 Jar 包,输出 Jar 路径 -v:输出虚拟机进程启动时 JVM 参数 jstatJVM Statistics Mon...
JVM GC 与 内存分配策略
对象存活算法Java 堆中存放着几乎所有的对象实例,垃圾收集器在对堆进行回收前,需要确定对象是否存活。 引用计数算法给对象添加一个引用计数器,每当一个地方引用它时,计数器的值加 1;引用失效时减 1。 主流 JVM 没有选用此种算法管理内存,主要原因是它难以解决对象间循环引用的问题。 可达性分析算法可达性分析算法是 JVM 主流实现中采用的算法。基本思路是通过一系列 GC Roots 对象为起点向下搜索,搜索所走过的路径称为 引用链 。当一个对象到 GC Roots 没有任何引用链相连时,会被判定为可回收对象。 GC Roots 对象包括以下几种:虚拟机栈中引用的对象;方法区中类静态属...
JVM 内存区域
JVM 在执行 Java 程序的过程中会把它所管理的内存划分为如下几个数据区域: 程序计数器 虚拟机栈 本地方法栈 堆 方法区 程序计数器程序计数器是一块很小的内存空间,是当前线程所执行字节码的行号指示器,线程间私有不共享。执行 Java 方法时计数器的值为字节码指令的地址,执行 Native 方法时值为空。不会出现OutOfMemoryError。 虚拟机栈虚拟机栈为线程私有,生命周期与线程相同,描述 Java 方法执行的内存模型。方法执行时创建栈帧,用于存储局部变量表、操作数栈、方法出口等信息。 局部变量表存放了编译器可知的基本数据类型、对象引用和 returnAddress...
Spring Cloud Ribbon 客户端负载均衡
Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的客户端负载均衡工具。 Spring Cloud Ribbon 在单独使用时,可以通过在客户端中配置 ribbonServerList 来指定服务实例列表,通过轮训访问的方式起到负载均衡的作用。 在与 Eureka 联合使用时,ribbonServerList 会被重写,改为通过 Eureka 服务注册中心获取服务实例列表,可以通过简单的几行配置完成 Spring Cloud 中服务调用的负载均衡。 负载均衡实践在实践客户端负载均衡之前,首先构建并启动 eureka-server,作为服务注册中心。 然后...
Spring Cloud Eureka 服务治理
Spring Cloud Eureka 是对 Netflix Eureka 的二次封装,增加了 Spring Boot 风格的自动化配置,只需简单地引入依赖和注解就能提供完整的服务注册和服务发现。 服务中心服务中心又称注册中心,集中式地管理各个服务的注册和发现。 在服务较多、每个服务又多份部署的的情况下,手动管理服务间的调用关系既麻烦又容易出错,其中一个服务改动,就会牵连好几个服务跟着重启。 在包含服务中心的微服务体系中,每个服务都将自身的信息注册到服务中心,各个服务间的调用都需要通过服务中心来调用,服务间调用关系有服务中心来统一管理。 EurekaEureka 采用 C-S 设计架构...
智乐活
No Code Is The Best Code
FRIENDS
JiangYue