nacos项目搭建

注册中心简介

背景分析

在微服务中,首先需要面对的问题就是如何查找服务(软件即服务),其次,就是如何在不同的服务之间进行通信?如何更好更方便的管理应用中的每一个服务,如何建立各个服务之间联系的纽带,由此注册中心诞生(例如淘宝网卖家提供服务,买家调用服务)。
市面上常用注册中心有Zookeeper(雅虎Apache),Eureka(Netfix),Nacos(Alibaba),Consul(Google),那他们分别都有什么特点,我们如何进行选型呢?我们主要从社区活跃度,稳定性,功能,性能等方面进行考虑即可.本次微服务的学习,我们选择Nacos,它很好的支持了阿里的双11活动,不仅可以做注册中心,还可以作为配置中心,稳定性和性能都很好。

Nacos概述

Nacos(DynamicNaming and Configuration Service)是一个应用于服务注册与发现、配置管理的平台。它孵化于阿里巴巴,成长于十年双十一的洪峰考验,沉淀了简单易用、稳定可靠、性能卓越的核心竞争力。其官网地址如下:

Nacos 快速开始

构建Nacos服务 (准备工作)

第一:确保你电脑已配置JAVA_HOME环境变量(Nacos启动时需要),例如:

在这里插入图片描述

 第二:确保你的MySQL版本为5.7以上(MariaDB10.5以上),例如

在这里插入图片描述

下载与安装

第一步:Nacos下载,可在浏览器直接输入如下地址:

Releases · alibaba/nacos · GitHub

第二步:选择对应版本,直接下载,如图所示:

第三步:解压Nacos(最好不要解压到中文目录下),其目录结构如下: 

服务启动与访问 

第一步:启动Nacos服务(nacos的bin目录去通过指令启动)。

Linux/Unix/Mac启动命令(standalone代表着单机模式运行,非集群模式):

./startup.sh -m standalone

Windows启动命令(standalone代表着单机模式运行,非集群模式):

startup.cmd -m standalone

 Windows启动命令(standalone代表着单机模式运行,非集群模式):

        也可以通过startup.cmd启动! 

说明:
1)执行命令时要么配置环境变量,要么直接在nacos/bin目录下去执行.
2)nacos启动时需要本地环境变量中配置了JAVA_HOME(对应jdk的安装目录),
3)一定要确保你连接的数据库(nacos_config)是存在的.
4)假如所有的配置都正确,还连不上,检查一下你有几个数据库(mysql,…)

第二步:访问Nacos服务。

打开浏览器,输入http://localhost:8848/nacos地址,出现如下登陆页面:

在这里插入图片描述

 其中,默认账号密码为nacos/nacos.

服务注册与调用入门(重点)

业务描述

创建两个项目Module分别为服务提供者和服务消费者(假如已有则无需创建),两者都要注册到NacosServer中(这个server本质上就是一个web服务,端口默认为8848),然后服务提供者可以为服务消费者提供远端调用服务(例如支付服务为服务提供方,订单服务为服务消费方),如图所示:

在这里插入图片描述

第一步:创建服务提供者工程(module名为aqsc-regulator-personnel-system,假如已有则无需创建),继承parent工程(01-sca),其pom.xml文件内容如下: 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>sinosoft-framework</artifactId>
        <groupId>com.sinosoft</groupId>
        <version>2.0.2</version>
    </parent>
    <artifactId>aqsc-regulator-personnel-system</artifactId>
    <version>1.0.0</version>
    <dependencies>
        <!--Web服务-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
       <!--服务的注册和发现(我们要讲服务注册到nacos)-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>


    </dependencies>
  
</project>

第二步:创建并修改配置文件application.yml(或者application.properties),实现服务注册,关键代码如下:

server:
   port: 8081
spring:
  application:
    name: sca-provider #进行服务注册必须配置服务名
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

        或者创建bootstrap.yml配置文件(此配置文件优先级高于其他)

#spring:
#  cloud:
#    nacos:
#      config:
#        server-addr: 127.0.0.1:8848
#        prefix: regulatorpersonnel
#        file-extension: yaml
#        group: DEFAULT_GROUP
#        namespace: e5194595-5626-404c-8387-ec6e73c075aa
#      discovery:
#        server-addr: 127.0.0.1:8848
#        group: DEFAULT_GROUP
#        namespace: e5194595-5626-404c-8387-ec6e73c075aa

注意:服务名不要使用下划线(“_”),应使用横杠(“-”),这是规则。


第三步:创建启动类(假如已有则无需定义),关键代码如下:

@SpringBootApplication
@MapperScan({"com.sinosoft.springbootplus.**.mapper"})
@EnableFeignClients(basePackages={"com.sinosoft.springbootplus"})
@EnableDiscoveryClient
public class RegulatorPersonnelApplication {

    public static void main(String[] args) {
        // 启动spring-boot-plus
        ConfigurableApplicationContext context = SpringApplication.run(RegulatorPersonnelApplication.class, args);
        // 打印项目信息
        PrintApplicationInfo.print(context);
    }

}

        注意:                

          1.在SpringBoot 启动类添加@EnableDiscoveryClient注解

               表示开启naocos

            2.@EnableFeignClients(basePackages={"com.sinosoft.springbootplus"})

                表示注入到spring容器中

第四步:启动启动类,然后刷先nacos服务,检测是否服务注册成功,如图所示:

        

第五步:停掉sca-provider服务,然后不断刷新nacos服务列表,检查服务的健康状态。

为消费者创建调用的方法:

 https://blog.csdn.net/qq_58148854/article/details/125881638

