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 ...
Dubbo服务集群实现负载均衡
作用当某个服务并发量特别大的时候,一个服务延迟太高,我们就需要进行服务集群,例如某个项目一天注册量10万,这个注册功能就必须要进行集群了,否则一个服务无法应付这么大的并发量
企业级项目多个服务集群,每个服务都放不同机器,不仅能实现负载均衡,也能进行容错;就算一个机器挂了,其他机器可以继续服务
多个服务也提供权重设置,来动态设置请求分发量
实现方法dubbo的服务集群很简单,只需要配置文件里改个端口即可,其他代码不需要动
代码实现在之前Provider子模块项目的基础上,直接修改dubbo-demo-provider.xml的端口号即可(端口号只要不被占用即可,不需要和本文章的端口号一样)
12<!--使用dubbo协议在20880端口暴露服务--><dubbo:protocol name="dubbo" port="20880"/>
修改后:
12<!--使用dubbo协议在20881端口暴露服务--><dubbo:protocol name="dubbo" port="2 ...