• Nacos注册中心快速入门


    作为公司的一名基础架构组成员,去年年底我做了公司基础设施注册中心的技术选型。偶然翻看去年的选型材料,看到了本篇Nacos注册中心快速入门。如果你作为Nacos的初识者,或者想快速了解Nacos的上手难度,希望本篇可以帮助到你。

    1、快速开始

    1.1 引入依赖

    <dependency>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4

    1.2 应用配置

    spring:
      cloud:
        nacos:
          discovery:
            server-addr: nacos-host:80
            namespace: e5aebd28-1c15-4991-a36e-0865bb5af930
            group: ${spring.profiles.active}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1.3 启动应用

    在项目的启动类中添加@EnableDiscoveryClient的注解。

    @SpringBootApplication
    @EnableDiscoveryClient
    public class UserProviderApplication {
        public static void main(String[] args) {
            SpringApplication.run(UserProviderApplication.class, args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1.4 查看实例

    28c89f43531c4620a96b83ed35123f58

    详情如下:

    image-20221108140422655

    2、使用Feign完成服务的调用

    2.1 引入依赖

    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-openfeignartifactId>
        <version>2.2.2.RELEASEversion>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.2 启动类

    启动类上添加@EnableFeignClients的注解。

    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableFeignClients
    public class UserConsumerApplication {
        public static void main(String[] args) {
            SpringApplication.run(UserConsumerApplication.class, args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.3 应用配置

    feign:
      hystrix:
        enabled: true
    
    • 1
    • 2
    • 3

    2.4 使用示例

    @FeignClient(name = "user-provider",fallback = UserServiceFallback.class)
    public interface UserService {
        @RequestMapping("/user/config")
        String config();
    }
     
    @Service
    public class UserServiceFallback implements UserService {
        @Override
        public String config() {
            return "user-fallback";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    controller 调用如下。

    @Autowired
    private UserService userService;
     
    @RequestMapping("consumer-feign")
    public String userService() {
        return userService.config();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3、使用Ribbon完成服务的调用

    我们只需要将RestTemplate实例化,并添加@LoadBalanced注解就可以了,如下:

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    然后在,controller中,我们使用这个实例化好的RestTemplate,就可以了,具体实现如下:

    @Autowired
    private RestTemplate restTemplate;
     
    @RequestMapping("consumer-ribbon")
    public String consumerribbon() {
        String url = "http://user-provider/user/config";
        return restTemplate.getForObject(url, String.class);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4、使用Nacos权重负载均衡

    4.1 修改权重

    三种服务的调用方法都给大家介绍完了,但是,他们的负载均衡策略都是轮询,这有点不符合我们的要求,我们进入到Nacos的管理后台,调节一下服务的权重,如图:

    bb0c162c8c274df8a29f199fa3c238c6

    4.2 修改 Ribbon 的默认策略

    user-provider:
      ribbon:
        NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
    
    • 1
    • 2
    • 3

    小结

    本文介绍了Nacos注册中心入门使用,并介绍了通过FeignRibbon完成服务间调用,Nacos也实现了基于权重的负载均衡策略,这点可以搭配Ribbon使用。

  • 相关阅读:
    浅谈电动汽车充电桩设计与应用研究
    五、程序员指南:数据平面开发套件
    【Linux】—— Linux 环境搭建
    Java 中关于多线程的知识点
    Pandas数据处理分析系列6-数据特征分析
    蓝桥杯(3.1)
    数字化智慧公厕:开创城市数智化治理新时代
    VS采用nuget配置OpenGL
    华为手机的备忘录,你真的会用吗?这4个小功能,很多人都不会用
    MySQL3:MySQL中一条更新SQL是如何执行的?
  • 原文地址:https://blog.csdn.net/yang237061644/article/details/127767554