从零开始搭建微服务(一)

构建项目父工程 添加公共核心模块 安装nacos

安装nacos

使用nacos
  1. 我们下载是源代码 解压即可

    properties 复制代码
    unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
    cd nacos/bin
  2. 添加nacos数据库修改nacos配置文件

    新建数据库nacos 修改配置文件

    2.1 导入数据库脚本 nacos/conf/mysql-schema.sql 在新建的nacos数据库执行即可

    2.2 修改配置文件数据库密码 nacos/conf/application.properties 如果没有 复制一份__application.properties.example__

  3. 启动服务器


注:Nacos的运行需要以至少2C4g60g*3的机器配置下运行

Linux/Unix/Mac

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

properties 复制代码
sh startup.sh -m standalone

如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:

properties 复制代码
bash startup.sh -m standalone

Windows

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

复制代码
startup.cmd -m standalone
  1. 访问http://127.0.0.1:8848/nacos能通代表启动成功 默认用户名和密码 nacos

  2. 关闭nacos

    Linux/Unix/Mac

    复制代码
    sh shutdown.sh

    Windows

    复制代码
    shutdown.cmd

    或者双击shutdown.cmd运行文件。

搭建项目

  • 新建项目 修改项目打包方式为pom,删除掉src目录和其它无用的文件只保留pom.xml ,引入微服务依赖 前面有讲过

    我们先讲基础的依赖添加进来后面需要其它组件的时候我们在添加

    父工程结构如下:

    pom文件

    xml 复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.aihe</groupId>
        <artifactId>aihe-cloud</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    
            <spring-boot-admin.version>2.7.10</spring-boot-admin.version>
            <spring.boot.version>2.7.11</spring.boot.version>
            <spring.cloud.version>2021.0.5</spring.cloud.version>
            <spring.cloud.alibaba.version>2021.0.5.0</spring.cloud.alibaba.version>
            <jasypt.version>3.0.5</jasypt.version>
        </properties>
    
        <!-- 以下依赖 全局所有的模块都会引入  -->
        <dependencies>
            <!--配置文件处理器-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>
            <!--配置文件加解密-->
            <dependency>
                <groupId>com.github.ulisesbocchio</groupId>
                <artifactId>jasypt-spring-boot-starter</artifactId>
                <version>${jasypt.version}</version>
            </dependency>
            <!--监控-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <!--监控客户端-->
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-starter-client</artifactId>
                <version>${spring-boot-admin.version}</version>
            </dependency>
            <!--Lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <scope>provided</scope>
            </dependency>
            <!--测试依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <!-- spring cloud 依赖 -->
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring.cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    
                <!-- spring cloud alibaba依赖 -->
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>${spring.cloud.alibaba.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    
                <!-- spring boot依赖 -->
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>${spring.boot.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    </project>
  • 添加子项目 common模块 封装全局返回 全局异常,全局枚举 其它的以后封装

    pom文件

    暂时先添加web和validation依赖

    xml 复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.aihe</groupId>
            <artifactId>aihe-cloud</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
        <artifactId>aihe-cloud-common</artifactId>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-validation</artifactId>
            </dependency>
    
        </dependencies>
    
    </project>
    到此我们微服务第一步就算是搭建好了 先安装nacos是为了后面的方便
相关推荐
sun03229 小时前
【架构基础】Spring中的PropertySourcesPlaceholderConfigurer介绍 (并非新知识,比较古老的一种使用方式)
java·spring·架构
MrSYJ9 小时前
Redis 做分布式 Session
后端·spring cloud·微服务
陈桴浮海9 小时前
【Linux&Ansible】学习笔记合集三
linux·运维·云原生·ansible
静听松涛1339 小时前
大语言模型长上下文技术突破:如何处理超长文本的注意力机制与架构图解
人工智能·语言模型·架构
YaHuiLiang9 小时前
小微互联网公司与互联网创业公司-AI编程需要理性看待
架构
刘一说9 小时前
Java 中实现多租户架构:数据隔离策略与实践指南
java·oracle·架构
国科安芯9 小时前
火箭传感器控制单元的抗辐照MCU选型与环境适应性验证
单片机·嵌入式硬件·架构·risc-v·安全性测试
晚霞的不甘9 小时前
Flutter for OpenHarmony 打造沉浸式呼吸引导应用:用动画疗愈身心
服务器·网络·flutter·架构·区块链
喵叔哟9 小时前
67.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--分摊功能总体设计与业务流程
数据库·微服务·架构
roman_日积跬步-终至千里10 小时前
【MLOps(1)】MLOps 架构总览与全方位基础:从实验室到生产环境的实战指南
架构