手把手教你搭建SpringCloudAlibaba之Nacos服务注册中心

SpringCloud Alibaba全集文章目录:


一、手把手教你搭建SpringCloud Alibaba之生产者与消费者​​​​​​​

二、手把手教你搭建SpringCloudAlibaba之Nacos服务注册中心​​​​​​​

三、手把手教你搭建SpringCloudAlibaba之Nacos服务配置中心

四、手把手教你搭建SpringCloudAlibaba之Nacos服务集群配置

五、手把手教你搭建SpringCloudAlibaba之Nacos服务持久化配置

六、手把手教你搭建SpringCloudAlibaba之Sentinel实现流量控制

七、手把手教你搭建SpringCloudAlibaba之Sentinel服务降级

八、手把手教你搭建SpringCloudAlibaba之Sentinel热点key限流

九、手把手教你搭建SpringCloudAlibaba之Sentinel系统保护规则

十、手把手教你搭建SpringCloudAlibaba之Sentinel服务熔断

十一、手把手教你搭建SpringCloudAlibaba之Sentinel规则持久化

十二、手把手教你搭建SpringCloudAlibaba之Seata分布式事务

1、什么是Nacos?

Nacos就是注册中心+配置中心的组合

Nacos = Eureka(替代Eureka做服务注册中心)+  Config(替代Config做服务配置中心)  

2、为什么叫Nacos?

Nacos:Dynamic Naming and Configuration Service,翻译为动态命名和配置服务。

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

3、去哪里学习?

官网:https://nacos.io/zh-cn/index.html

Spring Cloud阿里巴巴参考文档 :Spring Cloud Alibaba Reference Documentation

4、与其他注册中心对比

手把手教你搭建SpringCloudAlibaba之Nacos服务注册中心_第1张图片

 5、怎么下载?

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

6、如何将服务注册到Nacos当中?

1)如何将生产者cloud-provide-payment服务注册到nacos当中,在application.yml中加入

手把手教你搭建SpringCloudAlibaba之Nacos服务注册中心_第2张图片

2)在pom.xml文件中加入nacos服务发现的jar包



com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-discovery

3)在启动类上加上注解@EnableDiscoveryClient

package com.buba.payment;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

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

@EnableDiscoveryClient 的作用都是能够让注册中心发现、并扫描到该服务。

Eureka使用@EnableEurekaClient注解,只对Eureka起作用,@EnableDiscoveryClient 对 Eureka、Zookeeper、Consul 等注册中心都有效。

从 SpringCloud Edgware 版本开始, @EnableEurekaClient 和 @EnableDiscoveryClient 注解都可以省略了,只需要在 pom.xml 中引入依赖、在application.yml 上进行相关配置,就可以将微服务注册到注册中心上。但是为了起标识作用,最好还是加上 @EnableDiscoveryClient 注解。

4)我们先启动Nacos服务,将下载下来的zip包,在windos上在bin文件下点击startup.cmd启动Nacos。

手把手教你搭建SpringCloudAlibaba之Nacos服务注册中心_第3张图片

如下图,说明启动成功。

手把手教你搭建SpringCloudAlibaba之Nacos服务注册中心_第4张图片

我们访问http://localhost:8848/nacos/ ,用户名和密码都是Nacos。登录成功界面如下:

手把手教你搭建SpringCloudAlibaba之Nacos服务注册中心_第5张图片

5)启动生产者服务,查看是否注册到Nacos当中。可以看到成功注册到nacos当中,其中服务名就是在application.yml当中配置的mcroservice-payment  服务名。手把手教你搭建SpringCloudAlibaba之Nacos服务注册中心_第6张图片

 6)用同样的方法修改消费者的服务,启动消费者的服务。 其中服务名就是cloud-consumer-order服务中application.yml中配置的mcroservice-order。

        

手把手教你搭建SpringCloudAlibaba之Nacos服务注册中心_第7张图片

 7)在ApplicationContextConfig文件上加上注解@LoadBalanced,原因是我们配置了以服务名的方式访问,但不能确定是哪一个服务。所以我们需要给restTemplate开启负载均衡,默认是轮循。只需要在restTemplate配置类中加上这个注解,该注解就是开启负载均衡的。

package com.buba.consumer.config;


import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

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

 8)将之前的调用的ip+端口的方式改为以服务名的方式访问http://mcroservice-payment,如下图:

package com.buba.consumer.controller;


import com.buba.springcloud.pojo.CommonResult;
import com.buba.springcloud.pojo.Payment;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@Slf4j
public class OrderController {
    //调用支付订单服务端的ip+端口号
    public static final  String PAYMENT_URL = "http://mcroservice-payment";

    @Autowired
    private RestTemplate restTemplate;
    //创建支付订单的接口
    @GetMapping("/consumer/payment/create")
    public CommonResult create(Payment payment){
        return restTemplate.postForObject(PAYMENT_URL+"/payment/create",payment, CommonResult.class);
    }
    //获取id获取支付订单
    @GetMapping("/consumer/payment/get/{id}")
    public CommonResult getPayment(@PathVariable("id") Long id) {
        return restTemplate.getForObject(PAYMENT_URL + "/payment/get/" + id, CommonResult.class);

    }
}

9)然后我们访问http://localhost/consumer/payment/get/1 可以成功访问到接口,说明已经成功调用到我们注册到nacos中的mcroservice-payment生产者服务。如下图:

手把手教你搭建SpringCloudAlibaba之Nacos服务注册中心_第8张图片

到这里我们已经成功的将生产者和消费者注册到Nacos当中,服务之间也可以相互访问。

下一篇我们搭建生产者集群版搭建并且实现负载均衡!

你可能感兴趣的:(微服务学习篇,java,spring,cloud,spring)