# 婚恋项目
**Repository Path**: pc512541024/hunlian
## Basic Information
- **Project Name**: 婚恋项目
- **Description**: 婚恋的一个香炉
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: Branch_74b6c07a
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 8
- **Created**: 2021-05-23
- **Last Updated**: 2024-05-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# marry Cloud
marry cloud 是一款集成阿里巴巴的一体化的分布式项目,由牛津大学计算机硕士 ,借鉴大多数开源项目。
## 版本介绍
- java.version 1.8
- spring-boot.version:2.3.2.RELEASE
- spring-cloud.version:Hoxton.SR8
- com.alibaba.cloud.version:2.2.3.RELEASE
- nimbus-jose-jwt.version:9.1.1
- lombok.version:1.18.12
- fastjson.version:1.2.62
- druid.version:1.1.10(暂时未用)
- mybatis-plus.version:3.2.0
- mysql.version:8.0.25
---
## 软件架构
### 一、组件
组件名称|版本号|描述
:----|:----|:----
Nacos Discovery |----| 注册中心
Nacos Config |----| 配置中心
Dubbo Spring Cloud |----| 服务通信
Spring Cloud Gateway |----| 网关
Spring Cloud Security |----| 安全认证
Spring Cloud Hystrix |----| 服务熔断
Spring Cloud Sleuth + Zipkin |----| 调用链监控
Spring Data Redis |----| NoSQL数据库
com.dtflys.forest |----| forest网络api框架
io.netty |----| 网络通信
... | ... | ...
### 二、模块
模块名称|描述|备注
:----|:----|:----
marry-gateway | 网关 | --
marry-auth | 认证中心 | --
marry-common | 公共组件 | --
marry-contract | Dubbo接口暴露 | --
marry-business | 业务管理 | --
... | ... | ... |
---
## 功能介绍
### 一、Nacos注册中心、配置中心
> 以网关配置为例(marry-gateway)
> 官网文档:
>> 注册中心:[https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-discovery.adoc](https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-discovery.adoc)
>> 配置中心:[https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-config.adoc](https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-docs/src/main/asciidoc-zh/nacos-config.adoc)
Nacos Server 启动后,进入 http://localhost:8848/nacos/index.html 查看控制台(默认账号名/密码为 nacos/nacos):
#### 1、添加依赖
```
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
```
#### 2、添加配置文件(bootstrap.yml)
```
spring:
application:
name: marry-gateway
cloud:
nacos:
config:
server-addr: 127.0.01:8848 # Nacos服务地址
file-extension: yaml # 配置格式
# shared-dataids: all-gateway.yaml # 全局引入的配置
# refresh-dataids: all-gateway.yaml # 实现动态配置刷新
namespace: 57cace63-8a7e-4051-825b-ba5ff39f9911 # 命名空间
profiles:
active: dev # 环境配置
```
#### 3、创建配置文件
在配置管理 》 配置列表 中添加 `marry-gateway-dev.yaml` 文件。
> 命名规则: 服务名称(`marry-gateway`) + 环境名称(`dev、test`) + 后缀(`.yaml、.properties`)
#### 4、注意事项
- 命名规则必须一致,否则不生效;
- 配置格式必须对应,否则不生效;
- 如使用命名空间,则命名空间必须对应,否则不生效;
- 如使用全局配置,必须配置(`shared-dataids、refresh-dataids`)全局引入的配置和实现动态配置刷新。
#### 5、Nacos基本概念
5.1、命名空间(namespace)
命名空间可用于进行不同环境的配置隔离,一般一个环境划分一个命名空间。
5.2、配置分组(group)
配置分组用于讲不同的服务可以归类到同一分组,一般讲一个项目的配置分到一个组中。
5.3、配置集(dateId)
在系统中,一个配置文件就是一个配置集,一般微服务的配置就是一个配置集。
### 二、熔断&限流
#### 1、添加依赖
```
org.springframework.cloud
spring-cloud-starter-netflix-hystrix
org.springframework.boot
spring-boot-starter-data-redis-reactive
```
#### 2、添加配置
```
# 配置路由规则
routes:
# 采用自定义路由ID
- id: marry-auth
# 采用 LoadBalanceClient 方式请求,以 lb:// 开头,后面的是注册在 Nacos 上的服务名
uri: lb://marry-auth
predicates:
- Path=/auth/**
filters:
- StripPrefix=1
- name: Hystrix # 熔断
args:
name: fallbackcmd
# fallback 时调用的方法 http://localhost:8080/fallback
fallbackUri: forward:/fallback
- name: RequestRateLimiter # 限流
args:
key-resolver: '#{@uriKeyResolver}' # 限流过滤器的 Bean 名称
redis-rate-limiter.replenishRate: 1 # 希望允许用户每秒处理多少个请求
redis-rate-limiter.burstCapacity: 3 # 用户允许在一秒钟内完成的最大请求数
```
#### 3、熔断实现
3.1、Hystrix服务降级处理
```
@Slf4j
@Component
public class HystrixFallbackHandler implements HandlerFunction {
@Override
public Mono handle(ServerRequest serverRequest) {
Optional