10 2019 档案
摘要:1、搭建一个eureka-server注册中心工程 该工程比较简洁,没有太多配置,不在描述,单节点,服务端口:8888 2、创建zuul-gateway网关工程 2.1、工程pom依赖 2.2、工程配置文件:zuul-gateway\src\main\resources\bootstrap.yml
阅读全文
摘要:在项目中,大部分都会使用到hyrtrix做熔断机制,通过某个预定的阈值来对异常流量进行降级处理,除了做服务降级以外,还可以对服务进行限流,分流,排队等。 当然,zuul也能做到限流策略,最简单的方式就是使用自定义的filter加上限流算法,生产环境中zuul网关肯定是部署的多节点,所以还会借助类似R
阅读全文
摘要:实际业务中,如果要自定义filter过滤器,只需集成ZuulFIlter类即可,该类是个抽象类,它实现了IZuulFIlter接口,我们需要实现几个方法,如下示例:
阅读全文
摘要:zuul的核心逻辑都是由一系列filter过滤器链实现的,但是filter的类型不同,执行的时机也不同,效果自然也不一样,主要特点如下: zuul内部有一套完整的机制,可以动态读取编译运行filter机制,filter与filter之间不直接通信,在请求线程中会通过RequestContext来共享
阅读全文
摘要:概述:zuul底层是基于servlet,是由一系列的filter链构成。 1、路由配置 a、单例serverId映射 意思是,以/client/**为端点路径的服务都映射到client-a,这种配置还可以简写成下面的格式,二者效果完全一致: 还有一种更粗暴的方式,就是映射的serverId都不用写,
阅读全文
摘要:1、创建eureka-server注册中心工程,配置跟之前讲eureka文章中一样,这里不再赘述 1.1、端口8888 2、创建一个demo-client工程 2.1、demo-client启动类跟之前一样,其配置文件也一样,没有做太多配置,这里不再赘述,端口:7070,服务名:client-a。
阅读全文
摘要:1、常用参数说明 hystrix参数的详细配置可参照 https://github.com/Netflix/Hystrix/wiki/Configuration 下面是一些常用的配置: 在真实的项目中,一般会对超时时间、线程池大小、信号量等进行修改,具体需要根据业务,hystrix默认超时1秒,实际
阅读全文
摘要:在之前的老版本中,feign中是默认开启hystrix的,从新版本中默认已经关闭了,如果要通过FeignClient调用服务并开启hystrix的话,需要自定义开启,即:feign.hystrix.enabled=true。 在hystrix中,有5种异常会被fallback: FAILURE:执行
阅读全文
摘要:公共依赖配置: 1、创建client-server工程 1.1、client-server工程pom依赖: 1.2、client-server工程启动类: 1.3、client-server工程配置文件:client-server\src\main\resources\bootstrap.yml 1
阅读全文
摘要:Ribbon的加载策略是懒加载,即第一次请求的时候才加载对应上下文,正是这个原因,很多时候第一次调用显得很慢,甚至会超时,所以,可以通过指定ribbon具体服务名称来开启饿加载,即在工程启动的时候,加载所有的配置上下文。如下: ribbon在1.2.0版本以后,可以使用配置文件来定制ribbon客户
阅读全文
摘要:ribbon有7种负载均衡策略可供选择: 如果想要创建一个全局的负载策略,只需添加一个配置类,也可自己扩展,添加逻辑,如下: 如果想要对某个服务源设置特有的策略,可以在工程启动类上添加@RibbonClient注解,当然,对应配置代码也需要调整: 如果想使用配置文件的方式,进行配置负责策略,语法是
阅读全文
摘要:公共依赖: 1、创建eureka-server注册中心工程 a、eureka-server工程pom依赖: b、eureka-server启动类: c、eureka-server工程配置文件:eureka-server\src\main\resources\bootstrap.yml d、启动注册中
阅读全文
摘要:本文转载自:Mysql主从复制原理及同步延迟问题 主从复制解决的问题 数据分布:通过复制将数据分布到不同地理位置 负载均衡:读写分离以及将读负载到多台从库 备份:可作为实时备份 高可用性:利用主主复制实现高可用 复制原理 复制的原理其实很简单,仅分为以下三步: 在主库上把数据更改记录到二进制日志bi
阅读全文
摘要:本文转载自:JWT 身份认证优缺点分析以及常见问题解决方案 Token 认证的优势 相比于 Session 认证的方式来说,使用 token 进行身份认证主要有下面三个优势: 1.无状态 token 自身包含了身份验证所需要的所有信息,使得我们的服务器不需要存储 Session 信息,这显然增加了系
阅读全文
摘要:使用feign调用服务的时候,存在一个问题,比如当前服务调用A服务,在请求头中包含了某些特殊的字段信息,比如当前操作人的token信息,调用A的时候可以正常拿到token,然而在去调用B服务的时候,可能就会丢失token信息,自然也就调用B服务失败。解决方式就是在feign调用的时候,向请求头里添加
阅读全文
摘要:当feign和ribbon整合hystrix之后,可能会出现首次调用失败的问题,出现原因分析如下: hystrix默认的超时时间是1秒,如果接口请求响应超过这个时间,将会执行fallback,spring在装配bean的机制以及懒加载原因,feign的首次请求都会相对较慢,如果请求超过1秒,就会出现
阅读全文
摘要:话不多说,上代码。。。。 项目公共依赖配置: 1、创建注册中心工程 a、eureka server工程pom依赖: b、eureka server工程启动类: c、eureka server工程配置文件:eureka-server\src\main\resources\bootstrap.yml 2
阅读全文
摘要:说明: feign默认情况下使用的是JDK原始的URLConnection发送的HTTP请求,没有使用到连接池,但是对每个地址会保持长连接,即HTTP的persistence connection。我们可以利用Apache的HTTP client替换原始的HTTP client,通过设置连接池,超时
阅读全文
摘要:SpringCloudFeign支持对请求和响应进行gzip压缩,以此来提高通信效率。 1、搭建gzip-demo工程 1.1、工程依赖: 1.2、工程启动类: 1.3、编写测试代码: client接口: config配置类: controller类: 1.4、工程配置文件: 2、启动工程 访问 h
阅读全文
摘要:首先看一下@FeignClient注解的源码: 可以看出@FeignClient注解被@Target(ElementType.TYPE)修饰,表示@FeignClient注解的作用目标在接口上。 针对其常用属性做如下归纳: String name():指定FeignClient的名称,如果项目使用了
阅读全文
摘要:feign简介: feign是一种声明式,模板化的HTTP客户端,spring cloud对feign进行了增强,使其支持SpringMvc的相关注解,并整合了ribbon做负载均衡。在spring cloud中使用feign做HTTP远程服务请求,可以做到就像调用本地方法一样,完全感知不到是在调用
阅读全文
摘要:1、应用服务启动前不可用 假设eureka server服务在client应用服务启动之前挂掉,或者没有启动,这时应用服务依然可以正常启动,但是会有报错信息: 由于连不上eureka server,自然访问不了service registry的服务注册信息,不能与其它的服务交互。这种情况下,eure
阅读全文
摘要:上一篇主要说的是开启http basic认证,从安全角度来讲,基于base64编码,容易被抓包后破解,在公网中很不安全,本文详谈如何在eureka server和eureka client中开启https。 公共依赖pom文件 1、eureka server工程 1.1、eureka server工
阅读全文
摘要:在我们实际生产环境中,都需要考虑到一个安全问题,比如用户登录,又或者是eureka server,它对外暴露的有自己的rest API,如果没有安全认证,也就意味着别人可以通过rest API随意修改数据信息,这是一件非常恐怖的事情,这篇文章咱们详谈eureka server是如何开启认证,以及eu
阅读全文
摘要:工程公共pom依赖 1、eureka server工程 1.1、eureka server工程pom依赖: 1.2、项目启动类: 1.3、这里配置4个eureka server实例,路径:eureka-server\src\main\resources\,分4个zone,属于region-east、
阅读全文
摘要:工程pom中公共依赖 1、Eureka Server工程 启动4个实例,配置两个zone,即zone1、zone2,每个zone都要2个eureka server实例,这个2个zone配置在同一个region上,即region-east。 1.1、eureka-server工程pom文件: 1.2、
阅读全文
摘要:1、准备工作 PS:为了偷懒,每个pom文件都要依赖的公共依赖配置放在下面: 1.1、由于需要动态修改配置,这里需要创建config-server工程,pom依赖如下: 1.2、config-server工程启动类如下: 1.3、添加项目配置文件,资源路径:config-server\src\mai
阅读全文