电商项目搭建(一):架构概述&详细操作指南
基本架构拆分如下:
其中最为关键的几个部分:
支付系统:对外暴露接口,但是内在集成了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
如果以上工作都完成了,那么基本准备也就完成了
- 基本架构搭建
基本思路:
首先搭建架构之前,先看看基本的架构图:
这里我们先根据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,至此电商项目基本的架构就完成了,下一步就是逐步完善了
阅读更多- 基于Android真实项目教你一步一步搭建架构1 -- 概述
- 搭建Django项目的详细操作
- 使用intellij idea搭建SSM架构的maven项目 超详细
- spring hibernate 整合+项目框架搭建 包含详细注释(清华大学各系统使用代码)
- Hadoop好友推荐系统-项目架构搭建和用户登陆的实现
- 《项目管理利器Maven》学习(一):Maven概述及搭建Maven开发环境
- 从零开始搭建架构实施Android项目
- 从零开始的Android新项目1 - 架构搭建篇
- 高并发,分布式,高可用,性能调优,系统架构,大型电商项目实战
- Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式分享
- myeclipse+maven搭建web项目方法二(超级详细)
- Spring整体架构及源码项目搭建
- Vue2项目架构搭建(三)——修改项目目录
- 电商项目笔记之六:订单操作
- 版本控制概述|VSS/CVS/SVN/Git比较|Windows下SVN搭建详细介绍
- mvc项目架构搭建之UI层的搭建
- Vue2项目架构搭建(九)—— 打包项目
- 从零开始搭建架构实施Android项目
- 项目成长记(三) ―― 小型架构搭建
- Windows 7 产品指南┊官方推出关于Windows 7的详细操作┊简体中文PDF电子书