【Spring Cloud Alibaba】【Hoxton】Nacos入门及负载均衡

1 简介

1.1 名字由来

前四个字母分别別为 Naming和 Configurate的前两个字,最后的s为 Service…

1.2 是什么

(1) ー个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
(2) Nacos=Eureka+Config+Bus。
(3) 替代Eureka做服务注册中心。替代Config做服务配置中心。

1.3 下载地方

https://github.com/alibaba/nacos/releases

2 nacos安装

2.1 环境准备

192.168.0.39 jdk1.8

在这里插入图片描述

2.2 安装

(1) 解压

tar -zxvf nacos-server-1.2.0.tar.gz

(2) 运行

cd /usr/local/nacos/bin
#启动命令
bash startup.sh -m standalone
#查看尾部日志
tail -f /usr/local/nacos/logs/start.out

(3) 访问UI

http://192.168.0.39:8848/nacos

在这里插入图片描述

3 父工程准备

在这里插入图片描述

3.1 pom

 <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <junit.version>4.12</junit.version>
    <hutool.version>5.1.0</hutool.version>
    <commons.version>3.4</commons.version>
    <log4j.version>1.2.17</log4j.version>
    <lombok.version>1.18.6</lombok.version>
    <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
    <spring-boot.version>2.2.5.RELEASE</spring-boot.version>
    <spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version>
</properties>

<dependencyManagement>
    <dependencies>
        <!--spring boot-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!--spring cloud-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!--spring cloud alibaba 2.1.0.RELEASE-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${spring-cloud-alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
        <!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
        </dependency>
        <!--日志-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>${commons.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>${hutool.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>


<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
</dependencies>




<!--spring boot 插件-->
<build>
    <finalName>springcloud-hoxton</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <fork>true</fork>
                <addResources>true</addResources>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>


<repositories>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

3.2 install

在这里插入图片描述

4 服务提供者

4.1 创建工程

在这里插入图片描述

4.2 pom

<dependencies>
    <!--spring cloud alibaba-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</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-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <!--devtools热部署-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
        <scope>true</scope>
    </dependency>
</dependencies>

4.3 application.yml

server:
  port: 9000

spring:
  application:
    name: provider
  cloud:
     nacos:
       discovery:
         server-addr: 192.168.0.39:8848

#暴露监控
management:
  endpoints:
    web:
      exposure:
        include: '*'

4.4 controller

@RestController
@RequestMapping("/provider")
public class ProviderController {
    @Value("${server.port}")
    private Integer port;
    @GetMapping("/hello")
    public String hello(){
        return "Hello nacos , server port is "+port;
    }
}

4.5 主启动类

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

4.6 测试

在这里插入图片描述
在这里插入图片描述

5 再次创建服务提供者

5.1 创建工程

在这里插入图片描述

5.2 拷贝provider的pom、application.yml、controller、主启动类

在这里插入图片描述

5.3 修改application.yml

server:
  port: 9001
spring:
  application:
    name: provide
  cloud:
     nacos:
       discovery:
         server-addr: 192.168.0.39:8848
#暴露监控
management:
  endpoints:
    web:
      exposure:
        include: '*'

5.4 启动9001

在这里插入图片描述

5.5 查看nacos

在这里插入图片描述
在这里插入图片描述

6 创建消费者

在这里插入图片描述

6.1 pom

<dependencies>
    <!--spring cloud alibaba-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</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-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <!--devtools热部署-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
        <scope>true</scope>
    </dependency>
</dependencies>

6.2 application.yml

server:
  port: 9002
spring:
  application:
    name: customer
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.0.39:8848

6.3 配置文件

@Configuration
public class ApplicationContextConfig {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

6.4 Controller

@RestController
@RequestMapping("/customer")
public class CustomerController {
    @Autowired
    private RestTemplate restTemplate;
    private final String SERVER_URL="http://provider";
    @GetMapping(value = "/hello")
    public String hello(){
        return restTemplate.getForObject(SERVER_URL+"/provider/hello", String.class);
    }
}

6.5 主程序并启动

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

在这里插入图片描述

6.6 测试

在这里插入图片描述
在这里插入图片描述

GITHUB

#分支Nacos-release-v1.0
https://github.com/zhurongsheng666/spring-cloud-alibaba
发布了157 篇原创文章 · 获赞 171 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_34125999/article/details/104934796
今日推荐