Windows安装使用Nacos并进行服务治理

news2024/10/6 5:56:36

Nacos简介

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos其实就是一个注册中心,用来管理和注册微服务

搭建Nacos环境

安装nacos(版本1.1.4)

下载网址 https://github.com/alibaba/nacos/releases/tag/1.1.4

下载zip文件

下载本地解压缩

启动nacos

双击启动文件

发现启动不起来,根本没有反应

使用命令启动 startup.cmd也不行

解决问题

问题发现我的环境变量名叫JAVA_HOMO不叫JAVA_HOME 改过来之后重启发现已经解决成功

这时候命令启动也可以了

访问http://localhost:8848/nacos/#/login,出现以下页面代表成功

账号密码都是nacos 进行登录

Nacos实战入门

将商品微服务注册到nacos

修改shop-product商品微服务模块的代码,将其注册到nacos服务上

1 在pom里面引入nacos依赖



 <!--nacos客户端依赖-->

<dependency>

    <groupId>com.alibaba.cloud</groupId>

    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

</dependency>

2 在商品微服务shop-produc启动类添加@EnableDiscoveryClient注解

package com.wyh;



import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;



 /**

 *  @program:  springcloud-alibaba

 *  @description:  Product启动类

 *  @author:  魏一鹤

 *  @createDate:  2022-05-01 23:00

 **/



 //开启nacos客户端注解

@EnableDiscoveryClient

@SpringBootApplication

public class ProductApplication {

    public static void main(String[] args){

        SpringApplication.run(ProductApplication.class);

    }

}

3 在application.yml中添加nacos服务的地址



 #端口server:



server:

    port: 8081



 #项目名称



spring:

  application:

    name: service-product



 # 数据库

  datasource:

    driver-class-name: com.mysql.cj.jdbc.Driver

    url: jdbc:mysql://localhost:3306/shop?serverTimezone=GMT&allowPublicKeyRetrieval=true&useSSL=false&characterEncoding=utf8

    username: root

    password: root

 # jpa

  jpa:

    properties:

     hibernate:

      #jpa根据实体创建对应的数据库表.有的话就创建,没有的话就不创建

  hbm2ddl:

          auto: update

      #索引方式

  dialect: org.hibernate.dialect.MYSQL5InnoDBDialect



 #配置nacos服务

 cloud:

    nacos:

      discovery:

        server-addr: localhost:8848

4 启动服务,观察nacos的控制面板上是否有注册上来的商品微服务

服务必须启动才能被注册进入nacos!

商品微服务已经注册到nacos

把订单的微服务也按照相同的步骤进行操作注册到nacos,代码都是一样的

重新启动订单服务,发现也已经被注册到nacos

通过Nacos DiscoveryClient 获取微服务信息进行调用

最后处理订单微服务通过nacos来获取商品微服务的地址,通过注入DiscoveryClient 获取某个具体微服务的信息

  package com.wyh.controller;



import com.alibaba.fastjson.JSON;

import com.wyh.entity.Order;

import com.wyh.entity.Product;

import com.wyh.service.OrderService;

import lombok.extern.slf4j.Slf4j;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.cloud.client.ServiceInstance;

import org.springframework.cloud.client.discovery.DiscoveryClient;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import org.springframework.web.client.RestTemplate;



import java.util.List;



 /**

 *  @program:  springcloud-alibaba

 *  @description:  order controller

 *  @author:  魏一鹤

 *  @createDate:  2022-05-01 22:52

 **/

@RestController

@Slf4j

public class OrderController {

    @Autowired

    private OrderService orderService;

    @Autowired

    private RestTemplate restTemplate;

    @Autowired

    private DiscoveryClient discoveryClient;



    //下单

 @RequestMapping( "/order/prod/{pid}" )

