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 \
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了解一下服务发现:
服务发现和注册服务差不多,分为三步:
前面两步我就步展示了;
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();}
}