Ribbon策略
说明Ribbon默认的策略是轮询策略,这种默认的轮询策略肯定是不能满足实际需求的,比如有3个服务提供者,突然挂了一个,这样的话,默认轮询 ,总有1/3的概率访问失败,会出现下面的错误,所以需要选择合适的策略
策略大全
策略名
策略声明
策略描述
实现说明
BestAvailableRule
public class BestAvailableRule extends ClientConfigEnabledRoundRobinRule
选择一个最小的并发请求的server
逐个考察Server,如果Server被tripped了,则忽略,在选择其中ActiveRequestsCount最小的server
AvailabilityFilteringRule
public class AvailabilityFilteringRule extends PredicateBasedRule
过滤掉那些因为一直连接失败的被标记为circuit tripped的后端server,并过滤掉那些高并发的的后端server(active connections 超过配置的阈值)
使用一个 ...
Ribbon负载均衡
新建Module新建两个Module,一个名称为:microservice-student-provider-1002,另一个名称为:microservice-student-provider-1003,通过三个服务提供者实现集群,然后才能演示负载均衡,以及负载均衡策略
复制文件pom.xml,application.yml,以及java类都复制一份,启动类名称对应Module的名称的数字进行修改
yml配置文件有两处要修改:port端口和服务实例名称对应Module的名称的数字进行修改
修改代码为了方便查看具体执行了哪个服务提供者,在三个服务提供者的StudentProviderController的list方法中添加一条打印语句,打印语句的数字对应Module的名称的数字进行修改
测试先启动三个eureka集群,再启动三个服务提供者集群
测试服务提供者:
http://localhost:1001/student/list
http://localhost:1002/student/list
http://localhost:1003/student/list
测试下Eur ...
Ribbon调用服务
Ribbon简介Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP的客户端的行为。为Ribbon配置服务提供者地址后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多负载均衡算法,例如轮询、随机等。当然,我们也可为Ribbon实现自定义的负载均衡算法。
在Spring Cloud中,当Ribbon与Eureka配合使用时,Ribbon可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例。下图展示了Ribbon与Eureka配合使用时的架构。
实现过程我们修改microservice-student-consumer-80子模块项目
引入依赖123456789101112<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId>&l ...
Eureka注册中心高可用集群配置
作用当注册中心扛不住高并发时,就需要集群了
新建Module新建两个Module,一个名称为:microservice-eureka-server-2002,另一个名称为:microservice-eureka-server-2003
继承依赖在新建的两个Module的pom.xml中添加:
123456<!--继承microservice依赖版本--><parent> <groupId>org.example</groupId> <artifactId>microservice</artifactId> <version>1.0-SNAPSHOT</version></parent>
添加依赖在新建的两个Module的pom.xml中添加:
1234567891011121314<!--Eureka服务--><dependency> <groupId>org.springframework.cloud</gro ...
服务提供者注册到Eureka
在microservice-student-provider-1001子模块项目的基础上修改
修改pom.xml加上eureka客户端依赖
123456789<!--eureka客户端依赖--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId></dependency>
修改application.yml直接添加下面代码
123456789eureka: instance: hostname ...
搭建Eureka服务注册中心
新建Module该Module为Maven项目,命名为microservice-eureka-server-2001
修改pom.xml1234567891011121314151617181920212223242526272829303132333435<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <pack ...
Spring Cloud搭建服务消费者项目
作用用于消费服务
新建Module该Module为Maven项目,命名为microservice-student-consumer-80
修改pom.xml1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> < ...
Spring Cloud搭建服务提供者项目
作用用于提供服务
新建Module该Module为Maven项目,命名为microservice-student-provider-1001
修改pom.xml1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0. ...
Spring Cloud搭建公共模块项目
作用存放一些其他项目公用的东西,比如实体类,工具类等
新建Module该Module为Maven项目,命名为microservice-common
继承依赖在pom.xml文件中加入:
12345<parent> <groupId>org.example</groupId> <artifactId>microservice</artifactId> <version>1.0-SNAPSHOT</version></parent>
引入依赖12345678<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency> <groupId>mysql</groupId> ...
Spring Cloud搭建父项目
新建项目新建一个名称为SpringCloud普通项目,删除src文件夹
新建ModuleModule 概述在SpringCloud下新建一个Module Maven项目,名称为microservice,删除src文件夹,用于管理依赖版本,pom.xml文件的packaging节点修改为pom
1<packaging>pom</packaging>
修改pom.xml引入Spring Cloud、Spring Boot、连接池依赖
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-inst ...