• 1103springcloud复习,eureka注册中心的使用


        

    1.  新建一个maven项目cloud1103作为父项目
    2. 然后建两个maven子模块:order-service,user-service
    3. 一个项目一个数据库
      1.  
    4. 父项目pom文件配置步骤,不同版本对应依赖的版本不一样
        1. "1.0" encoding="UTF-8"?>
        2. <project xmlns="http://maven.apache.org/POM/4.0.0"
        3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        5. <modelVersion>4.0.0modelVersion>
        6. <groupId>cloud1103groupId>
        7. <artifactId>cloud1103artifactId>
        8. <packaging>pompackaging>
        9. <version>1.0-SNAPSHOTversion>
        10. <modules>
        11. <module>order-servicemodule>
        12. <module>user-servicemodule>
        13. modules>
        14. <parent>
        15. <groupId>org.springframework.bootgroupId>
        16. <artifactId>spring-boot-starter-parentartifactId>
        17. <version>2.3.9.RELEASEversion>
        18. parent>
        19. <properties>
        20. <maven.compiler.source>8maven.compiler.source>
        21. <maven.compiler.target>8maven.compiler.target>
        22. <java.version>1.8java.version>
        23. <spring-cloud.version>Hoxton.SR10spring-cloud.version>
        24. <mysql.version>5.1.47mysql.version>
        25. <mybatis.version>2.1.1mybatis.version>
        26. properties>
        27. <dependencyManagement>
        28. <dependencies>
        29. <dependency>
        30. <groupId>org.springframework.cloudgroupId>
        31. <artifactId>spring-cloud-dependencesartifactId>
        32. <version>${spring-cloud.version}version>
        33. <type>pomtype>
        34. <scope>importscope>
        35. dependency>
        36. <dependency>
        37. <groupId>mysqlgroupId>
        38. <artifactId>mysql-connector-javaartifactId>
        39. <version>${mysql.version}version>
        40. dependency>
        41. <dependency>
        42. <groupId>org.mybatis.spring.bootgroupId>
        43. <artifactId>mybatis-spring-boot-starterartifactId>
        44. <version>${mybatis.version}version>
        45. dependency>
        46. dependencies>
        47. dependencyManagement>
        48. project>
    5. 子模块pom文件配置
        1. "1.0" encoding="UTF-8"?>
        2. <project xmlns="http://maven.apache.org/POM/4.0.0"
        3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        5. <parent>
        6. <artifactId>cloud1103artifactId>
        7. <groupId>cloud1103groupId>
        8. <version>1.0-SNAPSHOTversion>
        9. parent>
        10. <modelVersion>4.0.0modelVersion>
        11. <artifactId>user-serviceartifactId>
        12. <properties>
        13. <maven.compiler.source>8maven.compiler.source>
        14. <maven.compiler.target>8maven.compiler.target>
        15. properties>
        16. <dependencies>
        17. <dependency>
        18. <groupId>org.springframework.bootgroupId>
        19. <artifactId>spring-boot-starter-webartifactId>
        20. dependency>
        21. <dependency>
        22. <groupId>mysqlgroupId>
        23. <artifactId>mysql-connector-javaartifactId>
        24. dependency>
        25. <dependency>
        26. <groupId>org.mybatis.spring.bootgroupId>
        27. <artifactId>mybatis-spring-boot-starterartifactId>
        28. dependency>
        29. dependencies>
        30. <build>
        31. <plugins>
        32. <plugin>
        33. <groupId>org.springframework.bootgroupId>
        34. <artifactId>spring-boot-maven-pluginartifactId>
        35. plugin>
        36. plugins>
        37. build>
        38. project>
    6. user-service模块新建启动类,建立三层架构,postman测试

      1.  

    7. 同样的方式来配置和测试order-service模块

    8. order服务当中使用restTemplate实现远程调用user服务,使得order对象当中的user不为空
    9. 使用注册中心eureka来完成远程服务调用

      1. pom文件
        1. <dependencies>
        2. <dependency>
        3. <groupId>org.springframework.cloudgroupId>
        4. <artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
        5. <version>2.2.7.RELEASEversion>
        6. dependency>
        7. dependencies>
      2. 配置:
      3. 启动类
      4. 启动成功:访问成功
    10. 然后我们想要加userService服务到注册中心中
      1. user的pom文件
      2. user的配置文件
        1. # 将user服务加进注册中心
        2. eureka:
        3. client:
        4. service-url:
        5. defaultZone: http://127.0.0.1:10086/eureka
      3. 启动加入成功:
    11. 同样的方式将订单服务order加入注册中心:

    12. 创建多个user服务实例:
      1. 先调出dushboard出来
      2. 按下图要求,仿照复制一个user服务的实例,注意端口
    13. 那么我们现在有两个user服务客户端实例了,那我们要实现负载均衡该怎么做?
      1. 首先要在订单服务启动类加入负载均衡注解:  @LoadBalanced
      2. 然后修改订单业务层的代码
        1. @Service
        2. public class OrderServiceImpl implements OrderService {
        3. @Autowired
        4. private OrderMapper orderMapper;
        5. @Autowired
        6. private RestTemplate restTemplate;
        7. public Order queryOrder(Long id){
        8. Order order = orderMapper.selectOne(id);
        9. // User user = restTemplate.getForObject("http://localhost:8081/user/1", User.class);
        10. User user = restTemplate.getForObject("http://userservice/user/" + order.getUserId(), User.class);
        11. order.setUser(user);
        12. return order;
        13. }
        14. }
    14. 执行order服务观察负载均衡
      1. 我们通过post调用订单服务,观察两个user服务的实例,经过了负载均衡之后,是通过哪个实例去调用服务
      2. 通过dushboard控制台打印的信息,可以发现是负载均衡的默认机制(轮循),每个实例一个一次的来
    15. 总结
      1. 选择哪种均衡策略:在Irule这个类当中
      2. ribbon负载均衡规则:
        1. IRule接口
        2. 默认的规则:ZoneAvoidanceRule  用的轮循
      3. ribbon使用的拦截器:LoadBalancerInterceptor
  • 相关阅读:
    字符串变形
    霍夫曼(Huffman)编码算法详解之C语言版
    浅析Linux内核高端内存
    完全背包问题
    Java面试复习体系总结(2021版,持续更新)
    vue常用修饰符-- stop,prevent,.enter,once,lazy,number,trim
    关于升级高德地图导航9.5.0的问题 ‘com.amap.api:navi-3dmap:9.5.0_3dmap9.5.0‘
    【Flink】检查点算法实现原理之检查点分界线
    如何解决GitHub 访问不了?小白教程
    MongoDB索引与查询优化
  • 原文地址:https://blog.csdn.net/qq_60555957/article/details/127664070