记录一下近两年接触的微服务框架的知识,一是为了日后需要搭建框架时方便查阅,二是与大家分享下我所了解的知识,如有不对的或描述未清楚的地方欢迎大家在评论区进行留言

接下来我会教大家如何搭建一个微服务框架和继承一些项目中常用到的组件

先带大家看下我搭建的demo结构

这些向大家介绍一下各个模块的分工

  • api模块主要是服务与服务之间调用的接口外放包,service_one_api和service_two_api分别对应service_one和service_two服务的接口外放包,后面会在继承feign组件时为大家介绍如何使用
  • entity模块主要是服务与服务之间传输数据的对象存放的地方,主要api模块和service模块会用到这个模块
  • common模块主要是存放一些服务之间的公用代码,比如core(工具箱)等等之类的模块
  • service模块主要存放的就是具体的服务模块
  • gateway 网关服务模块 主要是对请求过滤拦截和路由

以上我就先分为这几个模块创建demo,实际使用中可以根据自己项目需求来进行模块之间关系的搭建

接下来我将为大家展示下各个模块的pom文件

  • gateway 网关服务模块的pom和使用方式会在后面的文章进行单独讲解
  • 这个是cloud_demo主模块的pom主要用来管理整个服务框架的第三方包,pom内整合了一些可能会用到的第三方包
<?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>org.springframework.cloud</groupId><artifactId>spring-cloud-build</artifactId><version>2.3.0.RELEASE</version><relativePath/></parent><groupId>org.wcy</groupId><artifactId>cloud_demo</artifactId><packaging>pom</packaging><version>1.0.0</version><modules><module>common</module><module>api</module><module>service</module></modules><name>cloud_demo</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><junit.version>4.11</junit.version><cloud-alibaba.version>2.1.4.RELEASE</cloud-alibaba.version><cloud.version>Greenwich.SR6</cloud.version><lombok.version>1.18.12</lombok.version><spring-boot.version>2.1.13.RELEASE</spring-boot.version><fastjson-version>1.2.73</fastjson-version><org.mapstruct.version>1.3.0.Final</org.mapstruct.version><mybatis-plus.version>3.3.1</mybatis-plus.version><spring-boot-starter-cache-version>2.3.2.RELEASE</spring-boot-starter-cache-version><mysql-connector-java.version>8.0.11</mysql-connector-java.version><druid-spring-boot-starter.version>1.1.10</druid-spring-boot-starter.version><spring-data-elasticsearch.version>4.0.4.RELEASE</spring-data-elasticsearch.version><hibernate-validator.version>6.1.6.Final</hibernate-validator.version><commons-pool2.version>2.8.0</commons-pool2.version></properties><dependencyManagement><dependencies><!-- cloud-alibaba全家桶--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!-- cloud全家桶--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- web启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${spring-boot.version}</version></dependency><!--开启springboot缓存支持--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId><version>${spring-boot.version}</version></dependency><!--添加redis缓存组件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis-reactive</artifactId><version>${spring-boot.version}</version></dependency><!--Apache下一个开源的公共资源池--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>${commons-pool2.version}</version></dependency><!-- AlibabaJson工具类--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson-version}</version></dependency><!-- mapstruct 映射bean的工具--><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-jdk8</artifactId><version>${org.mapstruct.version}</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>${org.mapstruct.version}</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>${org.mapstruct.version}</version></dependency><!-- mybatis Plus 插件--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>${mybatis-plus.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-extension</artifactId><version>${mybatis-plus.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>${mybatis-plus.version}</version></dependency><!-- rsa开始 --><dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk16</artifactId><version>1.46</version></dependency><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.10</version></dependency><!-- rsa结束 --><!--nacos注册中心--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.1.0.RELEASE</version></dependency><!--alibaba服务监控组件--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>2.1.0.RELEASE</version></dependency><!--mysql连接驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql-connector-java.version}</version></dependency><!--druid数据监控--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid-spring-boot-starter.version}</version></dependency><!-- es依赖 --><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-elasticsearch</artifactId><version>${spring-data-elasticsearch.version}</version></dependency><dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>${hibernate-validator.version}</version></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><!--Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量。--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><!-- springboot单元测试框架 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>${spring-boot.version}</version></dependency></dependencies><build><pluginManagement><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.1.0.RELEASE</version></plugin></plugins></pluginManagement><plugins><!-- 编译插件(设置源代码的JDK版本,目标代码JDK版本,编译字符集) --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version><configuration><source>8</source><target>8</target><encoding>UTF-8</encoding></configuration></plugin></plugins><resources><resource><directory>src/main/java</directory><includes><include>**/*Mapper.xml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/resources</directory><includes><!--包含resources文件夹以及子文件夹下所有资源--><include>**/*.*</include></includes></resource></resources></build>
</project>
  • 这个是api模块的pom,里面只有feign组件因为api模块内的子模块都是服务间通讯外放的接口,子模块内的pom基本不需要引入其他什么包所以我就暂时补贴出pom了