消费者服务发现及调用

第一步: 创建服务消费者工程(module名为aqsc-system,假如已有则无需创建),继承parent工程(01-sca),其pom.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>sinosoft-framework</artifactId>
        <groupId>com.sinosoft</groupId>
        <version>2.0.2</version>
    </parent>
    <artifactId>aqsc-system</artifactId>
    <version>1.0.0</version>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>com.sinosoft</groupId>
            <artifactId>system-cloud-api</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.sinosoft</groupId>
            <artifactId>ascs-service-center-api</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>

</project>

注意:因为要远程调用提供者的接口,所以必须依赖ascs-service-center-api的jar包.

        <dependency>
            <groupId>com.sinosoft</groupId>
            <artifactId>ascs-service-center-api</artifactId>
            <version>1.0.0</version>
        </dependency>

第二步:创建aqsc-system服务中的配置文件application.yml,关键代码如下:

server:
  port: 8090
spring:
  application:
    name: system #服务注册时,服务名必须配置
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #从哪里去查找服务

第四步:创建消费端启动类并实现服务消费,关键代码如下:

@SpringBootApplication
@MapperScan({"com.sinosoft.springbootplus.**.mapper"})
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.sinosoft.springbootplus")
public class SystemApplication {

    public static void main(String[] args) {
        // 启动spring-boot-plus
        ConfigurableApplicationContext context = SpringApplication.run(SystemApplication.class, args);
        // 打印项目信息
        PrintApplicationInfo.print(context);
    }

}

第五步:测试:通过测试类来实现远程调用

@SpringBootTest(classes = SystemApplication.class)
@RunWith(SpringRunner.class)
@Slf4j
public class CnareaApiTest {

    @Autowired
    private CnareaApiImpl cnareaApi;

    @Autowired
    private RegulatorPersonnelServiceApi regulatorPersonnelServiceApi;


    @Test
    public void test6(){
        List<JgjgOrgTreeDto> jgjgOrgTree = regulatorPersonnelServiceApi.getJgjgOrgTree(1);
        log.info("数据结果:{}",JSON.toJSONString(jgjgOrgTree));
    }

    @Test
    public void test7(){
        JgjgOrgTreeDto jgjgOrgTreeDto = regulatorPersonnelServiceApi.getjgjgOrgTreeDto(1539856129095815169L);
        log.info("数据结果:{}",JSON.toJSONString(jgjgOrgTreeDto));
    }

}

                               第五步(第一种方法)详解:

                                          1. 首先将接口依赖注入.(pom文件已经依赖进来了)

                                           2. 见text7()方法:通过对象名.方法名()调用.             regulatorPersonnelServiceApi.getjgjgOrgTreeDto(1539856129095815169L);

                                           进入到getjgjgOrgTreeDto()方法里面可以看到

                                                   

                                                                                                                 图一

                                                

                                                                                                                 图二

                                                     由此可见通过图一访问到提供者,在通过图二访问到具体的接口,如下所示

                                        

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

第五步(方法二):测试:通过测试类来实现远程调用          

@SpringBootTest(classes = RegulatorPersonnelApplication.class)
@RunWith(SpringRunner.class)
@Slf4j
public class CnareaApiTest {

    @Autowired
    private CnareaApi cnareaApi;

    @Test
    public void findByCodeTest(){
        CnareaDto xz =  cnareaApi.findByCode("540000000000");
        log.info("获取结果:{}",JSON.toJSONString(xz));
    }
    @Test
    public void toTreeNodeByCodeTest(){
        CnareaTreeNode xz =  cnareaApi.toTreeNodeByCode(cnareaApi.findByCode("540000000000"));
        log.info("获取结果:{}",JSON.toJSONString(xz));
    }
}

   第五步(第一种方法)详解:

                                          1. 首先将接口依赖注入.(pom文件已经依赖进来了)

                                           2. 见text7()方法:通过对象名.方法名()调用.                                                                               cnareaApi.toTreeNodeByCode(cnareaApi.findByCode("540000000000"));

                                           进入到toTreeNodeByCode()方法里面可以看到

                                           

                                         通过system找到项目,通过url地址找到方法.

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建Spring Cloud Nacos项目的步骤如下: 1. 首先,需要在项目的配置文件中设置Nacos的相关配置。比如,在application.properties(或者application.yml)文件中,添加以下配置: ``` spring.cloud.nacos.config.server-addr=192.168.110.179:8848 spring.cloud.nacos.config.file-extension=properties spring.cloud.nacos.config.group=DEFAULT_GROUP spring.cloud.nacos.discovery.server-addr=192.168.110.179:8848 ``` 2. 接下来,需要在项目的依赖管理文件中添加相关的依赖,以引入Spring Cloud Nacos和相应的版本。比如,在pom.xml文件中,可以添加如下依赖: ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> ``` 3. 在项目的启动类上添加@EnableDiscoveryClient注解,以启用Nacos的服务注册与发现功能。比如,在Spring Boot的启动类上添加如下注解: ```java import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } } ``` 4. 最后,可以根据具体的业务需求,创建接口提供服务。你可以根据项目的具体情况来设计和实现接口,并使用Nacos作为服务注册与发现的中心。 需要注意的是,以上步骤中的具体配置和依赖版本可以根据项目的实际情况来进行调整。同时,你也需要确保Nacos服务已经正确启动,并且可以通过指定的IP地址和端口进行访问。 希望以上信息对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SpringCloud+Nacos搭建使用](https://blog.csdn.net/ccczequn/article/details/123532588)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值