接着上一篇关于ribbon介绍(服务提供者只有一个我们似乎没有感觉到负载均衡)我们接着讲ribbon真正的负载均衡

我们就多创建两个微服务提供者,怎么创建微服务工程之前我们就讲过了这里不在多说,如果不懂请参考https://blog.csdn.net/ywl470812087/article/details/102636250

下面就是创建好的

1,pom.xml文件jar包依赖

microservicecloud-provider-dept-8002微服务工程pom.xml

<?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"><parent><artifactId>microservicecloud</artifactId><groupId>com.atguigu.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>microservicecloud-provider-dept-8002</artifactId><dependencies><!-- 引入自己定义的api通用包,可以使用Dept部门Entity --><dependency><groupId>com.atguigu.springcloud</groupId><artifactId>microservicecloud-api</artifactId><version>${project.version}</version></dependency><!-- actuator监控信息完善 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- 将微服务provider侧注册进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><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!-- 修改后立即生效,热部署 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional><scope>true</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!--fork :  如果没有该项配置,可能这个devtools不会起作用,即应用不会restart--><fork>true</fork></configuration></plugin></plugins></build></project>

microservicecloud-provider-dept-8003微服务工程pom.xml

<?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"><parent><artifactId>microservicecloud</artifactId><groupId>com.atguigu.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>microservicecloud-provider-dept-8003</artifactId><dependencies><!-- 引入自己定义的api通用包,可以使用Dept部门Entity --><dependency><groupId>com.atguigu.springcloud</groupId><artifactId>microservicecloud-api</artifactId><version>${project.version}</version></dependency><!-- actuator监控信息完善 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- 将微服务provider侧注册进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><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!-- 修改后立即生效,热部署 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional><scope>true</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!--fork :  如果没有该项配置,可能这个devtools不会起作用,即应用不会restart--><fork>true</fork></configuration></plugin></plugins></build></project>

2,yml配置文件

注意:#数据库密码根据自己的mysql来配置

server:port: 8002mybatis:config-location: classpath:mybatis/mybatis.cfg.xml  #mybatis所在路径type-aliases-package: com.atguigu.springcloud.entities #entity别名类mapper-locations:- classpath:mybatis/mapper/**/*.xml #mapper映射文件spring:application:name: microservicecloud-dept datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: org.gjt.mm.mysql.Driverurl: jdbc:mysql://localhost:3306/cloudDB02username: rootpassword: xxxx                             #数据库密码根据自己的mysql来配置dbcp2:min-idle: 5initial-size: 5max-total: 5max-wait-millis: 200eureka:client: #客户端注册进eureka服务列表内service-url: defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/instance:instance-id: microservicecloud-dept8002   #自定义服务名称信息prefer-ip-address: true     #访问路径可以显示IP地址info:app.name: atguigu-microservicecloudcompany.name: www.atguigu.combuild.artifactId: $project.artifactId$build.version: $project.version$
server:port: 8003                                  #端口mybatis:config-location: classpath:mybatis/mybatis.cfg.xml  #mybatis所在路径type-aliases-package: com.atguigu.springcloud.entities #entity别名类mapper-locations:- classpath:mybatis/mapper/**/*.xml #mapper映射文件spring:application:name: microservicecloud-dept datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: org.gjt.mm.mysql.Driverurl: jdbc:mysql://localhost:3306/cloudDB03           username: rootpassword: xxxx                              #数据库密码根据自己的mysql来配置dbcp2:min-idle: 5initial-size: 5max-total: 5max-wait-millis: 200eureka:client: #客户端注册进eureka服务列表内service-url: defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/instance:instance-id: microservicecloud-dept8003   #自定义服务名称信息prefer-ip-address: true     #访问路径可以显示IP地址info:app.name: atguigu-microservicecloudcompany.name: www.atguigu.combuild.artifactId: $project.artifactId$build.version: $project.version$

最关键的一点注意:微服务实例不能变统一  microservicecloud-dept

spring:application:name: microservicecloud-dept 

之前我们讲过每个微服务可以拥有自己独立的数据库,这里我们就创建其他两个数据库

clouddb02   创建脚本(初始化几条数据)

DROP DATABASE IF EXISTS clouddb02 ;
CREATE DATABASE clouddb02 CHARACTER SET UTF8;
USE clouddb02;
CREATE TABLE dept (deptno BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT ,dname VARCHAR(60),db_source VARCHAR(60)
);INSERT INTO dept(dname,db_source) VALUES('开发部',DATABASE());
INSERT INTO dept(dname,db_source) VALUES('人事部',DATABASE());
INSERT INTO dept(dname,db_source) VALUES('财务部',DATABASE());
INSERT INTO dept(dname,db_source) VALUES('市场部',DATABASE());
INSERT INTO dept(dname,db_source) VALUES('运维部',DATABASE());SELECT * FROM dept;

clouddb03   创建脚本(初始化几条数据)

DROP DATABASE IF EXISTS clouddb03 ;
CREATE DATABASE clouddb03 CHARACTER SET UTF8;
USE clouddb03;
CREATE TABLE dept (deptno BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT ,dname VARCHAR(60),db_source VARCHAR(60)
);INSERT INTO dept(dname,db_source) VALUES('开发部',DATABASE());
INSERT INTO dept(dname,db_source) VALUES('人事部',DATABASE());
INSERT INTO dept(dname,db_source) VALUES('财务部',DATABASE());
INSERT INTO dept(dname,db_source) VALUES('市场部',DATABASE());
INSERT INTO dept(dname,db_source) VALUES('运维部',DATABASE());SELECT * FROM dept;

3,拷贝microservicecloud-provider-dept-8001到其他两个微服务工程

这里我就不讲了,相信大家都会。拷贝完成之后我们需要把主启动类的名字分别改成:DeptProvider8002_App                   DeptProvider8003_App

