毕业设计无从下手?四个步骤手把手带你搭建一个后台微服务架构(上)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 毕业设计无从下手?四个步骤手把手带你搭建一个后台微服务架构

后台技术栈

  • 可以根据自身的项目需求,替换依赖。
技术名称 用途
SpringBoot 简化Spring
SpringCloud Hoxton.SR8 微服务
Mybatis Plus 持久层框架和代码生成器
Lombok 简化实体类
Swagger2 API接口文档生成工具
Logback 日志系统
Alibaba-easyexcel Excel读写
Redis 缓存
HttpClient 基于http协议的客户端用来实现远程的调用
Spring Task 定时任务
MySQL 数据库
RabbitMQ 消息中间件

准备工作

  • 一个ide开发工具,这里使用的是 2020.2.4,掌握后台技术栈中的所有技术。

7ed165eaba8f4073a995b94872be920b.png

注意:开始之前要先设置jdk,maven,自动导包,编码格式,等相关信息。遵循 约定 > 编码的规定,不会的可以点击访问: 首次安装必备!idea最常用设置(配置),让开发更顺手,进行设置。


一. 创建父工程

  1. 使用Maven骨架,选择org.apache.maven.archetypes:maven-archetype-site创建一个空的父工程,别忘了还要选择jdk哦!

f7282b343a074e768285e7a75da78bf6.png

  1. 添加工程名,GAV坐标。

14f1082509d0471d8fb1052ccb93cc5c.png

3. 指定自已的Maven

a5a582c1ea1941d18ba51cffacbb650d.png

  1. 创建完成是这个样子

0917d4b9e3b34b9d9cdeefc117bffee7.png

二. 修改父工程pom文件添加相关依赖

  1. 因为目前创建的是一个父工程所以要删除一些无用的文件,这里删除整个src就可以了。

f9c542e2e5a24868b10275cad011f425.png

  1. 删除无用的信息,并指定packaging为pom,正题效果如下图。

