java使用ribbion事例_springcloud(十四)、ribbon负载均衡策略应用案例

一、eureka-server服务中心项目不再创建

二、eureka-common-empdept公共组件项目不再掩饰

三、创建eureka-client-provider-empdept-one提供者项目

3.1 结构如下

f878199486df9ed2fdfa8966f5f4d2db.png

pom.xml文件内容如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1

2

3 cn.kgc

4 eureka-common-empdept

5 0.0.1-SNAPSHOT

6

7

8 org.springframework.boot

9 spring-boot-starter-jdbc

10

11

12 org.springframework.boot

13 spring-boot-starter-web

14

15

16 org.mybatis.spring.boot

17 mybatis-spring-boot-starter

18 2.1.0

19

20

21 org.springframework.cloud

22 spring-cloud-starter-netflix-eureka-client

23

24

25

26 mysql

27 mysql-connector-java

28 5.1.38

29

30

31 org.springframework.boot

32 spring-boot-starter-test

33 test

34

35

pom.xml

3.2 DeptMapper.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecn.kgc.mapper;2

3 importcn.kgc.vo.Dept;4 importorg.apache.ibatis.annotations.Select;5

6 importjava.util.List;7

8 /**

9 * Created by Administrator on 2019/8/29.10 */

11 public interfaceDeptMapper {12 @Select("select * from dept")13 ListoptionData();14 }

DeptMapper.java

3.3EmpMapper.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecn.kgc.mapper;2

3 importcn.kgc.vo.Emp;4 importorg.apache.ibatis.annotations.Select;5

6 importjava.util.List;7 importjava.util.Map;8

9 /**

10 * Created by Administrator on 2019/8/29.11 */

12 public interfaceEmpMapper {13 List>showData(Emp emp);14 }

EmpMapper.java

3.4EmpMapper.xml

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 <?xml version="1.0" encoding="UTF-8"?>

2 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

5

6

7 select d.dname,d.loc,e.* from emp e,dept d where e.deptno=d.deptno8

9 and e.empno=#{empno}10

11

12 and e.deptno=#{deptno}13

14

15

EmpMapper.xml

3.5DeptService.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecn.kgc.service;2

3 importcn.kgc.vo.Dept;4 importorg.apache.ibatis.annotations.Select;5

6 importjava.util.List;7

8 /**

9 * Created by Administrator on 2019/8/29.10 */

11 public interfaceDeptService {12 ListoptionData();13 }

DeptService.java

3.6  DeptServiceImpl.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecn.kgc.service;2

3 importcn.kgc.mapper.DeptMapper;4 importcn.kgc.vo.Dept;5 importorg.springframework.beans.factory.annotation.Autowired;6 importorg.springframework.stereotype.Service;7

8 importjava.util.List;9

10 @Service11 public class DeptServiceImpl implementsDeptService{12

13 @Autowired14 privateDeptMapper deptMapper;15

16 public ListoptionData() {17 returndeptMapper.optionData();18 }19 }

DeptServiceImpl.java

3.7 EmpService.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecn.kgc.service;2

3 importcn.kgc.vo.Emp;4

5 importjava.util.List;6 importjava.util.Map;7

8 /**

9 * Created by Administrator on 2019/8/29.10 */

11 public interfaceEmpService {12 List>showData(Emp emp);13 }

EmpService.java

3.8  EmpServiceImpl.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecn.kgc.service;2

3 importcn.kgc.mapper.EmpMapper;4 importcn.kgc.vo.Emp;5 importorg.springframework.beans.factory.annotation.Autowired;6 importorg.springframework.stereotype.Service;7 importorg.springframework.transaction.annotation.Transactional;8

9 importjava.util.List;10 importjava.util.Map;11

12 @Service13 @Transactional14 public class EmpServiceImpl implementsEmpService{15 @Autowired16 privateEmpMapper empMapper;17

18 public List>showData(Emp emp) {19 returnempMapper.showData(emp);20 }21 }

EmpServiceImpl.java

3.9 CenterController,java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecn.kgc.controller;2

3 importcn.kgc.mapper.DeptMapper;4 importcn.kgc.mapper.EmpMapper;5 importcn.kgc.service.DeptService;6 importcn.kgc.service.EmpService;7 importcn.kgc.vo.Dept;8 importcn.kgc.vo.Emp;9 importorg.slf4j.Logger;10 importorg.slf4j.LoggerFactory;11 importorg.springframework.beans.factory.annotation.Autowired;12 importorg.springframework.web.bind.annotation.RequestBody;13 importorg.springframework.web.bind.annotation.RequestMapping;14 importorg.springframework.web.bind.annotation.RequestParam;15 importorg.springframework.web.bind.annotation.RestController;16

17 importjava.util.List;18 importjava.util.Map;19

