电商项目搭建(一):架构概述&详细操作指南

基本架构拆分如下:

在这里插入图片描述
其中最为关键的几个部分:

支付系统:对外暴露接口,但是内在集成了N多系统

搜索系统:需要利用搜索引擎,比如Lurence,进行全文检索,可以用solr elasticsearch 来简化搜索的开发

秒杀系统:需要独立成一个服务,避免高并发影响其他子系统

广告系统&内容系统:技术含量不高,但是是垂直电商区分水平电商的关键

大概的结构如下:

shop-parent
|—shop-goods-api(商品系统接口)
|—shop-goods-server(商品系统)
|—shop-order-api(订单系统接口)
|—shop-order-server(订单系统)
|—shop-member-api(会员系统接口)
|—shop-member-server(会员系统)
|—shop-mgrsite(后台管理界面)
|—shop-mobile(提供移动端的接口项目)
|—shop-scheduler(定时任务项目)
|—shop-common(公共项目)

其中scheduler定时任务项目,不能集成到其他系统中,只是单独做一个系统出来就OK(且不集群),这样就可以保证定时任务只会执行一次,避免性能的浪费

以上说明完成,接下来就应该做具体的搭建了

首先需要说明的是,这里使用的工具是STS,后面不再赘述

1.准备工作

说明:首先我们想要所有的项目到放在一个文件夹下,所以

首先选择视图模式为Working Sets

在这里插入图片描述

接下来创建在Configure Working Set…中创建对应的文件夹
在这里插入图片描述

在这里插入图片描述

附带说明:

使用STS的同时必须要记得开启代码提示,如何开启代码提示

具体如何开启代码提示:https://blog.csdn.net/baidu_32739019/article/details/64121023

如果以上工作都完成了,那么基本准备也就完成了

  1. 基本架构搭建

基本思路:

首先搭建架构之前,先看看基本的架构图:

在这里插入图片描述

这里我们先根据shop-goods这条线搭建基本的架构:

shop-parent --> shop-common —>shop-goods-api —>> shop-goods-server

----------------------------------------------------------------------->> shop-mgrsite

2.1 搭建父项目

首先新建一个Maven项目:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.2 搭建子项目

在这里插入图片描述

在这里插入图片描述

打包方式说明:

由于我们这里的架构是做微服务的架构,因此spring boot 必不可少,spring boot的项目都有一个特点,就是web服务要尽量打成JAR包

具体原因是:

springboot 内部集成了tomcat的服务器,WEB应用的JAR可以直接被加载,

但是war包就不一样了,需要Jetty或者tomcat容器去加载,那么必然会引起Jar冲突

在这里插入图片描述
看到下面的module生成了,就说明成功了
在这里插入图片描述

接下来就用相同的方法,完成下面其余Module的建立

在这里插入图片描述

3.建立关联

回到我们之间的架构图,可以发现:

一、 所有的项目都是parent的子项目

二、 项目之间彼此有依赖关系

从Goods线来看:

  • shop-goods-api是依赖shop-common
  • 而shop-goods-server和shop-mgrsite都是依赖shop-goods-api的

附:为什么两个项目会去依赖:shop-goods-api?

原因是:shop-goods-server和shop-mgrsite有共同的domain和接口类,为了方便统一管理,故抽出做管理

以上内容在本人的ZooKeeper: 在CentOS7中配置Zookeeper并搭建测试环境有详细的阐述:

https://blog.csdn.net/fenghuoliuxing990124/article/details/84979590

在这里插入图片描述
回到正题,我们开始建立对应的依赖,由于上面要建立依赖,于是在parent中:

在这里插入图片描述
在shop-goods-api中依赖shop-common:

<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>cn.csdn.shop</groupId>
		<artifactId>shop_demo-parent</artifactId>
		<version>1.0.0</version>
	</parent>
	<artifactId>shop_demo-goods-api</artifactId>
	<name>shop_demo-goods-api</name>

	<dependencies>
		<dependency>
			<groupId>cn.csdn.shop</groupId>
			<artifactId>shop_demp-common</artifactId>
		</dependency>
	</dependencies>

</project>

附:可能会出现的问题:missing artifact

如果出现此类的问题:简单来说:无解

请重新删除出现问题的module后(包括硬盘),重新new一个module来解决该问题

建议不要在网上找答案(浪费时间),因为maven的依赖是个玄学问题

4.搭建SpringBoot环境

由于我们要搭建的是微服务,下一步就是为搭建微服务提供基本的SpringBoot环境

首先我们这里为parent导入的父依赖是:

<!--Spring Boot父项目-->
<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>1.5.1.RELEASE</version>
</parent>

在导入子项目所需依赖之前,先点击spring-boot-starter-parent跳入依赖中,

复制下面这段话,并将JDK的版本从1.6修改为1.8

	<properties>
		<java.version>1.8</java.version>
		<resource.delimiter>@</resource.delimiter> <!-- delimiter that doesn't clash with Spring ${} placeholders -->
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<maven.compiler.source>${java.version}</maven.compiler.source>
		<maven.compiler.target>${java.version}</maven.compiler.target>
	</properties>

接下来我们要为子项目导入必要的依赖:

<!-- Spring Boot Dubbo 依赖 -->
<dependency>
    <groupId>com.gitee.reger</groupId>
    <artifactId>spring-boot-starter-dubbo</artifactId>
    <version>1.0.10</version>
</dependency>
<!--spring-boot-web依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--红辣椒-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

<!--阿里巴巴fastjson-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.7</version>
</dependency>

<!--上传文件工具类-->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>

<!--springboot-redis依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<!--spring-boot的activeMQ依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

剩下将下面的依赖导入parent的dependencyManagement

<!--阿里巴巴的druid -->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.0.25</version>
</dependency>

<!--spring-boot的mybatis依赖 -->
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>1.2.0</version>
</dependency>

OK,至此电商项目基本的架构就完成了,下一步就是逐步完善了

猜你喜欢

转载自blog.csdn.net/fenghuoliuxing990124/article/details/85081696