    public Order order(@PathVariable Integer pid) {



        log.info( "接收到{}号商品的下单请求,接下来调用商品微服务查询此商品信息" ,pid);

        //调用商品微服务查询商品信息

 //使用用restTemplate调用商品微服务 有两个参数 url访问地址和返回值

 //订单微服务通过nacos调用商品微服务



 //获取商品微服务实例,参数就是nacos客户端服务列表的服务名

 List<ServiceInstance> instances = discoveryClient.getInstances( "service-product" );

       //获取商品微服务

 ServiceInstance serviceInstance = instances.get(0);

        //获取商品微服务地址

 String host = serviceInstance.getHost();

        //获取商品微服务端口

  int port = serviceInstance.getPort();

        //把获取到商品微服务的地址+端口进行嵌入

 Product product = restTemplate.getForObject( "http://" +host+ ":" +port+ "/product/" + pid, Product.class);

        log.info( "查询到{}号商品信息,内容是{}" ,pid, JSON.toJSONString(product));

        //组装order订单信息

 Order order=new Order();

        //用户信息 模拟即可

 order.setUid(1);

        order.setUsername( "测试用户" );

        //商品信息 从查询到的product中获取

 order.setPid(pid);

        order.setPname(product.getPname());

        order.setPprice(product.getPprice());

        //购买数量 模拟即可

 order.setNumber(1);

        //下单 创建订单信息

  orderService.createOrder(order);

        log.info( "创建信息成功,订单信息为:{}" ,JSON.toJSONString(order));

        return order;

    }



}

通过debug的方式发现请求路径拼接没问题

测试结果,没有问题,下单成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/692709.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AIGC】ChatGLM2-6B大模型 据称推理性能超越Chat4.0

ChatGLM2-6B ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本&#xff0c;在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上&#xff0c;ChatGLM2-6B 引入了如下新特性&#xff1a; 更强大的性能&#xff1a;基于 ChatGLM 初代模型的开发经验&…

Flink CDC 2.4 正式发布,新增 Vitess 数据源,更多连接器支持增量快照,升级 Debezium 版本

Flink CDC 2.4 正式发布&#xff0c;新增 Vitess 数据源&#xff0c;更多连接器支持增量快照&#xff0c;升级 Debezium 版本 1. Flink CDC 简介2. Flink CDC 2.4 概览3. 详解核心特性和重要改进3.1 深入解读3.2 其他改进 4. 未来规划 1. Flink CDC 简介 Flink CDC [1] 是基于…

皓峰防火墙存SQL注入复现

简介 深圳市皓峰通讯技术有限公司成立于2004年&#xff0c;位于深圳市高新技术产业园&#xff0c;是经过国家认定的“双软”企业和“国家高新技术企业” 登陆界面如下 复现 fofa 搜索 app"皓峰防火墙系统登录" 抓取登录的post包 POST /login.php HTTP/1.1 Host:…

专项练习13

目录 一、选择题 1、1true的返回值是true&#xff0c;这句话是否正确&#xff1f; 2、下列关于JavaScript中变量的说法&#xff0c;错误的是&#xff1f; 3、以下哪些表达式的结果为true&#xff08;&#xff09; 二、编程题 1、将数组参数中的数字从大到小进行排序并返回 一…

CVE-2023-34541 LangChain 任意命令执行

漏洞简介 LangChain是一个用于开发由语言模型驱动的应用程序的框架。 在LangChain受影响版本中&#xff0c;由于load_prompt函数加载提示文件时未对加载内容进行安全过滤&#xff0c;攻击者可通过构造包含恶意命令的提示文件&#xff0c;诱导用户加载该文件&#xff0c;即可造…

ROS:服务通信机制详解

目录 ROS&#xff1a;通信机制一、服务通信机制简介1.1概念1.2作用 二、服务通信理论模型三、服务通信自定义srv3.1目的3.2流程3.2.1创建srv文件3.2.2编辑配置文件3.2.3.编译 四、服务通信自定义srv调用(C)4.1要求4.2流程4.3vscode配置4.4服务端代码4.5客户端代码4.6配置 CMake…

知识图谱相关概念整理

文章目录 1、概论2、什么是知识图谱&#xff1f;3、知识图谱构建3.1、构建知识图谱的生命周期3.2、Schema定义3.3、知识抽取3.4、知识融合3.5、知识存储3.6、知识推理 4、图谱建设的一些经验 1、概论 知识图谱&#xff08;KnowledgeGraph&#xff09;以结构化的形式描述客观世界…

C# Winform DataGridView 控件和 DataTable

