# mall
**Repository Path**: exeron21/mall
## Basic Information
- **Project Name**: mall
- **Description**: 尚硅谷谷粒商城
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-12-20
- **Last Updated**: 2022-02-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### 基于SpringCloud Alibaba的技术搭配方案:
- SpringCloud Alibaba - Nacos:注册中心(服务发现/注册)
- SpringCloud alibaba - Nacos:配置中心(动态配置管理)
- SpringCloud - Ribbon 负载均衡
- SpringCloud - OpenFeign 声明式HTTP客户端(调用远程服务)
- SpringCloud Alibaba - Sentinel 服务容错(限流、降级、熔断)
- SpringCloud - Gateway API网关(webflux编程模式)
- SpringCloud - Sleuth 调用链监控
- SpringCloud Alibaba - Seata 原Fescar,分布式事务
### 基础环境搭建
### 注册中心
#### 开启服务注册:
- 引入nacos discovery包
```xml
com.alibaba.cloud
spring-cloud-alibaba-nacos-discovery
2.1.0.RELEASE
com.alibaba.cloud
spring-cloud-alibaba-dependencies
${spring-cloud-alibaba.version}
```
- 配置spring.application.name和nacos discovery配置
```yaml
spring:
application:
name: renren-fast
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
```
- 在启动类上加入@EnableDiscoveryClient注解
```java
@EnableDiscoveryClient
@SpringBootApplication
public class RenrenApplication {
public static void main(String[] args) {
SpringApplication.run(RenrenApplication.class, args);
}
}
```
### 配置中心
配置有很多种组合(文件名bootstrap/application、后缀properties/yml、group等),配置内容也有多种可能性,都能实现相应的功能
暂时的选择是:bootstrap.yml/properties + 以模块命名的命名空间 + 多个group
bootstrap中只放application.name和配置中心相关的配置,其他的全放在配置中心中(好像连application.name都可以放到配置中心中)
### 网关服务
- 开启网关服务
```xml
org.springframework.cloud
spring-cloud-starter-gateway
```
- 编写网关配置:
[SpringCloud网关配置详细说明](https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.1.3.RELEASE/single/spring-cloud-gateway.html)
```yaml
spring:
cloud:
gateway:
routes:
- id: test-route
uri: https://www.baidu.com
predicates:
- Query=url,baidu # Query=查询参数,即查询参数中包含url=baidu的,都跳转到https://www.baidu.com
- id: test-qq
uri: https://www.qq.com
predicates:
- Query=url,qq # 和上面baidu类似
- id: admin-route
uri: lb://renren-fast
predicates:
- Path=/api/** # 所有以/api开头的,都跳转到lb://renren-fast
filters:
- RewritePath=/api/(?.*),/renren-fast/$\{segment} #路径重写,将 /api/??? 重写为: /renren-fast/???
```
### 跨域问题
| URL | 说明 | 是否允许通信 |
| ---- | ---- | ---- |
| http://www.a.com/a.js
http://www.a.com/b.js | 相同的域名 | 允许通信 |
| http://www.a.com/a.js
http://www.a.com:8080/b.js | 相同的域名 | 不允许通信 |
| | | |
非简单请求(PUT、DELETE)等,需要首先发送预检请求,即OPTIONS
- 预检请求,OPTIONS
- 收到回应,允许跨域
- 发送真实请求
- 响应数据
跨域预检请求OPTIONS
### 功能编写

PPTX课件
https://www.yuque.com/zhangshuaiyin/guli-mall/wrbzgy
https://www.yuque.com/office/yuque/0/2021/pptx/12568777/1617619123602-4c457031-ad7c-41c8-a1df-22ffd1483d7a.pptx?from=https%3A%2F%2Fwww.yuque.com%2Fzhangshuaiyin%2Fguli-mall%2Fwrbzgy
### 怎么了
### 百味人生