README.md 10.5 KB
Newer Older
N
Nicky 已提交
1 2
[![Build Status](https://travis-ci.org/crossoverJie/JCSprout.svg?branch=master)](https://travis-ci.org/crossoverJie/taoshop)

N
Nicky 已提交
3
# 电子商务项目
N
Nicky 已提交
4
## 电商项目简介
N
Nicky 已提交
5
电子商务项目[taoshop](https://github.com/u014427391/taoshop)</br>
N
Nicky 已提交
6 7 8

代码已经捐赠给开源中国社区:https://www.oschina.net/p/taoshop

N
Nicky 已提交
9
项目releases链接:https://github.com/u014427391/taoshop/releases
N
Nicky 已提交
10

N
Nicky 已提交
11
本开源电商项目,SpringBoot+Dubbo技术栈实现微服务,实现一款分布式集群的电商系统。(开发中...)
N
Nicky 已提交
12 13

## 开源协议
N
Nicky 已提交
14
taoshop使用Apache2.0开源协议
N
Nicky 已提交
15 16

## 功能
N
Nicky 已提交
17
### [门户网站]
N
Nicky 已提交
18
- [ ] 商品搜索(Lucene)
N
Nicky 已提交
19
- [x] 最新上架
N
Nicky 已提交
20
- [ ] 购物车功能
N
Nicky 已提交
21
- [x] 品目商品搜索
N
Nicky 已提交
22
- [ ] 优惠券秒杀(高并发处理)
N
Nicky 已提交
23
- [ ] 商品详情
N
Nicky 已提交
24
- [x] 商品品类多级联动
N
Nicky 已提交
25

N
Nicky 已提交
26
### [运营平台]
N
Nicky 已提交
27 28
- [ ] 会员中心
- [ ] 订单系统
N
Nicky 已提交
29
- [ ] 店铺管理
N
Nicky 已提交
30 31 32 33
- [ ] 评论管理
- [ ] 风控系统
- [ ] 采购平台
- [ ] 内容管理
N
Nicky 已提交
34

N
Nicky 已提交
35
## 技术栈
U
u014427391 已提交
36
* 模板引擎:Thymeleaf
N
Nicky 已提交
37
* 搜索引擎:Lucene
U
u014427391 已提交
38
* 负载均衡:Nginx
N
Nicky 已提交
39
* 缓存处理:Redis
U
u014427391 已提交
40
* 后台主要框架:SpringBoot、Mybatis
N
Nicky 已提交
41
* 微服务搭建:Dubbo
N
Nicky 已提交
42
## 平台工程目录
N
Nicky 已提交
43

N
Nicky 已提交
44 45 46 47 48 49 50 51

```
├─taoshop----------------------------父项目,公共依赖
│  │
│  ├─taoshop-search--------------------------全局搜索
│  │
│  ├─taoshop-quartz-----------------------任务调度系统
│  │
N
Nicky 已提交
52
│  ├─taoshop-sso-------------------------单点登录工程
N
Nicky 已提交
53 54 55 56 57 58 59 60 61 62
│  │
│  ├─taoshop-portal--------------------------门户网站
│  │
│  ├─taoshop-cms--------------------------平台cms系统
|  |
|  |─taoshop-order--------------------------平台订单系统
│  │
│  ├─paascloud-provider
│  │  │
│  │  │
N
Nicky 已提交
63 64 65 66 67
│  │  ├─taoshop-provider-usc------------------用户信息服务中心
|  |  |
|  |  |-taoshop-provider-item------------------商品信息服务中心
|  |  |
|  |  |-taoshop-provider-shop------------------商铺信息服务中心
N
Nicky 已提交
68
│  │  │
N
Nicky 已提交
69
│  │  └─taoshop-provider-order------------------订单信息服务中心
N
Nicky 已提交
70 71 72 73 74
│  │
│  ├─taoshop-provider-api
│  │  │
│  │  │-taoshop-provider-api-usc------------------用户信息服务API
|  |  |
N
Nicky 已提交
75 76 77 78 79
|  |  |-taosho-provider-api-item------------------商品信息服务API
|  |  |
|  |  |-taoshop-provider-api-shop------------------商铺信息服务API
|  |  |
│  │  └─taoshop-provider-api-order------------------订单信息服务API
N
Nicky 已提交
80 81 82 83 84 85 86
│  │
│  ├─taoshop-common
│  │  │
│  │  ├─taoshop-common-core------------------平台核心依赖服务
│  │  │
│  │  ├─taoshop-common-zk------------------zookeeper配置工程
│  │  │
U
u014427391 已提交
87 88
│  │  ├─taoshop-common-quartz------------------任务调度服务
│  │  │
N
Nicky 已提交
89 90 91 92 93 94 95 96 97 98 99
│  │  ├─taoshop-security-core------------------安全服务核心服务
│  │  │
│  │  └─taoshop-security-auth2------------------API认证授权服务
│  │




```


N
Nicky 已提交
100

N
Nicky 已提交
101
## 架构设计
N
nicky 已提交
102 103 104

![Image text](https://github.com/u014427391/taoshop/raw/master/screenshot/架构图20180409.png)

U
u014427391 已提交
105

N
Nicky 已提交
106
## 平台功能演示
N
Nicky 已提交
107

N
Nicky 已提交
108

N
Nicky 已提交
109 110
运营系统登录
![Image text](https://github.com/u014427391/taoshop/raw/master/screenshot/运营平台登录.png)
U
u014427391 已提交
111 112 113 114


订单管理页面
![Image text](https://github.com/u014427391/taoshop/raw/master/screenshot/订单管理.png)
N
Nicky 已提交
115

N
Nicky 已提交
116
## 附录
N
Nicky 已提交
117

N
Nicky 已提交
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
### 一、分布式基本知识
#### 1.1) 架构演变
![在这里插入图片描述](https://img-blog.csdnimg.cn/20181103230911558.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQ0MjczOTE=,size_16,color_FFFFFF,t_70)

先给出dubbo官方的图,图片表示了架构的演变。然后我说一下自己的理解。

应用最开始是单体应用,即一个应用包括了所有应用模块。

随后就是垂直应用架构,也就是将系统拆分为多个应用模块。

随后就是RPC架构,之前的垂直应用架构其实可以说是在一个进程内的通讯,而RPC就是一种进步,RPC是进程之间的通讯,远程过程调用就是这么来的。

有了RPC之后,虽然可以实现进程之间的通讯,但是服务器集群后的服务器资源利用有些时候容易造成浪费,比如有个系统,一般情况都是不能很好地预估需要分配多少机器的,很容易造成一种情况就是业务访问很频繁的模块分配了不足的机器,而访问不是很频繁的模块分配了太多的机器,这种情况就不能实现资源的很好利用,所以针对这种情况就有了SOA(Service Oriented Architecture)的出现,SOA其实就是一个服务注册中心,可以实现资源调度,合理地分配资源,提高资源调度,是一个治理中心。

#### 1.2)、分布式基本概念
所以我们了解了架构演变之后,就可以更好的理解分布式,分布式其实就是一种可以实现不同进程之间通讯的架构,然后进程之间怎么通讯的?一般都是通过RPC框架实现。比如Java方面的,Dubbo框架或者Spring Cloud。

### 二、RCP简介
#### 2.1) RPC概念
RPC:全称远程过程调用,是一种**进程间的通信的方式**,它所做的事情就是实现进程内的通信,允许调用另外一个地址空间,可以是共享网络里的另外一台机器。

#### 2.2) RPC核心模块
RPC有两个核心模块:通信和序列化

### 三、Dubbo原理简介
#### 3.1) Dubbo简介
Dubbo是阿里巴巴开源的一款Java RPC框架,现在已经捐赠给Apache
官网:http://dubbo.apache.org/

#### 3.2) 核心功能
a、智能容错和负载均衡

b、服务注册和发现

c、面向接口的远程方法调用

#### 3.3) 原理简介

![在这里插入图片描述](https://img-blog.csdnimg.cn/20181104105820112.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQ0MjczOTE=,size_16,color_FFFFFF,t_70)

上图是Dubbo官方的图

**角色**

Provider:暴露服务的服务提供者
N
Nicky 已提交
163

N
Nicky 已提交
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
Container:服务运行的容器

Consumer:调用远程服务的消费者

Registry:服务注册和发现的注册中心

Minitor:统计服务调用次数和时间的监控中心


**调用**

下面根据我的理解说明一下

0:服务器容器负责启动、加载、运行服务提供者

1:服务提供者在启动后就可以向注册中心暴露服务

2:服务消费者在启动后就可以向注册中心订阅想要的服务

3:注册中心向服务消费者返回服务调用列表

4:服务消费者基于软负载均衡算法调用服务提供者的服务,这个服务提供者有可能是一个服务提供者列表,调用那个服务提供者就是根据负载均衡来调用了

5:服务提供者和服务消费者定时将保存在内存中的服务调用次数和服务调用时间推送给监控中心


## 博客记录
为了帮助学习者更好地理解代码,下面给出自己写的一些博客链接
### 单点登录
N
Nicky 已提交
193
* [CAS单点登录简单介绍](https://blog.csdn.net/u014427391/article/details/82083995)
N
Nicky 已提交
194

N
Nicky 已提交
195
### 消息队列
N
Nicky 已提交
196
* [RocketMQ入门手册](https://blog.csdn.net/u014427391/article/details/79914331)
N
Nicky 已提交
197

N
Nicky 已提交
198
### 搜索引擎
N
Nicky 已提交
199
* [Apache Lucene全局搜索引擎入门教程](https://blog.csdn.net/u014427391/article/details/80006401)
N
Nicky 已提交
200

N
Nicky 已提交
201
### Dubbo
N
Nicky 已提交
202 203
* [Dubbo学习笔记](https://blog.csdn.net/u014427391/article/details/83716884)
* [SpringBoot+Dubbo搭建微服务](https://blog.csdn.net/u014427391/article/details/84455282)
N
Nicky 已提交
204

N
Nicky 已提交
205 206 207
### 分布式锁
* [Redis学习笔记之分布式锁](https://blog.csdn.net/u014427391/article/details/84934045)

N
Nicky 已提交
208
### SpringBoot
N
Nicky 已提交
209
* [电商门户网站商品品类多级联动SpringBoot+Thymeleaf实现](https://blog.csdn.net/u014427391/article/details/83685901)
N
Nicky 已提交
210 211

### Mybatis
N
Nicky 已提交
212 213
* [Mybatis+Thymeleaf前端显示时间格式问题解决方法](https://blog.csdn.net/u014427391/article/details/83686014)
* [Mybatis3.2不支持Ant通配符的TypeAliasesPackage扫描解决方案](https://blog.csdn.net/u014427391/article/details/84723292)
N
Nicky 已提交
214

N
Nicky 已提交
215
### 缓存
N
Nicky 已提交
216
* [Redis学习笔记之基本数据结构](https://blog.csdn.net/u014427391/article/details/82860694)
N
nicky 已提交
217 218 219
* [Redis学习笔记之位图](https://blog.csdn.net/u014427391/article/details/87923407)
* [Redis学习笔记之延时队列](https://blog.csdn.net/u014427391/article/details/87905450)
* [Redis学习笔记之分布式锁](https://blog.csdn.net/u014427391/article/details/84934045)
N
Nicky 已提交
220
* [SpringBoot集成Redis实现缓存处理(Spring AOP技术)](http://blog.csdn.net/u014427391/article/details/78799623)
N
Nicky 已提交
221

N
Nicky 已提交
222
### 设计模式
N
Nicky 已提交
223
创建型
224 225 226
* [设计模式之观察者模式(行为型)](https://blog.csdn.net/u014427391/article/details/81156661)
* [设计模式之桥接模式(结构型)](https://blog.csdn.net/u014427391/article/details/88412075)
* [设计模式之适配器模式(结构型)](https://blog.csdn.net/u014427391/article/details/88412105)
N
Nicky 已提交
227
* [设计模式之建造者模式(创建型)](https://blog.csdn.net/u014427391/article/details/80061566)
N
Nicky 已提交
228 229 230 231 232 233 234 235 236 237 238 239 240 241 242
* [设计模式之简单工厂模式(创建型)](https://blog.csdn.net/u014427391/article/details/85543283)
* [设计模式之抽象工厂模式(创建型)](https://blog.csdn.net/u014427391/article/details/85543242)
* [设计模式之单例模式(创建型)](https://blog.csdn.net/u014427391/article/details/80019048)
* [设计模式之工厂方法模式(创建型)](https://blog.csdn.net/u014427391/article/details/85543251)
* [设计模式之原型模式(创建型)](https://blog.csdn.net/u014427391/article/details/87539023)

结构型
* [设计模式之桥接模式(结构型)](https://blog.csdn.net/u014427391/article/details/88412075)
* [设计模式之适配器模式(结构型)](https://blog.csdn.net/u014427391/article/details/88412105)

行为型
* [设计模式之观察者模式(行为型)](https://blog.csdn.net/u014427391/article/details/81156661)
* [设计模式之命令模式(行为型)](https://blog.csdn.net/u014427391/article/details/89289375)
* [设计模式之备忘录模式(行为型)](https://blog.csdn.net/u014427391/article/details/88598079)
* [设计模式之访问者模式(行为型)](https://blog.csdn.net/u014427391/article/details/88562267)
N
Nicky 已提交
243

N
Nicky 已提交
244
### Oracle知识
N
Nicky 已提交
245 246
* [Oracle知识整理笔录](https://blog.csdn.net/u014427391/article/details/82317376)
* [Oracle笔记之锁表和解锁](https://blog.csdn.net/u014427391/article/details/83046148)
N
Nicky 已提交
247 248
* [Oracle递归查询start with connect by prior](https://blog.csdn.net/u014427391/article/details/84996259)
* [Oracle列转行函数vm_concat使用](https://blog.csdn.net/u014427391/article/details/84981114)
N
Nicky 已提交
249
* [Oracle笔记之修改表字段类型](https://blog.csdn.net/u014427391/article/details/83046006)
N
Nicky 已提交
250
* [Oracle的nvl函数和nvl2函数](https://blog.csdn.net/u014427391/article/details/84996009)
N
Nicky 已提交
251