您的位置:首页 > 运维架构 > 网站架构

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

2018-12-18 22:05 423 查看

基本架构拆分如下:


其中最为关键的几个部分:

支付系统:对外暴露接口,但是内在集成了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://www.geek-share.com/detail/2700971183.html

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

  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,至此电商项目基本的架构就完成了,下一步就是逐步完善了

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: