首先下载一个nacos服务器

(这里有个大大的坑,nacos和springboot的版本问题,要保持一一对应)
这里我用的是
代码片.

<groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>

 <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>0.9.0.RELEASE</version>

<!--nacos是1.0.0-->

下载nacos的地址:https://github.com/alibaba/nacos/releases

进去之后是选这个tags

nacos grpc 连不上 nacos怎么才能连上_spring cloud


接下来就是选版本了

nacos grpc 连不上 nacos怎么才能连上_nacos grpc 连不上_02


进去之后朝下翻下载zip就行了

nacos grpc 连不上 nacos怎么才能连上_spring boot_03


下载好,解压,这个不用安装解压就行

启动可以双击startup.cmd就启动了,(但是我的就起不来,我用的命令行启动的 startup.cmd -m standalone)

nacos grpc 连不上 nacos怎么才能连上_nacos grpc 连不上_04


进去之后输入命令就起来了(有可能会遇到一个问题大概意思就是需要jdk ,这个得去环境变量设置一下JAVA_HOME, 一般学java第一步就是设置这,不会自行百度)

nacos grpc 连不上 nacos怎么才能连上_spring cloud_05


接下来就可以去浏览器访问了localhost:8848/nacos

账号密码都是nacos

nacos grpc 连不上 nacos怎么才能连上_spring cloud_06

服务现在就弄好了,接下来就是配置问题了
这里说明一下,无论是提供者还是消费者配置一样的在,这里我就描述一遍

第一步导依赖

代码片.

<!--nacos的依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>0.9.0.RELEASE</version>
        </dependency>

第二步去配置
代码片.

spring
  application:
    name: nacos-provider

  cloud:
    nacos:
      discovery:
       # namespace: 7968f11f-799a-4668-acb4-fb73e4bf8e74
        server-addr: 127.0.0.1:8848
        #这个命名空间是怎么都找不到服务的情况下加的,加了之后能找到了,这点我很迷惑,如果你也有和我一样是情况可以试试

第三步搁启动类加注解@EnableDiscoveryClient

代码片.

@SpringBootApplication
@EnableDiscoveryClient
public class FirstApplication {

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

}

有一点特殊的,这是搁消费者的启动类里面加的restTemplate,他是spring提供的发各种http请求的工具,这样消费者才能调用提供者的接口

因为bean的注入只能放在配置类里,启动类也是配置类,所以放这里面了

代码片.

@SpringBootApplication
@EnableDiscoveryClient
//@EnableFeignClients
public class MytwoApplication {

    public static void main(String[] args) {
        SpringApplication.run(MytwoApplication.class, args);
    }
    @LoadBalanced//开启负载均衡,如果有两个服务一样的名,就会根据nacos的方法自行匹配访问哪个服务的接口
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }


}

基本配置完成之后启动服务就能在nacos客户端看见了

nacos grpc 连不上 nacos怎么才能连上_java_07

接下来就是服务提供者的方法,其实就是正常的controller层的方法
代码片.

@RestController
public class ProviderController {


    @RequestMapping(value = "/hi", method = RequestMethod.GET)
    public String sayHi() {
        return "hello ,我是提供者";
    }

}

然后就是消费者要去调用提供者的接口

代码片.

@RestController
public class ConsumerController {

    private final RestTemplate restTemplate;

 
    @Autowired
    public ConsumerController(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    @RequestMapping(value = "/getHi", method = RequestMethod.GET)
    public String echo() {
        return "我是消费者"+ ",后面是我调用提供者的结果 " + restTemplate.getForObject("http://nacos-provider/hi", String.class);
    }
  
}

下面就是单独访问自己的项目了,我的消费者的端口是8081

因为我源代码多了点东西所以图有点不符

nacos grpc 连不上 nacos怎么才能连上_spring_08


说明,虽然作为了服务的提供者,但是不影响原来的接口被其他浏览器访问,互不影响。

总结以下我遇到的坑,配置nacos最先注意的是版本问题,版本不兼容就会报错,还难找,第二就是配置三步走的问题,少了某一步也会报错,不注意的也难找(重灾区就是配置文件里面)