eafefaa8511544938f59bda2cb4b0df8.png

  1. 添加父工程依赖,这里的cloud版本号特别重要容易冲突下面的依赖已经指定好相关版本了,直接复制即可。
  <!--  统一管理版本-->
  <properties>
    <java.version>1.8</java.version>
    <spring-cloud-alibaba.version>2.2.2.RELEASE</spring-cloud-alibaba.version>
    <spring-cloud.version>Hoxton.SR8</spring-cloud.version>
    <mybatis-plus.version>3.4.1</mybatis-plus.version>
    <velocity.version>2.0</velocity.version>
    <swagger.version>2.9.2</swagger.version>
    <swagger-bootstrap-ui.version>1.9.2</swagger-bootstrap-ui.version>
    <commons-lang3.version>3.9</commons-lang3.version>
    <commons-fileupload.version>1.3.1</commons-fileupload.version>
    <commons-io.version>2.6</commons-io.version>
    <alibaba.easyexcel.version>2.1.1</alibaba.easyexcel.version>
    <apache.xmlbeans.version>3.1.0</apache.xmlbeans.version>
    <fastjson.version>1.2.28</fastjson.version>
    <gson.version>2.8.2</gson.version>
    <json.version>20170516</json.version>
    <aliyun-java-sdk-core.version>4.3.3</aliyun-java-sdk-core.version>
    <aliyun-sdk-oss.version>3.10.2</aliyun-sdk-oss.version>
    <jodatime.version>2.10.1</jodatime.version>
    <jwt.version>0.7.0</jwt.version>
    <httpclient.version>4.5.1</httpclient.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <!--spring boot 2.3.4.RELEASE-->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.3.4.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!--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>
      <!--mybatis-plus-->
      <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>${mybatis-plus.version}</version>
      </dependency>
      <!--mybatis-plus 代码生成器-->
      <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-generator</artifactId>
        <version>${mybatis-plus.version}</version>
      </dependency>
      <!-- Mybatis Plus 代码生成器模板引擎,  -->
      <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity-engine-core</artifactId>
        <version>${velocity.version}</version>
      </dependency>
      <!--swagger-->
      <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>${swagger.version}</version>
      </dependency>
      <!--swagger ui-->
      <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>${swagger.version}</version>
      </dependency>
      <!--swagger-bootstrap-ui-->
      <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>swagger-bootstrap-ui</artifactId>
        <version>${swagger-bootstrap-ui.version}</version>
      </dependency>
      <!--commons-lang3-->
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${commons-lang3.version}</version>
      </dependency>
      <!--文件上传-->
      <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>${commons-fileupload.version}</version>
      </dependency>
      <!--commons-io-->
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${commons-io.version}</version>
      </dependency>
      <!--excel解析-->
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>${alibaba.easyexcel.version}</version>
      </dependency>
      <!--excel解析依赖-->
      <dependency>
        <groupId>org.apache.xmlbeans</groupId>
        <artifactId>xmlbeans</artifactId>
        <version>${apache.xmlbeans.version}</version>
      </dependency>
      <!--json-->
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>${fastjson.version}</version>
      </dependency>
      <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>${json.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>${gson.version}</version>
      </dependency>
      <!--阿里云SDK远程调用-->
      <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>${aliyun-java-sdk-core.version}</version>
      </dependency>
      <!--阿里云文件管理-->
      <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
        <version>${aliyun-sdk-oss.version}</version>
      </dependency>
      <!--日期时间工具-->
      <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>${jodatime.version}</version>
      </dependency>
      <!--jwt工具-->
      <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>${jwt.version}</version>
      </dependency>
      <!--httpclient-->
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>${httpclient.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>8</source>
          <target>8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
  1. 添加完了千万别忘记刷新maven,让他进行下载哦。

bf43fab4bd194d9bb25bc6139075da30.png


三. 创建子工程

  • 这里分模块的方式有很多种,可以按照数据库的表分成对应的模块,也可以按照功能进行分,没有硬性的要求。

1. 创建子工程common

作用:每一个微服务公共的依赖,存放bean,工具类等。

  1. 创建子工程common,这里New的时候需要选择Module。

42304ea2a6d34f32889bfcfe19b101e0.png

  1. 2. 指定jdk不用选择任何骨架

1749e1cef8af45b89075c152452cfbfc.png

  1. 填写模块名称,GAV坐标,注意检查Parent指向的是不是父工程

2f0c66c69303436bbfaab61efc23e2c7.png

4.给common子工程添加对应的maven依赖。

 <description>每一个微服务公共的依赖,bean,工具类等</description>
    <dependencies>
    <!--  web起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--lombok用来简化实体类:需要安装lombok插件-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>
    </dependencies>

a1fd2654e08a4db8a1ab6e0b0a952995.png

  1. 创建包,添加通用的工具类

e07a87d965be4d6db36e1608d76e3943.png

9639a41ebf9b452ea44bbb19fd15fc31.png

最终效果

6d0297c40a5e4e21b817ce368f82d8ba.png


相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
20小时前
|
缓存 运维 监控
探索微服务架构中的API网关模式
在微服务架构的海洋中,API网关是连接客户端与众多微服务群岛之间的桥梁。本文将深入探讨API网关的设计原则、核心功能以及在现代软件架构中的关键作用,同时分析其在实际应用中的效益和面临的挑战。
|
18小时前
|
架构师 API 持续交付
探索微服务架构的演进与挑战
【6月更文挑战第24天】在软件开发领域,微服务架构作为一种灵活、可扩展的设计模式,已经引领了多年的技术潮流。本文将深入探讨微服务架构从兴起到成熟的发展路径,揭示其在现代应用中面临的主要挑战,并提供针对性的解决策略。通过分析微服务的设计理念、实践案例和未来趋势,我们旨在为开发者和架构师提供一份实用的指南,帮助他们在构建和维护复杂系统时做出明智的决策。
|
23小时前
|
运维 负载均衡 Cloud Native
云原生架构下的微服务治理实践
【6月更文挑战第24天】在云原生的浪潮下,微服务治理成为确保系统弹性、可维护性和可观测性的关键。本文通过深入分析微服务治理的核心要素与挑战,结合前沿技术和工具,提出一套实用的微服务治理策略,旨在帮助开发者和架构师构建更加稳定、高效且易于管理的分布式系统。
|
1天前
|
存储 负载均衡 NoSQL
微服务架构中的服务发现与注册中心
【6月更文挑战第23天】随着微服务架构的日益流行,服务发现和注册中心作为其核心组件,确保了服务的高可用性和伸缩性。本文将深入探讨服务发现机制的重要性、注册中心的工作原理以及它们在现代分布式系统中的应用,同时通过一个实际案例来展示如何在微服务环境中实现高效的服务管理。
|
1天前
|
监控 Java 微服务
从单体到微服务:Java架构演进之路
从单体到微服务:Java架构演进之路
|
15小时前
|
NoSQL Java 数据库
优化基于阿里云的微服务架构下的数据库访问性能
在应对大型电商项目中数据库访问性能瓶颈问题时,团队通过阿里云工具分析发现高QPS、慢查询和不合理数据交互是关键。优化措施包括:1) 索引优化,针对慢查询添加或调整索引;2) 开启读写分离,使用RDS读写分离功能和DRDS进行水平拆分;3) 引入Redis缓存热点数据,减少直接数据库访问;4) 服务化数据访问,降低跨服务数据库调用;5) 使用Sentinel进行限流和熔断,保护数据库资源。这些改进显著提升了系统响应速度和用户体验。
|
2天前
|
设计模式 监控 持续交付
深入理解微服务架构:从理论到实践
【6月更文挑战第22天】微服务架构作为现代软件开发的基石,其理念和实践已经深入人心。本文将通过一个实际案例,探讨如何将微服务架构的理论应用到实践中去,包括设计原则、技术选型、以及实施过程中可能遇到的挑战和相应的解决策略。我们将看到,尽管微服务带来了许多优势,但在实际应用中也不可避免地会遇到一系列问题,需要开发者具备深厚的技术功底和丰富的实践经验才能妥善应对。
|
3天前
|
监控 持续交付 数据安全/隐私保护
Python进行微服务架构的监控
【6月更文挑战第16天】
27 5
Python进行微服务架构的监控
|
2天前
|
监控 Kubernetes API
探索微服务架构中的API网关模式
【6月更文挑战第22天】在微服务架构的海洋中,API网关是一艘引领航行的旗舰。它不仅是服务的守门人,更是流量的指挥官和信息的翻译官。本文将深入探讨API网关的核心作用、设计考量与实现策略,为构建高效、可靠的微服务系统提供航标。
|
2天前
|
JSON 负载均衡 监控
探索微服务架构中的API网关模式
【6月更文挑战第22天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务间的通信与集成。本文将深入探讨API网关的核心概念、设计原则及其在现代后端系统中的关键作用,同时通过实例分析其对系统性能和可维护性的影响,为读者提供一种视角,理解如何高效地构建和管理微服务架构下的API网关。

热门文章

最新文章