• 【微服务】Day03


    Nacos心跳机制

    常见面试题

    心跳:周期性的操作,来表示自己是健康可用的机制

    注册到Nacos的微服务项目(模块)都是会遵循这个心跳机制的

    心跳机制的目的,是每个服务和Nacos保持沟通和交换信息的机制

    默认情况下,服务启动开始每隔5秒会向Nacos发送一个"心跳包",这个心跳包中包含了当前服务的基本信息

    Nacos接收到这个心跳包,首先检查当前服务在不在注册列表中,如果不在按新服务的业务进行注册,如果在,表示当前这个服务是健康状态

    如果一个服务连续3次心跳(默认15秒)没有和Nacos进行信息的交互,就会将当前服务标记为不健康的状态

    如果一个服务连续6次心跳(默认30秒)没有和Nacos进行信息的交互,Nacos会将这个服务从注册列表中剔除

    这些时间都是可以通过配置修改的

    实例类型分类

    实际上Nacos的服务类型还有分类

    • 临时实例(默认)
    • 持久化实例(永久实例)

    默认每个服务都是临时实例

    如果想标记一个服务为永久实例

    cloud:
      nacos:
        discovery:
          # ephemeral设置当前项目启动时注册到nacos的类型 true(默认):临时实例 false:永久实例
          ephemeral: false 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    持久化实例启动时向nacos注册,nacos会对这个实例进行持久化处理

    心跳包的规则和临时实例一致,只是不会将该服务从列表中剔除

    一般情况下,我们创建的服务都是临时实例

    只有项目的主干业务才会设置为永久实例

    使用Idea启动Nacos

    之前我们启动Nacos都是使用dos命令行

    启动过程比较复杂,命令比较长

    Idea实际上支持我们更加方便的启动Nacos

    步骤1:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IItI9bxR-1664554865775)(image-20220822092823703.png)]

    步骤2:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kAnvckm9-1664554865776)(image-20220505142258656.png)]

    步骤3:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mwoyuArg-1664554865777)(image-20220505142111568.png)]

    配置成功之后

    Nacos就会出现在idea的启动选项中了

    这种方法实际上只是为了简便大家启动nacos的操作,还是需要掌握命令行的启动方式的!

    创建csmall-cart子项目

    创建项目

    创建csmall-cart子项目

    父子相认

    子项目pom文件为:

    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0modelVersion>
        <parent>
            <groupId>cn.tedugroupId>
            <artifactId>csmallartifactId>
            <version>0.0.1-SNAPSHOTversion>
            <relativePath/> 
        parent>
        <groupId>cn.tedugroupId>
        <artifactId>csmall-cartartifactId>
        <version>0.0.1-SNAPSHOTversion>
        <name>csmall-cartname>
        <description>Demo project for Spring Bootdescription>
        <dependencies>
            
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-webartifactId>
            dependency>
            
            <dependency>
                <groupId>org.mybatis.spring.bootgroupId>
                <artifactId>mybatis-spring-boot-starterartifactId>
            dependency>
            
            <dependency>
                <groupId>com.alibabagroupId>
                <artifactId>druidartifactId>
            dependency>
            
            <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
            dependency>
            
            <dependency>
                <groupId>cn.tedugroupId>
                <artifactId>csmall-commonsartifactId>
                <version>0.0.1-SNAPSHOTversion>
            dependency>
            
            <dependency>
                <groupId>com.github.xiaoymingroupId>
                <artifactId>knife4j-spring-boot-starterartifactId>
            dependency>
            
            <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
            dependency>
        dependencies>
    
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    删除test文件夹

    删除application.properties配置文件

    创建application.yml文件,内容如下

    准备数据

    推荐大家学习使用数据库的专用可视化工具来操作数据库

    heidiSQL(安装MariaDB自带的)免费的

    SqlYog Navicat是收费的

    我们cart模块要操作数据库,首先保证要有数据

    所以我们要创建需要的表和添加表中的数据

    sql代码已经发送在csmall-finish项目的node文件夹中:csmall_db.sql

    运行其中的sql代码即可

    CREATE DATABASE  IF NOT EXISTS `csmall_db` DEFAULT CHARACTER SET utf8mb4;
    USE `csmall_db`;
    
    DROP TABLE IF EXISTS `cart_tbl`;
    
    CREATE TABLE `cart_tbl` (
                                `id` int NOT NULL AUTO_INCREMENT COMMENT '购物车id',
                                `commodity_code` varchar(255) DEFAULT NULL COMMENT '商品编码',
                                `price` int DEFAULT '0' COMMENT '商品单价',
                                `count` int DEFAULT '0' COMMENT '购买数量',
                                `user_id` varchar(255) DEFAULT NULL COMMENT '用户id',
                                PRIMARY KEY (`id`),
                                UNIQUE KEY `commodity_code` (`commodity_code`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3;
    
    
    insert  into `cart_tbl`(`id`,`commodity_code
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    React中useMemo与useCallback的区别
    盘点10个程序员可以接私活的平台和一些建议
    地产三维实景vr展示的功能及特点
    Java高级-动态代理
    【云原生 | Kubernetes 系列】----亲和与反亲和
    CompletableFuture详解
    以太坊智能合约的历史里程碑: 从DAO到数据隐私的技术演进
    JavaScript的DOM操作(二)
    正则表达式语法与应用案例
    【CIO人物展】国家能源集团信息技术主管王爱军:中国企业数智化转型升级的内在驱动力...
  • 原文地址:https://blog.csdn.net/shortcutsuccess/article/details/127130691