springcloud
springcloud
MQCloud
https://github.com/sohutv/mqcloud
展开
-
springboot多数据源支持
mybatis+多数据源+多连接池配置网上大多配置都是mybatis+多数据源,并没有对应的多数据池,这里列举一个完整的例子,废话不多说,直接看代码1.pom.xmlpom里只用增加一个mybatis整合spring-boot的依赖:<dependency> <groupId>org.mybatis.spring.boot</groupId> <...原创 2020-01-03 16:42:36 · 252 阅读 · 0 评论 -
性能大比拼
一、创建euraka集群创建父项目,包含父pom文件和子项目,并增加依赖,主要是:spring-cloud-starter-parent<parent> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-parent<...原创 2020-01-03 16:35:32 · 587 阅读 · 0 评论 -
FeignClient
一、介绍一个普通的java接口,加上FeignClient注解,就可以完成整合hystrix,ribbon的http调用,使用上很是方便,也感觉很神奇,内部实现有必要探究一下。二、问题第一个问题:被@FeignClient标注的类,在spring中最终注入的是什么?第二个问题:如何跟hystrix结合的?第三个问题:如何跟ribbon结合的?第四个问题:调用过程?带着这四个问题,...原创 2020-01-03 16:05:19 · 1091 阅读 · 0 评论 -
4.调用关系及超时说明
调用关系图类似如下:User发起http请求,这里省略了controller的一层,只为表明RestTemplate的调用过程Hystrix采用aop拦截的方式,对标注HystrixCommand的方法进行拦截RestTemplate执行内部的拦截链,但是此拦截并非aop,只是普通的java连接链,类似于ServletFilterRibbon执行负载均衡,选择合适的server(包含...原创 2020-01-03 15:51:28 · 755 阅读 · 0 评论 -
3.结合ribbon
一、简介ribbon是一个支持http,tcp客户端的负责均衡库。二、引入在这里,结合spring-boot的方式,在pom中添加如下依赖:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-rib...原创 2020-01-03 15:22:48 · 212 阅读 · 0 评论 -
2.结合hystrix
一、简介当http服务接口响应超时或调用http服务发生异常时,需要结合hystrix进行降级。二、引入在这里,结合spring-boot的方式,在pom中添加如下依赖:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cl...原创 2020-01-03 15:13:14 · 115 阅读 · 0 评论 -
1.快速入门
一、简介RestTemplate是spring提供的http客户端模版,类似JdbcTemplate,它是线程安全的,支持切换不同的http客户端,目前支持HttpClient-4.3, OKHttp3, 基于netty4实现的http客户端和基于java的URLConnection实现的http客户端。二、引入RestTemplate默认已经包含在spring-web中,其默认采用java...原创 2020-01-03 15:02:44 · 237 阅读 · 0 评论 -
11.ribbon区域亲和
一、简介ribbon的区域亲和机制如下(需要说明一点,亲和性发生在过滤阶段,请参考负载均衡器中server列表是如何动态更新的部分):以上的图示及文字仅为举例说明,下面描述一下图上表示的流程:首先,先看右下角的provider集群,因为会分别部署在北京,上海,广州三个地区,把这里地区看作zone,故有三个zone。provider集群会把实例信息(ip+port+name等等)按照配置e...原创 2020-01-03 14:46:48 · 608 阅读 · 0 评论 -
10.重试
<!doctype html>tmp.md一、简介ribbon的重试是指consumer调用provider发生异常后,ribbon发起重试。RestTemplate和Feign使用的重试机制不一样,下面分开进行说明。二、RestTemplate重试RestTemplate都是spring-cloud来做的,内部依赖于spring-retry,增加如下配置打开重试机制...原创 2020-01-03 14:33:09 · 561 阅读 · 0 评论 -
9.与springcloud结合
一、简介使用ribbon,一般都是和springcloud结合使用,springcloud提供了胶水代码来整合ribbon。二、接口ServiceInstanceChooser该接口只有一个方法:public interface ServiceInstanceChooser { /** * Choose a ServiceInstance from the LoadBal...原创 2020-01-03 11:50:24 · 169 阅读 · 0 评论 -
8.负载均衡器
一、引子从负载均衡策略可以了解到ribbon实现的各种负载均衡策略,当然也可以自己实现相应的算法。其中主要的接口IRule中有个定义如下:public ILoadBalancer getLoadBalancer();算法使用的server列表以及状态信息都从它获取,这里,就从它开始。二、接口ILoadBalancer,从源码的注释中很容易看出,它定义负载均衡的操作,并对server进行存...原创 2020-01-03 11:43:55 · 448 阅读 · 0 评论 -
7.状态统计
一、简介这里的统计主要是触发远程调用的统计,跟负载均衡没啥关系,但是,负载均衡需要这些依赖这些统计信息做为判断的策略。统计类主要是LoadBalancerStats,其内部持有ServerStats对每个server的调用做了相关统计。二、实现成员变量1.1 LoadBalancerStats内部有两个成员变量,一是upServerListZoneMap,二是serverStatsCa...原创 2020-01-03 11:27:55 · 466 阅读 · 0 评论 -
6.ServerListFilter
一、简介从名字可以看出来,这个接口实现了server类别的过滤功能。二、接口接口比较简单,如下:public interface ServerListFilter<T extends Server> { public List<T> getFilteredListOfServers(List<T> servers);}入参为server列表...原创 2020-01-03 11:15:38 · 599 阅读 · 0 评论 -
5.ServerListUpdater
一、简介顾名思义,这个类用于server列表的更新。二、接口这个类定义的方法较多,这里只看两个重要的:public interface ServerListUpdater { /** * an interface for the updateAction that actually executes a server list update */ pub...原创 2020-01-03 11:08:25 · 1449 阅读 · 0 评论 -
4.ServerList
一、简介ServerList就是server的列表,我们知道,IRule做负载均衡的关键参数就是server列表,就是从这里获取的。二、接口其接口比较简单,定义了两个方法,如下:public interface ServerList<T extends Server> { public List<T> getInitialListOfServers(); ...原创 2020-01-03 11:00:20 · 2678 阅读 · 0 评论 -
3.ping
一、简介字如其名,ribbon采用IPing接口来探测server是否存活。二、接口接口很简单,代码如下:public interface IPing { public boolean isAlive(Server server);}IPing有好多实现(但是大部分都没啥用),如下:三、深入这里如果使用eureka的话,其默认的实现为NIWSDiscoveryPing(...原创 2020-01-03 10:56:20 · 193 阅读 · 0 评论 -
2.负载均衡策略
一、简介为什么一开始就需要了解这一块,原因就是这块涉及到的组件的调用关系相对独立,更容易理解,而这块也是ribbon的核心之一。二、接口ribbon的负载均衡最终都委托给了一个类来实现,那就是IRule,IRule负责不同的策略算法,接口定义如下:public interface IRule{ public Server choose(Object key); public...原创 2020-01-03 10:52:32 · 251 阅读 · 0 评论 -
1.ribbon
ribbon作为客户端负载均衡的重要组件,很有必要对其内部机制了解清楚,以便在生产中更熟练的应用。关于ribbon网上的源码分析很多,例如:http://blog.didispace.com/springcloud-sourcecode-ribbon/http://blog.csdn.net/forezp/article/details/74820899但是源码类文章读完更多时候是比较懵的...原创 2020-01-03 10:39:44 · 195 阅读 · 0 评论