# cloud2020
**Repository Path**: Edward-Z/cloud2020
## Basic Information
- **Project Name**: cloud2020
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-03-21
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# cloud2020
#### 介绍
阳哥springcloud教程
在线脑图
https://www.processon.com/view/link/5e7c5983e4b027d999ce960c
#### 软件架构
springcloud最新
#### 教程
个人接口测试工具直接使用postman
1. **重构**时注意将lombok依赖复制到api-commons下时要注意删除optional选项,否则当该选项为true时,说明该依赖禁止依赖传递,则依赖api的模块不会依赖lombok。
org.projectlombok
lombok
true
org.projectlombok
lombok
2. **Eureka注册中心** :提供服务治理,管理服务之前的依赖,实现服务调用、负载均衡、容错等,实现服务的发现与注册


3. **搭建Eureka 注册中心集群** 实现负载均衡+故障容错
修改hosts

4. **Consul**

下载:[consul](https://www.consul.io/downloads.html )
相关命令:consul --version:查看版本信息 consul agent -dev:运行部署consul
5. **三个注册中心的异同点**
| 组件名 | 语言 | CAP | 服务健康检查 | 对外暴露接口 | Spring Cloud集成 |
| ------ | ------ | ------ | ------ | ------ | ------ |
| Eureka | Java | AP | 可配支持健康检查 | HTTP | 集成 |
| Consul | GO | CP | 支持健康检查 | HTTP、DNS | 集成 |
| Zookeeper | Java | CP | 支持健康检查 | 客户端 | 集成 |

6. **ribbon**


Irule: 根据特定算法选取需要访问的服务

7. **openFeign**

8. **Hystrix**
Hystrix(断路器)重要概念:服务降级(fallback)、服务熔断(break)、服务限流(flowlimit,秒杀高并发)



9. **SpringCloud GateWay**
简介:服务请求网关,构建于SpringBoot2.0,Spring WebFlux,Project Reactor。提供一种简单而有效的方式对API进行路由,提供一些强大的过滤器功能,例如:熔断、限流、重试等。
特点:动态路由、支持断言和过滤器、集成Hystrix的断路器功能、集成SpringCloud服务发现功能、请求限流功能、支持路径重写。
10. **Config:解决分布式系统配置问题**
SpringCloud Config为微服务架构中的微服务提供几种化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供一个中心化的外部配置。

动态刷新Post
```
curl -X POST "http://localhost:3355/actuator/refresh"
```
也可以通过webhooks做钩子 触发post
11. **Spring Cloud Bus消息总线**



docker安装
```
docker run -d --hostname my-rabbit -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 --restart=always --name okong-rabbit rabbitmq:management
关闭防火墙
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
```
12. **SpringCloud Stream 消息驱动**
屏蔽底层消息中间件的差异,降低切换成本,同一消息的编程模型



常用注解:@Input、@OutPut、@StreamListener、@EnableBinding
通过分组 保证同组 只消费一次
不同组可重复消费,同组不会重复消费 group:XXX
13. **SpringCloud Sleuth 分布式请求链路跟踪**
zipkin下载地址:dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/
运行:java -jar zipkin-server-2.12.9-exec.jar
```
docker安装:
docker run -d --name zipkin --restart=always -e KAFKA_BOOTSTRAP_SERVERS=10.18.0.39:9092 -e STORAGE_TYPE=elasticsearch -e ES_HOSTS=http://10.18.0.39:9200 --restart=always -p 9411:9411 openzipkin/zipkin:2.12.9
http://localhost:9411/zipkin/
```

14. **SpringCloud Alibaba Nacos(Naming Configuration Service)**
SpringCloud Alibaba Nacos git:
https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
Nacos=Eureka+Config+Bus
官网:https://nacos.io/zh-cn/

```
Nacos单机版
docker 安装
docker run --env MODE=standalone --name nacos --restart=always -d -p 8848:8848 nacos/nacos-server
```

Nacos自带轮询负载均衡,可调整支持CP、AP
```
切换cp
curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/swithes?entry=serverMode&value=CP'
```
**Nacos集群与持久化配置**
[文档](https://gitee.com/Edward_Zeng/cloud2020/blob/master/doc/Docker%E5%AE%89%E8%A3%85Nacos%E9%9B%86%E7%BE%A4%E7%89%88%E4%BB%A5%E5%8F%8Anginx.md)
15. **Springcloud Alibaba Sentinel**
官网:https://github.com/alibaba/Sentinel
下载:https://github.com/alibaba/Sentinel/releases
中文介绍 :https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D
**面向云原生微服务的流量控制、熔断降级组件**
* 服务雪崩-预热
* 服务降级
* 服务熔断-RT、异常数、异常比例
* 服务限流-[热点限流](https://github.com/alibaba/Sentinel/wiki/%E7%83%AD%E7%82%B9%E5%8F%82%E6%95%B0%E9%99%90%E6%B5%81)
运行前提:Java8环境OK且8080端口不能被占用
命令:java -jar sentinel-dashboard-1.7.0.jar
访问:http://localhost:8080/
**流量控制**
基本介绍

**服务降级**

sentinel持久化规则
```
[
{
"resource": "/rateLimit/byUrl",
"limitApp": "default",
"grade": 1,
"count": 1,
"strategy": 0,
"controlBehavior": 0,
"clusterMode": false
}
]
```
16. **Springcloud Alibaba Seata 处理分布式事务**
分布式事务解决方案
官网:https://seata.io/zh-cn/
Transaction ID XID
全局唯一的事务ID
TC - 事务协调者
维护全局和分支事务的状态,驱动全局事务提交或回滚。
TM - 事务管理器
定义全局事务的范围:开始全局事务、提交或回滚全局事务。
RM - 资源管理器
管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

使用:本地:@Transaction,全局:@GlobalTransaction