# 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 ### 功能编写 ![doc/main/img.png](./doc/main/0001.png) 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 ### 怎么了 ### 百味人生