springcloudNetflix
SpringCloud 服务注册中心(Eureka,Zookeeper,Consul)_spring

SpringCloud父工程版本说明Hoxton.SR8

<?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.sec.zhoukun</groupId>
    <artifactId>springcloud2</artifactId>
    <version>1.0-SNAPSHOT</version>
    <modules>
    </modules>
    <packaging>pom</packaging>


    <!--统一jar包管理-->
    <!--统一管理jar包版本-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.cloud.version>Hoxton.SR8</spring.cloud.version>
        <spring.boot.version>2.3.3.RELEASE</spring.boot.version>
        <spring.cloud.alibaba>2.2.1.RELEASE</spring.cloud.alibaba>
        <junit.version>4.11</junit.version>
        <lombok.version>1.18.12</lombok.version>
        <log4j.version>1.2.17</log4j.version>
        <mysql.version>8.0.21</mysql.version>
        <druid.version>1.2.1</druid.version>
        <mybatisplus.version>3.1.0</mybatisplus.version>
        <api.public.version>1.0-SNAPSHOT</api.public.version>
    </properties>

    <!--子模块继承之后,提供作用:锁定版本+子module不用谢groupId和version-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.sec.zhoukun</groupId>
                <artifactId>springcloud-api-commons</artifactId>
                <version>${api.public.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.3.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>


            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatisplus.version}</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
        </dependencies>

    </dependencyManagement>
</project>
zookeeper

服务提供者
zookeeper常用命令

  1. 服务器安装zookeeper
1.下载
docker pull zookeeper
2.运行
docker run  -d --name zookeeper -p 2181:2181  zookeeper:latest
3.查看
docker ps
  1. pom
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <exclusions>
                <!--移除原版本-->
                <exclusion>
                    <artifactId>zookeeper</artifactId>
                    <groupId>org.apache.zookeeper</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--zk工具包-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.6.2</version>
            <!--排除这个slf4j-log4j12-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
  1. yml
server:
  port: 8001

spring:
  application:
    name: springcloud-payment-server
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springcloudpayment?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
    username: root
    password: 123456

#zookeeper配置
  cloud:
    zookeeper:
      connect-string: 106.55.168.234:2181


#info配置(完善监控信息)actuator
info:
  app.name: "springcloud-payment-server-zookeeper-8001"
  auth.name: "zhoukun"

mybatis-plus:
  mapper-locations: classpath:mapper/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  # 控制台输出日志
  type-aliases-package: com.sec.zhoukun.pojo                   #所有实体类包


  1. 启动类
@MapperScan("com.zhoukun.cloud.mapper")
@SpringBootApplication
@EnableDiscoveryClient
public class zookeeperproviderPayment8001 {
    public static void main(String[] args) {
        SpringApplication.run(zookeeperproviderPayment8001.class,args);
    }
}

服务消费者

pom

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <exclusions>
                <!--移除原版本-->
                <exclusion>
                    <artifactId>zookeeper</artifactId>
                    <groupId>org.apache.zookeeper</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--zk工具包-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.6.2</version>
            <!--排除这个slf4j-log4j12-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

yml

server:
  port: 80
spring:
  application:
    name: springcloud-payment-consument

    #zookeeper配置
  cloud:
    zookeeper:
      connect-string: 106.55.168.234:2181

启动类

/**
 * @author zhoukun 86547462@qq.com
 * @version 1.0
 * @date 2020/10/24 21:00
 */
@SpringBootApplication
@EnableDiscoveryClient
public class zookeeperconsumersPayment80 {
    public static void main(String[] args) {
        SpringApplication.run(zookeeperconsumersPayment80.class,args);
    }
}

config

@Configuration
public class ApplicationConfig {
    //LoadBalanced配置负载均衡
    @Bean
    @LoadBalanced
    public RestTemplate getrestTemplate(){
        return new RestTemplate();
    }
}

controller


/**
 * @author zhoukun 86547462@qq.com
 * @version 1.0
 * @date 2020/10/24 21:06
 */
@RestController
@Log4j2
public class PaymentController {
    @Autowired
    RestTemplate template;

    private static final String PAYMENT_URL="http://springcloud-payment-server";
    //查询
    @GetMapping("/con/query")
    public String query()
    {
        return template.getForObject(PAYMENT_URL+"/payment/query", String.class);
    }


    //查询单个
    @GetMapping("/con/queryById/{Id}")
    public String queryById(@PathVariable String Id)
    {
        return template.getForObject(PAYMENT_URL+"/payment/queryById/"+Id, String.class);
    }

    //修改余额
    @GetMapping("/con/banUP/{Id}/{money}")
    public String banUP(@PathVariable String Id,
                             @PathVariable BigDecimal money)
    {

        return template.getForObject(PAYMENT_URL+"/payment/banUP/"+Id+"/"+money, String.class);
    }

}

consul

官网

下载运行
docker pull consul

docker run \ 
--name consul \ 
-p 8500:8500 \ 
-v /data/consul/conf/:/consul/conf/ \ 
-v /data/consul/data/:/consul/data/ \ 
-d consul

测试
SpringCloud 服务注册中心(Eureka,Zookeeper,Consul)_spring_02
服务提供者
pom

  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>

yml

server:
  port: 8001

spring:
  application:
    name: springcloud-payment-server
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springcloudpayment?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
    username: root
    password: 123456
    #consul配置
    #info配置(完善监控信息)actuator
  cloud:
    consul:
      host: consulIP地址
      port: 8500
      discovery:
        service-name: ${spring.application.name} #服务名
        heartbeat:
          enabled: true #心跳协议


info:
  app.name: "springcloud-payment-server-8001"
  auth.name: "zhoukun"

mybatis-plus:
  mapper-locations: classpath:mapper/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  # 控制台输出日志
  type-aliases-package: com.sec.zhoukun.pojo                   #所有实体类包

controller

  //查询
    @GetMapping("/payment/query")
    public CommentRest query()
    {
        return new CommentRest()
                .setCode(200)
                .setMessage("success")
                .setData(service.list());
    }

启动类

@MapperScan("com.zhoukun.cloud.mapper")
@SpringBootApplication
@EnableDiscoveryClient
public class consulproviderPayment8001 {
    public static void main(String[] args) {
        SpringApplication.run(consulproviderPayment8001.class,args);
    }
}

测试
SpringCloud 服务注册中心(Eureka,Zookeeper,Consul)_spring_03
服务消费者

pom

     <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>

controller

 @Autowired
    RestTemplate template;

    private static final String PAYMENT_URL="http://springcloud-payment-server";
    //查询
    @GetMapping("/con/query")
    public String query()
    {
        return template.getForObject(PAYMENT_URL+"/payment/query", String.class);
    }

config

@Configuration
public class ApplicationConfig {
    @Bean
    @LoadBalanced
    public RestTemplate getrestTemplate(){
        return new RestTemplate();
    }
}

启动类

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

yml

server:
  port: 80
spring:
  application:
    name: springcloud-payment-consument

    #consul配置
  cloud:
    consul:
      host: 106.55.168.234
      port: 8500
      discovery:
        service-name: ${spring.application.name} #服务名
        heartbeat:
          enabled: true #心跳协议