微服务拆分

划分原则

基于业务逻辑

根据业务需求,模块功能进行拆分,容易产生耦合

基于稳定性

稳定性的服务和不稳定的服务不易放在一起,不稳定的服务在更新变化时会影响到稳定性的服务

基于可靠性

同样,将系统中的业务模块按照可靠性进行排序。对可靠性要求较高的核心模块归到一起,对可靠性要求不高的非核心模块归在一块。

基于高性能

对用户访问量高的核心模块进行拆分,对访问量低的业务进行合并。

项目二拆分

用户服务

登陆/注册功能

文章服务

目的地/攻略/游记管理

点评服务

文章评论管理

数据服务

负责文章数据统计

搜索服务

基于ES全文搜索

项目结构

trip-parent # 父项目
├── trip-gateway # 网关
├── trip-website # 前端
├── trip-mgrsite # 前端
├── trip-common # 公共模块父项目
│ ├── trip-common-core # 核心公共模块
│ ├── trip-common-redis # redis公共模块
│ └── trip-common-xxx # xxx公共模块
├── trip-module-api # 微服务api父项目
│ ├── trip-article-api # 文章api
│ ├── trip-comment-api # 评论api
│ ├── trip-user-api # 用户api
│ ├── trip-data-api # 数据api
│ └── trip-serch-api # 搜索api
├── trip-server # 微服务
│ ├── trip-server-article # 文章
│ ├── trip-server-comment # 评论
│ ├── trip-server-user # 用户
│ ├── trip-server-data # 数据
│ └── trip-server-serch # 搜索

创建项目

父项目

创建一个普通的Maven项目,删除其中的src目录,只保留pom.xml。

在父项目的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>

<groupId>com.swx</groupId>
<artifactId>trip_cloud</artifactId>
<version>1.0.0</version>

<!-- 父项目,只负责管理 pom 文件的依赖,不负责代码编译等功能 -->
<packaging>pom</packaging>

<!-- 父工程 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.9.RELEASE</version>
</parent>

<!-- 依赖版本的锁定 -->
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring-cloud.version>Hoxton.SR10</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.5.RELEASE</spring-cloud-alibaba.version>
</properties>
<!-- 父项目进行统一的依赖版本管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<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>
</dependencies>
</dependencyManagement>

</project>

网关模块

trip_cloud父项目下创建子模块trip-gateway,pom文件内容如下:

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>
<parent>
<groupId>com.swx</groupId>
<artifactId>trip_cloud</artifactId>
<version>1.0.0</version>
</parent>

<artifactId>trip-gateway</artifactId>

<description>网关服务,作为整个系统的统一入口</description>

<dependencies>
<!-- gateway网关 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- nacos客户端 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>

</project>