20 @RestController21 public classCenterController {22

23 @Autowired24 privateEmpService empService;25

26 @Autowired27 privateDeptService deptService;28

29 private Logger logger= LoggerFactory.getLogger(CenterController.class);30

31 @RequestMapping("/ribbon.do")32 public String ribbonTest(@RequestParam("count") Integer count){33 logger.info("provider>>> "+count+" <<

37 @RequestMapping("/option.do")38 public ListoptionData() {39 returndeptService.optionData();40 }41

42 @RequestMapping("/data.do")43 public List>showData(@RequestBody Emp emp) {44 returnempService.showData(emp);45 }46 }

CenterController.java

3.10 启动类的设置

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecn.kgc;2

3 importorg.mybatis.spring.annotation.MapperScan;4 importorg.springframework.boot.SpringApplication;5 importorg.springframework.boot.autoconfigure.SpringBootApplication;6 importorg.springframework.cloud.netflix.eureka.EnableEurekaClient;7

8 @MapperScan("cn.kgc.mapper")9 @EnableEurekaClient10 @SpringBootApplication11 public classEurekaClientProviderEmpdeptOneApplication {12

13 public static voidmain(String[] args) {14 SpringApplication.run(EurekaClientProviderEmpdeptOneApplication.class, args);15 }16

17 }

启动类

3.11 编写属性文件

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 spring.application.name=provider-empdept2

3 server.port=8762

4

5 eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

6

7 spring.datasource.driver-class-name=com.mysql.jdbc.Driver8 spring.datasource.url=jdbc:mysql://192.168.117.145:3306/kh66

9 spring.datasource.username=root10 spring.datasource.password=ok11

12 mybatis.type-aliases-package=cn.kgc.vo13

14 mybatis.mapper-locations=classpath:mapper/*.xml

application.properties

3.12 启动eureka-server、eureka-client-provider-empdept-one 查看结果

2c6d7d4dd9e0e05a410e7b5cfad22f22.png

d6e83259bd271cfba348f4b8e47a13e4.png

四、创建eureka-client-provider-empdept-two提供者项目,所有的代码模块和eureka-client-provider-empdept-one一模一样,只是端口号不一样即可

五、创建eureka-client-consumer-empdept-p-one消费者项目,

5.1 结构如下

211b030724125be322bf4a68193d7151.png

5.2 编写 EmpDeptProviderFeign.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecn.kgc.fegin;2

3 importcn.kgc.vo.Dept;4 importcn.kgc.vo.Emp;5 importorg.springframework.cloud.openfeign.FeignClient;6 importorg.springframework.web.bind.annotation.RequestBody;7 importorg.springframework.web.bind.annotation.RequestMapping;8 importorg.springframework.web.bind.annotation.RequestParam;9

10 importjava.util.List;11 importjava.util.Map;12

13 @FeignClient("provider-empdept")14 public interfaceEmpDeptProviderFeign {15

16 @RequestMapping("/ribbon.do")17 public String ribbonTest(@RequestParam("count") Integer count);18

19 @RequestMapping("/option.do")20 publicString optionData();21

22 @RequestMapping("/data.do")23 publicString showData(@RequestBody Emp emp);24 }

EmpDeptProviderFeign.java

5.3 CenterController.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecn.kgc.fegin;2

3 importcn.kgc.vo.Dept;4 importcn.kgc.vo.Emp;5 importorg.springframework.cloud.openfeign.FeignClient;6 importorg.springframework.web.bind.annotation.RequestBody;7 importorg.springframework.web.bind.annotation.RequestMapping;8 importorg.springframework.web.bind.annotation.RequestParam;9

10 importjava.util.List;11 importjava.util.Map;12

13 @FeignClient("provider-empdept")14 public interfaceEmpDeptProviderFeign {15

16 @RequestMapping("/ribbon.do")17 public String ribbonTest(@RequestParam("count") Integer count);18

19 @RequestMapping("/option.do")20 publicString optionData();21

22 @RequestMapping("/data.do")23 publicString showData(@RequestBody Emp emp);24 }

CenterController.java

5.4 application.properties属性文件编写

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 spring.application.name=consumer-empdept-p-one2

3 server.port=8764

4

5 eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

application.properties

5.5 编写启动类

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecn.kgc;2

3 importorg.springframework.boot.SpringApplication;4 importorg.springframework.boot.autoconfigure.SpringBootApplication;5 importorg.springframework.cloud.netflix.eureka.EnableEurekaClient;6 importorg.springframework.cloud.netflix.ribbon.RibbonClient;7 importorg.springframework.cloud.openfeign.EnableFeignClients;8

9 @EnableFeignClients10 @EnableEurekaClient11 @SpringBootApplication12 public classEurekaClientConsumerEmpdeptPOneApplication {13

14 public static voidmain(String[] args) {15 SpringApplication.run(EurekaClientConsumerEmpdeptPOneApplication.class, args);16 }17

18 }

启动类

5.6  启动项目顺序为:eureka-server、eureka-client-provider-empdept-one、eureka-client-provider-empdept-two、eureka-client-consumer-empdept-p-one

因为没有设置负载均衡策略,因此他会按照默认方式既 轮询策略进行调用,

faa0049f1800335a800f368a830073f4.png

f644ecb588797a2d341fe06949534772.png

27d87d65ba4984611301c38bdb50a20e.png

5.7 再次选择配置ribbon负载均衡策略为随机分配,再看效果,属性文件设置如下

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 spring.application.name=consumer-empdept-p-one2

3 server.port=8764

4

5 eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

6

7 #随机分配策略8 provider-empdept.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule

application.properties

5.8 再次按照刚才的启动顺序启动,再来查看

c824bba0f49e50603db0fe41bfb211ed.png

5f0a92ffd92332abaa0514757693be74.png

41f0d77ec42daf1a16af1d044e254c10.png

可以挨个把负载均衡策略试一下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值