package com.atguigu.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication
@EnableEurekaClient //本服务启动后会自动注册进eureka服务中
@EnableDiscoveryClient //服务发现
public class DeptProvider8001_App {public static void main(String[] args) {SpringApplication.run(DeptProvider8001_App.class, args);}
}

拷贝和修改完成我们的3个微服务提供者就配置完成

下面我们就来测试一下:

1,首先启动eureka集群,如果不懂eureka集群请参考学习这篇文章,这里就不多说了

2,启动3个微服务提供者,如果不懂微服务提供者实现请参考https://blog.csdn.net/ywl470812087/article/details/102535582

自测启动是否成功:

3,启动客户端消费者

注意:现在consumer可是带着@LoadBalanced算法的

访问:http://localhost/consumer/dept/list

再次访问:http://localhost/consumer/dept/list

再次访问:http://localhost/consumer/dept/list

看见没有访问返回的结果是不是可以看出已经起到了负载均衡的效果轮询访问。

从注册中心我们也可以看见一个微服务下挂着三个实例

以上ribbon的负载均衡已经讲解完毕是不是觉得很简单

总结:Ribbon就是软负载均衡的客户端组件,可以和其他所需请求的客户端结合使用,和eureka结合只是其中一个实例

SpringCloud Ribbon实战(三)相关推荐

  1. SpringCloud Ribbon实战(二)

    接着上一篇我们了解了Ribbon的客户端的负载均衡器 接下来我看下如何使用做到负载均衡,话不多说直接上开始吧 我们创建一个客户端的消费者微服务工程: microservicecloud-consume ...

  2. SpringCloud Ribbon(三)之IPing机制

    一.IPing机制 IPing是一个主动探测服务节点存活的机制,通过判断服务节点的当前状态,设置节点的可用状态.只有当节点为可用时候才会作为负载均衡器的选取节点. IPing有以下几种模式: Dumm ...

  3. SpringCloud Ribbon实战以及Ribbon的源码浅析(四)

    Ribbon负载均衡的策略有下面几种: 上面我们讲解了Ribbon的默认轮询负载均衡的算法 我们先看下Ribbon负载均衡的算法源码:https://github.com/Netflix/ribbon ...

  4. SpringCloud Ribbon实战以及Ribbon随机策略RandomRule的源码浅析(六)

    随机策略RandomRule的源码: /*** Copyright 2013 Netflix, Inc.** Licensed under the Apache License, Version 2. ...

  5. SpringCloud企业实战专栏

    Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线).分布式系统的协调导致了样板模式, 使用Spring Clo ...

  6. 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)

    转:https://blog.csdn.net/forezp/article/details/69808079 最新版本: 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign ...

  7. SpringCloud feign 的三种超时时间配置

    1.负载均衡 Feign调用服务的默认时长是1秒钟,也就是如果超过1秒没连接上或者超过1秒没响应,就会相应的报错.Feign 的负载均衡底层用的是 Ribbon,其配置如下: ribbon:ReadT ...

  8. 视频教程-spring-cloud分布式实战-Java

    spring-cloud分布式实战 10余年软件工作经验,任职过程序员,项目经理,技术经理,架构师.在互联网公司从0到1的搭建过项目 李焱兵 ¥199.00 立即订阅 扫码下载「CSDN程序员学院AP ...

  9. 【真会玩】- SpringCloud Netflix 实战笔记 -【Eureka】

    文章目录 友情提醒 前置环境搭建 Eureka 概念初识 服务注册 服务发现 续租 拉取注册表 Cancel 同步时间延时 通讯机制 Eureka服务端搭建 Eureka客户端 Provider搭建 ...

最新文章

  1. 小米:开源不仅要站在巨人的肩膀上,还要为巨人指方向
  2. 软件测试基础 - 测试覆盖率
  3. (原创)cocos2dx-lua TableView官方demo分析
  4. 基于暗通道优先算法的去雾应用(Matlab/C++)
  5. 日志管理:(二)og4j.xml警告log4j:WARN The content of element type log4j:configuration m
  6. LuckyDraw bot有幸被提名为微软2019的People's Choice app
  7. python中object转为float_object格式怎样无损转换成float64格式
  8. springboot三层架构_几张图让你快速了解数据中台技术架构
  9. 【Python-2.7】切片
  10. java 100个定时任务_Java定时任务解决方案
  11. ExtJS2.0开发与实践笔记[4]——Ext中的动画处理
  12. 配置IIS5.5/6.0 支持 Silverlight
  13. Java怎么学?分享6个学习窍门
  14. 操作无法完成 打印后台程序服务没有运行
  15. java 在图片上添加文字或图片
  16. 西数MyBookDuo提供致臻性能、超大容量及综合数据保护
  17. MAUI 跨平台应用开发实战
  18. 惠普台式计算机耳机插口,惠普耳机插在台式电脑上没声音,为什么
  19. android夜间模式监控
  20. 【山东seo】-淄博孔祥永seo技术分享博客

热门文章

  1. 灰色关联与TOPSIS法 —— python
  2. 【OpenCV 例程200篇】89. 带阻滤波器的传递函数
  3. vue点击其它侧边栏收缩_企业微信聊天侧边栏功能怎么开启?聊天侧边栏有什么用?...
  4. mysqlmodify_modify与change的区别
  5. 三菱a系列motion软体_工控电缆如何制作?(以三菱PLC、触摸屏为例)
  6. 服务器推技术相关网址
  7. python 反射机制
  8. fiddler抓包工具配置详解
  9. 【Python】PyMuPDF模块将PDF转换为图片
  10. Windows 下的批处理脚本基础——炫酷命令提示符窗口(让窗口变成你喜欢的样子)