<?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><packaging>pom</packaging><modules><module>service_one_api</module><module>service_two_api</module></modules><parent><groupId>org.wcy</groupId><artifactId>cloud_demo</artifactId><version>1.0.0</version></parent><groupId>org.wcy</groupId><artifactId>api</artifactId><version>1.0.0</version><name>api</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><entity.version>1.0.0</entity.version></properties><dependencies><!--服务间数据传输模块--><dependency><groupId>org.wcy</groupId><artifactId>entity</artifactId><version>${entity.version}</version></dependency><!--微服务通信框架feign--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency></dependencies></project>
  • common模块下的都是些公用代码模块,具体模块内的工具类有使用什么包就引入什么包
  • service模块是主要的微服务模块,里面可能会用到的一些包比如说mysql驱动的包,elasticsearch的包,nacos微服务注册中心的包等等,我们目前只引用我们使用的包,后面文章在介绍对应组件的使用的时候会引入使用的包
<?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>org.wcy</groupId><artifactId>cloud_demo</artifactId><version>1.0.0</version></parent><groupId>org.wcy</groupId><artifactId>service</artifactId><packaging>pom</packaging><version>1.0.0</version><modules><module>service_one</module><module>service_two</module></modules><name>service</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><entity.version>1.0.0</entity.version></properties><dependencies><!--服务间数据传输模块--><dependency><groupId>org.wcy</groupId><artifactId>entity</artifactId><version>${entity.version}</version></dependency><!-- web启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies></project>

至此springCloud的框架搭建介绍完毕,后面我会为大家介绍各个组件的集成与使用,感谢大家观看!

下篇传送门:【springCloud搭建】二、集成nacos微服务注册中心

【springCloud搭建】一、创建springCloud项目相关推荐

  1. 搭建环境创建vue项目

    搭建环境创建vue项目 1.安装npm 2.使用淘宝NPM镜像 3.项目初始化 4.命令行创建项目 1.安装npm 下载对应你电脑系统的Node.js版本:下载 | Node.js 中文网 具体安装步 ...

  2. SpringCloud工程搭建之创建SpringCloud父工程

    一.创建SpringCloud父工程 完整工程源码:https://gitee.com/forwardxiang/spring-cloud-demo.git 1.1.1 IDEA相关操作 1.1.2 ...

  3. idea建springcloud项目_idea创建springcloud项目图文教程(EurekaServer注册中心)

    http://blog.csdn.net/hcmony/article/details/77854999 idea创建springcloud项目图文教程(EurekaServer注册中心)(六) 1, ...

  4. K8s脱坑前的挣扎——Pod资源管理及部署Harbor创建私有项目

    前言:Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象.kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的,例如,用于管理Pod ...

  5. 基于SpringBoot 2.0正式版的SpringCloud的微服务实战项目搭建

    Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁 ...

  6. Springcloud+Seata+nacos 分布式事务项目搭建 AT模式

    前言 本文要求对Springcloud有一定了解,对分布式事务本身有一定认知,如果不了解微服务,建议先看看Spring Cloud的基本认识和使用Spring Cloud的基本教程,再回头学习本文 为 ...

  7. SpringCloud入门总结 + 使用SpringCloud搭建微服务项目

    SpringCloud 1.认识微服务 2.认识spring Cloud 3.Spring Cloud Eureka 服务发现框架 3.1认识Eureka 3.2 实战--开发并部署Eureka Se ...

  8. SpringCloud开发个人博客项目(框架搭建)

    1. SpringCloud简介 我们先看看springCloud官网(https://spring.io/projects/spring-cloud#overview)上的介绍: Spring Cl ...

  9. springcloud搭建篇

    springcloud微服务 微服务:拆分.单一.独立.组件化.将一个复杂的庞大的项目拆分成一个一个的小项目独立的运行,通过接口的方式组装成一个大项目. springcloud是基于springboo ...

最新文章

  1. 什么是 Design System
  2. 神策数据入选 Facebook 全球合作计划,助力出海客户拥抱全球化广告生态
  3. Android之Service与IntentService的比较
  4. 用户态和内核态的理解和区别
  5. 网上书店 买方数据库
  6. transform限制position:fixed的跟随效果
  7. [转载] Python入门(输入/输出、数据类型、条件/循环语句)
  8. 《计算机网络入门到精通》网络体系结构
  9. Java String常用的两个方法
  10. 用C#(asp.net)写出登录验证码!
  11. POJ 3125 Printer Queue(队列,水题)
  12. 【linux基础】linux不能进入系统
  13. DirectX 初始化DirectX(手写和红龙书里面的方式)
  14. js正则验证身份证号码
  15. cmd imp导入dmp文件_在cmd中怎么样导入dmp文件?
  16. Java连接wincc_WinCC中访问SQL SERVER数据库
  17. DruidDataSource配置说明
  18. python中的Rotation常见报错问题
  19. 经纬度与墨卡托坐标转化
  20. 阿里物联网平台产品、设备创建

热门文章

  1. Unity重要知识点
  2. Cocos2d-X中实现批处理精灵
  3. 新品发布 | 刚入门接触无人机?推荐一款S450给你
  4. 高效管理海量影像(一)
  5. HTML:网页设计案例2
  6. 如何快速读懂大部头技术书籍
  7. 成华区的顾连康复医院做康复治疗费用,能报销不?
  8. 计算机科学杂志社联系电话,《计算机科学》杂志社编辑部.doc
  9. 未明学院:大二锁定四大offer,毕马威精英计划录取经验分享
  10. 八款图片处理软件PK