欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringCloud入门(二十七) ------ spring cloud Alibaba Nacos实现服务注册与发现

程序员文章站 2022-06-13 22:28:49
...
spring cloud Alibaba

2018年10月31日,spring cloud Alibaba 正式入驻spring cloud 官方孵化器,并在Maven*库发布第一个版本。

spring cloud Alibaba 作用:
  • 服务限流降级:默认支持 servlet,feign,RestTemplate,Dubbo和Rocket限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics监控。
  • 服务注册与发现:适配springcloud 服务注册与发现标准,默认集成了 Ribbon的支持。
  • 消息驱动能力:基于Spring cloud stream 为微服务应用构建消息驱动能力。
  • 阿里云对象存储:阿里云提供海量,安全,低成本,高可靠的云存储服务。支持在任何应用,任何地点,任何时间访问任意类型的数据。
  • 分布式调度:提供秒级,精准,高可靠,高可用的定时任务调度服务,同时提供分布式任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有Worker上执行。
Nacos:

一个易于构建云原生应用的动态服务发现,配置管理和服务管理平台。
通俗来说就是:注册中心+配置中心
代替eureka做注册中心。
代替config做配置中心。

使用Nacos 搭建服务注册与发现:

官网下载 nacos-server(本次使用1.1.4版本),并解压,进入bin目录,cmd 执行startup.cmd,会看到如下界面:

SpringCloud入门(二十七) ------ spring cloud Alibaba Nacos实现服务注册与发现
启动后访问浏览器:http://localhost:8848/nacos 用户名与密码都是nacos,出现如下界面,代表启动成功。
SpringCloud入门(二十七) ------ spring cloud Alibaba Nacos实现服务注册与发现

搭建提供者:

Dependency Management:

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

pom依赖:

<dependencies>
        <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>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

yml:

server:
  port: 10001


spring:
  application:
    name: jym-springcloudAlibaba-payment
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848               # nacos地址
management:
  endpoints:
    web:
      exposure:
        include: "*"

启动类:

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

controller:

@RestController
public class NacosController {

    @Value("${server.port}")
    private String serverPort;

    @GetMapping("/configInfo")
    public String configInfo() {
        return "port= "+serverPort;
    }
}
搭建服务的消费者:

pom依赖跟yml文件都与提供者一样。
启动类:

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

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

controller:

@RestController
@RequestMapping("/consumer")
public class NacosOrderController {

    @Resource
    private RestTemplate restTemplate;

    @Resource
    private LoadBalancerClient loadBalancerClient;

    @Value("${spring.application.name}")
    private String appName;

    @GetMapping("/configInfo")
    public String configInfo() {
        ServiceInstance serviceInstance = loadBalancerClient.choose("jym-springcloudAlibaba-payment");
        String path = String.format("http://%s:%s/configInfo",serviceInstance.getHost(),serviceInstance.getPort());
        return restTemplate.getForObject(path,String.class);
    }
}
负载均衡策略:

Nacos已经集成了ribbon 所以自动负载均衡。

学习年限不足,知识过浅,说的不对请见谅。

世界上有10种人,一种是懂二进制的,一种是不懂二进制的。

相关标签: springcloud