Nacos注册中心

1.Nacos下载

我们先在Nacos官网下载Nacos下载好后就可以拖入微服务进行使用就不需要使用镜像, Nacos下载网址:发布历史 | Nacos 官网 ; 到这个网址里下载自己所需要的版本

或者用百度网盘:
链接: https://pan.baidu.com/s/19B_ilADHGYxQuzwX2CWVYw?pwd=eqm4

提取码: eqm4

2.安装Nacos

下载好后将他的安装包和custom.env一同拖入虚拟机的文件管理中执行指令加载安装包 nacos.tar

docker load -i nacos.tar    

3.部署Nacos

 紧接着没报错我们就开始部署使用命令:

docker run -d \

--name nacos \

--env-file ./nacos/custom.env \

-p 8848:8848 \

-p 9848:9848 \

-p 9849:9849 \

--restart=always \

nacos/nacos-server:v2.1.0-slim

4.启动Nacos

然后我们在使用以下指令去查看其日志:

docker logs -f nacos 

 

在这我们可以清楚的看到已经启动好了,然后他的端口号是8848(钛金手机)接着我们直接到外部的浏览器去访问他的网址: (自己虚拟机的网络):8848/nacos 

打开后:

因为第一次访问所以需要使用账号和密码 ,他的账号密码都是:nacos,

登录后的页面:

这里就可以用来管理服务提供者所提供的服务了!

5.使用Nacos

5.1 添加Nacos依赖

在您使用的Spring项目中添加以下的依赖

<!--nacos 服务注册发现-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

5.2 配置地址:

spring:
  application:
    name: item-service # 服务名称
  cloud:
    nacos:
      server-addr: 192.168.46.128:8848 # nacos地址

5.3 启动项目:

添加完成后我们就启动项目,我们就可以看到控制台正在向服务注册中心注册服务:

 启动完成后我们回到浏览器 刷新查看一下:这时候就可以在服务列表中查看到我们所注册的服务了;

5.4重开服务

在项目中一个服务挂了你就无法访问,以及太多的请求访问同一根服务会给服务增加压力所以我们需要重开一个服务,重开一个服务如果说在写一个的话会增加开发人员的开发速度所以我们可以这样操作:

1右键你需要重开的服务点击Copy Configuration

2.修改你需要的名称一般都是将 Name (1)改成2,凭自己喜好 , 在点击Modify options

3.选择 Add VM options

4.添加端口号

点击后他会多出一个输入框让你输入,首先你需要先输入 -Dserver.port=(端口号)

输入这个时基本上都会有提示,没有那就不关我的事,自己找原因😎

根据自己的端口输入端口号,避免被使用的端口就好了;

5测试

直接启动就好了然后我们去到 之前打开了的 nacos 网址 

192.168.46.128:8848/nacos

查看就好了

      下方就是我们的服务,点击详情就可以看到服务的端口

 6.服务发现

6.1了解一下服务发现:

服务发现和注册服务差不多,分为三步:

  1. 引入nacos 依赖 
  2. 配置nacos地址
  3. 服务发现

 前面两步我就步展示了;

6.2发现服务

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
import java.util.List;
import java.util.Random;

// 假设DiscoveryClient已经注入
private final DiscoveryClient discoveryClient;

private void handleCartItems(List<CartVO> vos) {
    // 1. 根据服务名称,拉取服务的实例列表
    List<ServiceInstance> instances = discoveryClient.getInstances("item-service");
    if (instances == null || instances.isEmpty()) {
        System.out.println("No available instances for item-service");
        return;
    }
    
    // 2. 负载均衡,挑选一个实例
    Random random = new Random();
    ServiceInstance instance = instances.get(random.nextInt(instances.size()));
    
    // 3. 获取实例的IP和端口
    URI uri = instance.getUri();
    String serviceUrl = uri.toString();

    try {
        // 创建URL对象
        URL url = new URL(serviceUrl);
        // 打开连接
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        
        // 设置请求头,如果需要的话
        connection.setRequestProperty("Accept", "application/json");
        
        // 获取响应码
        int status = connection.getResponseCode();
        if (status > 299) {
            System.out.println("Failed : HTTP error code : " + status);
            return;
        }
        
        // 读取响应内容
        BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();
        
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
        
        // 打印结果
        System.out.println(response.toString());
        
    } catch (Exception e) {
        e.printStackTrace();
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值