SpringCload搭建(一):使用Nacos实现服务注册与发现,远程调用(restTemplate),负载均衡@LoadBalanced

使用的项目:项目D:\me\springCloadProjectAll\springcload01

一:理解

nacos是springcload的注册中心,所以先启动nacos然后才是启动其他的就可以在nacos里面注册

二:实操

1.安装nacos

  1. 启动nacos服务(单机模式&内嵌数据库)
    0.前提:配置JAVA_HOME环境变量,不配置会导致无法运行Nacos
    1.下载源码或者安装包
    安装包地址:https://github.com/alibaba/nacos/releases
    2.解压后进入nacos/bin目录
    3.输入命令启动服务
    linux:sh startup.sh -m standalone
    windows:cmd startup.cmd
    4.控制台启动下,看到"Nacos started successfully in stand alone mode.”后表示服务已启动
    5.nacos默认使用8848端口,可通过http://127.0.0.1:8848/nacos/index.html进入自带的控制台界面,默认用户名/密码是nacos/nacos

    3. 配置集群(略)

  2. 启动

    

  3.效果

  

 

 

2.搭建springcload框架

  1. 先创建一个maven项目,maven是盒子,使用的主要是pom文件
  2. G:\2\springcload\01 使用Nacos实现服务注册与发现\资料\pom文件,粘贴然后进行名称之类的修改

  

 

   2.创建模块(springboot):provider

    1.选中项目右键new-module搭建springboot项目作为模块

    

 

    2.修改pom文件,引入父类pom文件这样可以引入父类的依赖,packaging写jar,可以打成jar包进行使用

    

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.xiu</groupId>
<artifactId>springcload01</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.xiu</groupId>
<artifactId>provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>provider</name>
<packaging>jar</packaging>
<description>子模块,生产者</description>
<properties>
</properties>
<dependencies>

</dependencies>

</project>
  
    3.写yml配置文件 
server:
port: 7101

spring:
cloud:
nacos:
discovery:
# 往nacos注册的地址
server-addr: 127.0.0.1:8848
# 注册名
application:
name: provider

   

    4.启动类添加注册nacos注解 
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {

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

}

 

    5.效果注册成功

 

 

 

 

    3.搭建消费者consumer

    1.new module

    

 

    2.pom文件

    

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.xiu</groupId>
<artifactId>springcload01</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.xiu</groupId>
<artifactId>consumer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>consumer</name>
<packaging>jar</packaging>
<description>子模块.消费者</description>
<properties>
</properties>
<dependencies>
</dependencies>

</project>

    3.yml文件

    

server:
port: 6101

spring:
cloud:
nacos:
discovery:
# 往nacos注册的地址
server-addr: 127.0.0.1:8848
# 注册名
application:
name: consumer

    4效果

    

 

 

 

 3.消费者简单调用生产者

  1.写远程调用的配置类

  

/**
* @Author: LJX
* @DateTime: 2022/3/11 22:58
* @Description: restTemplate配置类
*/
@Configuration
public class RestTemplateConfig {

@Bean
@LoadBalanced //开启负载均衡 (比如有三个生产者,消费者去调用时可以分开调用,而不是每次都只调用那一个生产者)(feign默认开启不需要这一步)
public RestTemplate restTemplate(){
return new RestTemplate();
}
}

   2.消费者controller层去调用provider

/**
* @Author: LJX
* @DateTime: 2022/3/11 16:38
* @Description: TODO
*/
@RestController
@RequestMapping("/test")
public class HelloController {

@Resource
private RestTemplate restTemplate;

@RequestMapping("/hello")
public String hello(){
System.out.println("消费者");
//调用生产者,url + 返回类型
String forEntity = restTemplate.getForObject("http://provider/test/hello", String.class);
return forEntity;
}
}
  3.效果图:页面使用consumer调用了provider
  

 

 


posted @ 2022-03-11 23:16  创嗨  阅读(767)  评论(0编辑  收藏  举报