zoukankan      html  css  js  c++  java
  • springcloud(2)服务提供者配置及集群和信息显示改善

    作为分布式的服务提供者自然是需要多个集群作为支撑。同时将eureka页面里的显示信息进行一定的改善。

    1.pom文件的依赖

    <dependencies>  
            <dependency>
                <groupId>com.bai</groupId>
                <artifactId>cloud-api-common</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!--监控-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
            </dependency>
            <!--eureka client-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <!--如果没写版本,从父层面找,找到了就直接用,全局统一-->
            </dependency>
            <!--mysql-connector-java-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <!--jdbc-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
            <!--热部署-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>

    2.yml文件

    配置服务提供者的集群和eureka有点区别,在自己的yml文件中注册所有的eureka的地址。

    instance-id是eureka界面里的应用名称。相比之前的名称做了一定的优化。

    prefer-ip-address是增加了在点对应的应用名称的时候可以看出该服务对应的ip地址是什么。

    server:
        port: 8001
    spring:
      application:
        name: cloud-payment-service
      datasource:
        # 当前数据源操作类型
        type: com.alibaba.druid.pool.DruidDataSource
        # mysql驱动类
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/cloud2020?serverTimezone=GMT%2B8
        username: root
        password: root
    mybatis:
        mapper-locations: classpath*:mapper/*.xml
        type-aliases-package: com.bai.pojo
    eureka:
        client:
          #表示是否将自己注册进EurekaServer默认为true
          register-with-eureka: true
          #是否从EurekaServer抓取已有的注册消息,默认为true,单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
          fetch-registry: true
          service-url:
            #集群版
            defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
            #单机版
    #        defaultZone: http://localhost:7001/eureka
        instance:
          instance-id: payment8001
          prefer-ip-address: true

    3.主启动类

    @EnableEurekaClient
    @SpringBootApplication
    public class PayMent8001 {
        public static void main(String[] args) {
            SpringApplication.run(PayMent8001.class,args);
        }
    }

    后续在应用中会慢慢的把EnableEurekaClient注解替换成EnableDiscoveryClient使用。

    4.discovery

    服务发现discovery,将服务自身的一些信息暴露出来,自己可以访问到自己的一些信息,如服务名,端口号,地址。

    在controller中进行测试。

     @Resource
        private DiscoveryClient discoveryClient;
    @GetMapping("/payment/discovery")
        public Object discovery() {
             List<String> services = discoveryClient.getServices();
             for (String elment : services) {
                 log.info("....elment:" + elment);
             }
             List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
             for(ServiceInstance elment:instances){
                 log.info(elment.getServiceId()+"	"+elment.getHost()+"	"+elment.getPort()+"	"+ elment.getUri());
             }
            return this.discoveryClient;
         }

    可以在控制台上看到对应的一些信息。

    同时主启动类中的EnableEurekaClient注解替换成EnableDiscoveryClient使用,

    此后也是用EnableDiscoveryClient进行注解。

     本篇所有代码均在GitHub:

  • 相关阅读:
    php 获取上上个月数据 使用 strtotime('-1 months')的一个bug
    mysql ON DUPLICATE KEY UPDATE 用法
    在WAMPSERVER下增加多版本的PHP(PHP5.3,PHP5.4,PHP5.5 ,PHP5.6)支持。
    Window7 环境下 MariaDB 的安装 及使用
    memcache和memcached之间的区别和联系
    基于bootstrap + php +ajax datatable 插件的使用
    daterangepicker+ bootstrap +php +ajax +datatable双日历的使用
    基于bootstrap 的datatable插件的使用2(php版)
    CI 框架导出文件
    MYSQL中replace into的用法
  • 原文地址:https://www.cnblogs.com/lin530/p/13891720.html
Copyright © 2011-2022 走看看