• springcloud之nacos服务治理


    简介

    服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现。
    上篇中,服务调用的地址是写的固定的,如果服务地址变更需要手动修改地址,在程序开发中比较费劲,比较难管理。于是需要一个统一管理服务的组件,服务注册中心很多,如Zookeeper,Eureka,Consul,Nacos,本篇介绍Nacos,是SpringCloud Alibaba 的一个组件,负责服务注册发现和服务配置。
    关系图
    服务注册中心具有以下功能:

    1. 服务发现:
      服务注册:保存服务提供者和服务调用者的信息
      服务订阅:服务调用者订阅服务提供者的信息,注册中心向订阅者推送提供者的信息
    2. 服务配置:
      配置订阅:服务提供者和服务调用者订阅微服务相关的配置
      配置下发:主动将配置推送给服务提供者和服务调用者
    3. 服务健康检测
      检测服务提供者的健康情况,如果发现异常,执行服务剔除

    naocs搭建

    镜像拉取
    docker pull nacos/nacos-server
    
    • 1
    nacos数据库脚本

    创建数据库,nacos_config,执行脚本创建表。
    nacos脚本

    创建容器
    docker run -d  --env MODE=standalone -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=192.168.5.130 -e MYSQL_SERVICE_USER=root  -e MYSQL_SERVICE_PASSWORD=123456 -e MYSQL_SERVICE_DB_NAME=nacos_config -e JVM_XMS=256m -e JVM_XMX=256m -e JVM_XMN=256m -p 8848:8848  --network=host  --name nacos --restart=always nacos/nacos-server
    
    • 1
    查看启动日志
    docker logs --since 1m nacos
    
    • 1

    错误:

    Caused by: com.alibaba.nacos.api.exception.NacosException: Nacos Server did not start because dumpservice bean construction failure :
    No DataSource set
    	at com.alibaba.nacos.config.server.service.dump.DumpService.dumpOperate(DumpService.java:225)
    	at com.alibaba.nacos.config.server.service.dump.ExternalDumpService.init(ExternalDumpService.java:52)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389)
    	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333)
    	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157)
    	... 54 common frames omitted
    Caused by: java.lang.IllegalStateException: No DataSource set
    	at org.springframework.util.Assert.state(Assert.java:76)
    	at org.springframework.jdbc.support.JdbcAccessor.obtainD
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    出现错误可能原因:

    1. mysql连接不上,需要设置配置文件application.properties中db.url的超时时间。原本是1000和3000
    db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000
    
    • 1

    2.端口问题8848未开放。

    #开放端口
    firewall-cmd --zone=public --add-port=8848/tcp --permanent
    #重启防火墙
    systemctl restart firewalld.service
    #重启配置
    firewall-cmd --reload
    #查询已开放的端口(已开放的端口号集合):
    firewall-cmd --zone=public --list-ports
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.数据库连接问题。尝试用命令登录数据库试试,在重启启动nacos。

    访问nacos

    默认的地址:http://nacos的服务ip:8848/nacos/,用户和密码默认都是nacos.
    登录成功

    项目搭建

    nacos依赖引入

    需要注意版本对应 nacos1.4.1,nacos-discovery2.1.0.RELEASE,

    	<dependency>
    				<groupId>org.springframework.cloudgroupId>
    				<artifactId>spring-cloud-dependenciesartifactId>
    				<version>Hoxton.SR12version>
    				<type>pomtype>
    				<scope>importscope>
    			dependency>
      
            
            <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
                <version>2.1.0.RELEASEversion>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    yml配置服务注册地址

    user和product以及order模块都需要配置

    spring:
      application:
        name: springcloud-user
      ##nacos服务地址注册
      cloud:
        nacos:
          discovery:
            server-addr: nacos地址:8848
            enabled: true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    启动类

    启动类都需要加@EnableDiscoveryClient注解。

    /**
     * 服务注册
     */
    @EnableDiscoveryClient
    @SpringBootApplication
    public class SpringCloudUserApplication {
        public static void main(String[] args) {
            SpringApplication.run(SpringCloudUserApplication.class,args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    服务注册是否成功

    服务注册

    调用测试

    日志
    日志
    网页测试
    测试
    下篇讲解,负载均衡调用。

  • 相关阅读:
    无线渗透实操_AIRCRACK-NG基础
    Verilog HDL复习总结
    Google Earth Engine ——利用where来合理划分NDVI阈值
    opencv旋转图像
    Android进阶之路 - 存、取、读 本地 Json 文件
    代码随想录刷题记录 1 - 数组
    函数(上)(C语言)
    PyCharm 安装库时显示连接超时
    SAP MM物料移动取总账科目逻辑,debug 标准bapi BAPI_GOODSMVT_CREATE
    tokenizers normalizers模块
  • 原文地址:https://blog.csdn.net/qq_37400096/article/details/126769618