Spring Cloud Alibaba 入门学习笔记第二篇:Nacos注册中心+Loadbalancer负载均衡

之前了解了springcloud alibaba,开始正式学习使用和搭建spring cloud项目,
版本信息:spring boot 2.5.0 + spring cloud 2020.0.2版 +spring cloud alibaba 2021.1版

Nacos作为注册中心

DUBBO2.7.x版本使用Nacos作为注册中心 很早之前的nacos学习笔记,那时使用的是dubbo来构建的微服务。
在使用之前需要下载安装好nacos,见:NACOS集群和单机模式启动

接下来就是如何在springcloud当中使用nacos作为注册中心

创建服务A并注册到Nacos上

创建服务

为避免麻烦,创建的时候全程点击next下一步即可,无需勾选任何的springboot相关jar。

引入相关的JAR

完整pom文件如下



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.5.0
         
    
    cn.hjljy.demo
    springcloud
    0.0.1-SNAPSHOT
    springcloud
    spring cloud nacos 注册中心
    
        1.8
    
    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                2020.0.2
                pom
                import
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                2021.1
                pom
                import
            
        
    
    
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                2.5.0
            
        
    
    
        
            central
            aliyun maven
            http://maven.aliyun.com/nexus/content/groups/public/
            default
            
            
                true
            
            
            
                false
            
        
    

配置文件新增配置

spring.cloud.nacos.discovery.service=service-a
spring.cloud.nacos.server-addr=127.0.0.1:8848
server.port=8001

创建测试服务接口

@RestController
public class TestController {

    @GetMapping(value = "/echo/{string}")
    public String echo(@PathVariable String string) {
        return "Hello Im Service A " + string;
    }
}

服务注册到nacos

在启动类上添加 @EnableDiscoveryClient

/**
 * @author hjljy
 */
@SpringBootApplication
@EnableDiscoveryClient
public class ServiceAApplication {

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

验证是否注册成功

先启动nacos , 然后启动项目,最后进入nacos管理界面查看是否存在一个名为service-a的服务。存在就表示成功了。

Spring Cloud Alibaba 入门学习笔记第二篇:Nacos注册中心+Loadbalancer负载均衡_第1张图片

关于服务调用

截止到2021.5.29日,Nacos无论是官方文档还是官方实例代码,进行服务调用都是使无法Robbion+RestTemplate。但是在spring cloud 2020版当中,官方移除了Robbion,所以按照官方示例文档进行调用会报错:java.net.UnknownHostException: service-a 无法找到service-a。所以这个时候就需要新的负载均衡器来进行调用了!!!

Loadbalancer负载均衡调用

Spring Cloud Loadbalancer 就是新的官方推荐的负载均衡器。

创建服务B调用服务A

创建服务和引入jar

和服务A的创建过程,POM文件一模一样,需要新增

    <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-loadbalancerartifactId>
        dependency>

配置文件新增配置

spring.cloud.nacos.discovery.service=service-b
spring.cloud.nacos.server-addr=127.0.0.1:8848
server.port=8002

开启服务发现和负载均衡

同样在启动类上添加 @EnableDiscoveryClient 然后在RestTemplate上面添加注解@LoadBalanced开启负载均衡,这样就可以通过服务名进行服务调用,无需用过IP+端口的方式进行调用

/**
 * @author hjljy
 */
@SpringBootApplication
@EnableDiscoveryClient
public class ServiceBApplication {
  

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
    public static void main(String[] args) {
        SpringApplication.run(ServiceBApplication.class, args);
    }

}

创建测试服务接口

@RestController
public class TestController {


    private final RestTemplate restTemplate;
  
    @Autowired
    public TestController(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    @GetMapping(value = "/echo/{string}")
    public String echo(@PathVariable String string) {
        return restTemplate.getForObject("http://service-a/echo/" + string, String.class);
    }
}

这里的service-a就是之前创建的服务A,无需使用IP+端口,直接使用服务名即可。

测试调用验证是否成功

1 启动nacos

2 启动服务A

3 启动服务B

4 浏览器输入 http://127.0.0.1:8002/echo/123456 如果正确返回 Hello Im Service A 123456 表示成功!!!

Spring Cloud Alibaba 入门学习笔记第二篇:Nacos注册中心+Loadbalancer负载均衡_第2张图片

你可能感兴趣的:(Spring,Cloud,nacos,学习日志,spring,boot,spring,cloud,spring,cloud,alibaba,nacos,loadbalancer)