目录 一、概述 二、DataTable 的用法 1.创建表和列 2.添加行 3.取值和赋值 4.删除行 5.遍历 DataTable 6.判断 DataTable 列中是否存在某个值 7.设置主键 8.获取 DataRow 所在的行号 9.DataTable 转换为 List 10.将 List 转 DataTable 三、DataGridView 的用法 1…

记录好项目D16

记录好项目 你好呀&#xff0c;这里是我专门记录一下从某些地方收集起来的项目&#xff0c;对项目修改&#xff0c;进行添砖加瓦&#xff0c;变成自己的闪亮项目。修修补补也可以成为毕设哦 本次的项目是个电影购票系统 一、系统介绍 前台 普通用户注册、登录、注销 用户…

Redis哨兵——单机安装部署

Redis哨兵——单机安装部署 目录 主从配置&#xff1a; 部署redis哨兵&#xff1a; 结 果 验 证&#xff1a; 主从配置&#xff1a; 1.安装epel源&#xff1a;yum install epel-release -y 2.安装软件&#xff1a;yum install redis -y 3.新建文件夹便于验证&#xff1a;m…

DAY31:回溯算法(六):子集+子集Ⅱ+递增子序列(经典子集问题)

78.子集 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[],[1],[2],…

Label,RC,HPA

上面简单说了一下 pod 的基本知识点&#xff0c;待到后面会使用到 pod 的一些高阶知识点的时候&#xff0c;还可以再细细琢磨底层原理 我们接着继续学习 Lable &#xff0c; RC&#xff0c;HPA 的相关知识点 Label 是什么&#xff1f; label 就是标签&#xff0c;例如之前我们…

Redis进阶 - Redis哨兵

原文首更地址&#xff0c;阅读效果更佳&#xff01; Redis进阶 - Redis哨兵 | CoderMast编程桅杆https://www.codermast.com/database/redis/redis-advance-sentinel.html 思考 slave 节点宕机恢复以后可以找 master 节点同步数据&#xff0c;那么 master 节点宕机怎么办&am…

Vue事件捕获和事件冒泡

什么是事件&#xff1f; 当一个HTML元素产生一个事件时 该事件会在元素节点与根节点之间的路径传播&#xff0c; 路径所经过的节点都会收到该事件&#xff0c;这个传播的过程叫做DOM事件流 什么是事件捕获&#xff1f;(网景) 事件捕获&#xff1a;事件捕获会从document开始触…

神经网络如何入门?

推荐《Python神经网络编程》这本入门书。豆瓣评分9.2。 如果你可以进行加、减、乘、除运算&#xff0c;那么你就可以制作自己的神经网络。我们使用的最困难运算是梯度演算&#xff08;gradient calculus&#xff09;&#xff0c;但是&#xff0c;我们会对这一概念加以说明&…

基于Java+Springboot+Vue的校园爱心捐赠互助管理系统设计和实现

博主介绍&#xff1a;擅长Java、微信小程序、Python、Android等&#xff0c;专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案例…

Android Studio 找不到 uploadArchives 入口

在4.2之前版本的 Android Studio 中想要module 打包arr&#xff0c;上传Maven 我们只需要 在对应module的build.gradle文件顶部添加 apply plugin: maven然后每一次修改记得要修改版本号&#xff0c;相同版本号提交失败&#xff0c;是不会覆盖的 defaultConfig {......versi…

GitLab+Jenkins实现持续集成自动化测试

一、Jenkins和GitLab互相关联 1、在Jenkins设置gitlab的认证。 1)复制gitlab->clone with HTTP 的URL 如果你想学习接口自动化测试&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站播放全网第一的接口自动化测试教程&#xff0c;同时在线人数到达1000人…

Python3.7源码编译

1.下载Python3.7.0源码 git clone https://github.com/python/cpython.git git checkout v3.7.0wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz源码目录结构如下所示&#xff1a; &#xff08;1&#xff09;Include目录&#xff1a;包含Python提供的所有…

反射来命令执行存在的一些问题

一.利用Runtime进行反射 java.lang.Runtime.getRuntime().exec("")若使用该paylaod&#xff0c;比如若依利用点如下&#xff1a; Object bean Class.forName(beanName).newInstance(); invokeMethod(bean, methodName, methodParams)想要通过Class.forName(beanNa…