# cloud2020 **Repository Path**: codercdx/cloud2020 ## Basic Information - **Project Name**: cloud2020 - **Description**: SpringCloud学习项目01 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-12-04 - **Last Updated**: 2020-12-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # cloud2020 #### 介绍 B站 SpringCloud学习项目 #### 1、订单服务 #### 2、支付服务 #### 3、Eureka集群 7001 7002 #### 4、zookeeper #### 5、consul ![输入图片说明](https://images.gitee.com/uploads/images/2020/1205/202837_8bccd40c_572088.png "屏幕截图.png") ##### 5-1 docker启动consul >关于consul的一个小坑,因为不想把软件环境安装在本机上,所以我一般把软件安装在虚拟机linux服务器上,通过docker安装consul,如果注册服务,在consul ui界面出现红叉,可以在yml配置consul上加一个心跳发送的配置 ```java //docker启动单机consul docker run --name consul3 -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 --restart=always consul agent -server -bootstrap-expect 1 -ui -bind=0.0.0.0 -client=0.0.0.0 consul访问地址: http://101.200.228.35:8500/ui/ ``` ![输入图片说明](https://images.gitee.com/uploads/images/2020/1205/233304_e91d04ad_572088.png "屏幕截图.png") #### 6、注册中心异同点 ![输入图片说明](https://images.gitee.com/uploads/images/2020/1205/233452_b7ed8bdd_572088.png "屏幕截图.png") #### 7、服务注册eureka zookeeper consul nacos #### 8、服务调用Ribbon、openFeign #### 9、服务调用Ribbon Loadbalance #### 10、Ribbon轮训代码 ![输入图片说明](https://images.gitee.com/uploads/images/2020/1206/124011_f2a47fea_572088.png "屏幕截图.png") #### 11、openFeign引入了Ribbon ![输入图片说明](https://images.gitee.com/uploads/images/2020/1206/163047_44a9f8f5_572088.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2020/1206/170026_e23adfa7_572088.png "屏幕截图.png") #### 12、Hystrix 服务降级,服务熔断,服务限流 (1)主启动类添加注解@EnableCircuitBreaker (2)服务接口添加注解等信息。 ```java //兜底的方法是:paymentInfo_TimeOutHandler;运行超时或者程序出错都会触发服务降级。 @HystrixCommand(fallbackMethod = "paymentInfo_TimeOutHandler",commandProperties = { //限制这个接口请求的时间为5000ms @HystrixProperty(name="execution.isolation.thread.timeoutInMilliseconds",value="5000") }) ``` #### 13、Fallback 降级;openFeign的fallback #### 14、gateway网关 #### 15、分布式配置中心 config #### 16、消息总线 bus Docker安装RabbitMQ: docker run --name rabbitmq -p 5672:5672 -p 15672:15672 -d rabbitmq:3-management ![输入图片说明](https://images.gitee.com/uploads/images/2020/1209/222940_6a30c8d8_572088.png "屏幕截图.png") #### 17、消息驱动 cloud stream 屏蔽底层消息中间件的差异,降低切换成本,统一消息编程模型 ![什么是Cloud Stream](https://images.gitee.com/uploads/images/2020/1215/210754_bbf4253f_572088.png "屏幕截图.png") stream设计思想:通过绑定器binder作为中间层,实现应用程序和消息中间件之间的隔离 ![输入图片说明](https://images.gitee.com/uploads/images/2020/1215/211241_f3242078_572088.png "屏幕截图.png") stream编码和常用注解: ![输入图片说明](https://images.gitee.com/uploads/images/2020/1215/212617_63fd5af4_572088.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2020/1215/212704_c6b381de_572088.png "屏幕截图.png") #### 18、链路追踪 spring cloud sleuth zipkin #### 19、Spring Alibaba ![输入图片说明](https://images.gitee.com/uploads/images/2020/1217/225950_7621f189_572088.png "屏幕截图.png") ##### Nacos Nacos = Eureka + Config + Bus 替代Eureka做服务中心 替代Config做配置中心 Docker启动Nacos `[root@localhost ~]# docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server:1.0.0` ![输入图片说明](https://images.gitee.com/uploads/images/2020/1218/214745_e58ac7c2_572088.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2020/1218/215026_1e2d8711_572088.png "屏幕截图.png") Nacos支持 AP 和CP。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/1218/215403_5cd36210_572088.png "屏幕截图.png") Nacos配置中心 ![输入图片说明](https://images.gitee.com/uploads/images/2020/1218/215732_29c13582_572088.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2020/1218/220426_365563f5_572088.png "屏幕截图.png") Nacos分类配置 ![输入图片说明](https://images.gitee.com/uploads/images/2020/1218/222425_d017e91d_572088.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2020/1218/222538_c9937cc5_572088.png "屏幕截图.png") Nacos 集群配置和持久化配置 Nacos+MySQL 生产环境配置 1个nginx + 3个nacos + 1个mysql ![输入图片说明](https://images.gitee.com/uploads/images/2020/1219/221128_f9a2850b_572088.png "屏幕截图.png") 下载tar包: https://github.com/alibaba/nacos/releases/tag/1.1.4 修改application.properties ![输入图片说明](https://images.gitee.com/uploads/images/2020/1219/215321_0d285e3d_572088.png "屏幕截图.png") 配置cluster.conf > hostname -i ##看ip nginx ![输入图片说明](https://images.gitee.com/uploads/images/2020/1219/221305_12f890e2_572088.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2020/1219/221950_b422b921_572088.png "屏幕截图.png") 注意:nacos/conf/cluster.conf 配置的ip需要是内网ip; nacos的startup.sh 配置的时候,需要调整jvm启动参数,否则占用内存很多。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/1220/115607_74b3d282_572088.png "屏幕截图.png") Sentinel 服务熔断限流降级 ![输入图片说明](https://images.gitee.com/uploads/images/2020/1220/121557_04acd055_572088.png "屏幕截图.png") sentinel能干嘛? ![输入图片说明](https://images.gitee.com/uploads/images/2020/1220/121717_bdfda8df_572088.png "屏幕截图.png") 下载地址:https://github.com/alibaba/Sentinel/releases/tag/1.7.2 java -jar sentinel-dashboard-1.7.2.jar 8080端口需要能用。 启动docker:systemctl start docker 注意:Sentinel在阿里云上启动,无法监控本地启动的微服务。只好字啊本地启动Sentinel了。 微服务所在机器需要和sentinel服务器的时间戳相同,否则监控不到。 流控规则: ![输入图片说明](https://images.gitee.com/uploads/images/2020/1220/180551_898665c8_572088.png "屏幕截图.png") 直接快速失败:一秒中点击超过一次就出现限流报错。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/1220/180624_7fca7b3c_572088.png "屏幕截图.png") @SentinelResource ![输入图片说明](https://images.gitee.com/uploads/images/2020/1221/210037_1d159e23_572088.png "屏幕截图.png") fallback:降级 blockhandler:限流 exceptionignore Seata 一个ID,三个组件 ![输入图片说明](https://images.gitee.com/uploads/images/2020/1221/220252_74f7448e_572088.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2020/1221/221131_c51ea981_572088.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2020/1221/220739_dc9f026a_572088.png "屏幕截图.png") 安装Seata准备工作: 修改file.conf文件中的service和store ![输入图片说明](https://images.gitee.com/uploads/images/2020/1222/224356_a6c1f3d0_572088.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2020/1222/224433_1cae4558_572088.png "屏幕截图.png") 创建mysql的seata数据库 修改registry.conf配置文件(nacos) 先启动Nacos,在启动Seata 创建三个库: ![输入图片说明](https://images.gitee.com/uploads/images/2020/1222/225955_d9a29db1_572088.png "屏幕截图.png")