spring-cloud-learn
spring cloud 微服务架构学习
springboot与spring cloud兼容版本
Release Train | Boot Version |
---|---|
Hoxton | 2.2.x |
Greenwich | 2.1.x |
Finchley | 2.0.x |
Edgware | 1.5.x |
Dalston | 1.5.x |
核心组件
-
Eureka:服务治理组件,包含服务注册与发现
-
Hystrix(豪猪):容错管理组件,实现了熔断器
-
Ribbon:客户端负载均衡的服务调用组件
-
Feign:基于Ribbon和Hystrix的声明式服务调用组件
-
Zuul:网关组件,提供智能路由、访问过滤等功能
-
Spring Cloud Config:配置管理工具,实现应用配置的外部化存储,支持客户端配置信息刷新、加密/解密配置内容等。
-
Spring Cloud Bus:事件、消息总线,用于传播集群中的状态变化或事件,以及触发后续的处理
-
Spring Cloud Security:基于spring security的安全工具包,为我们的应用程序添加安全控制
-
Spring Cloud Consul : 封装了Consul操作,Consul是一个服务发现与配置工具(与Eureka作用类似),与Docker容器可以无缝集成
应用端口配置
9000-9099: 服务注册中心端口
9100-9199: 服务提供方端口
9200-9299: 服务消费方端口
9300-9399:统一配置中心
9400-9499:服务网关
user-service:9204
order-service:9203
性能指标
PV 即 page view,页面浏览量 用户每一次对网站中的每个页面访问均被记录1次。用户对同一页面的多次刷新,访问量累计。
UV 即 Unique visitor,独立访客 通过客户端的cookies实现。即同一页面,客户端多次点击只计算一次,访问量不累计。
IP 即 Internet Protocol,本意本是指网络协议,在数据统计这块指通过ip的访问量。 即同一页面,客户端使用同一个IP访问多次只计算一次,访问量不累计。
UV、IP的区别
1. 比如你是ADSL拨号上网,拨一次号自动分配一个IP,进入了网站,就算一个IP;断线了而没清理Cookies,又拨号一次自动分配一个IP,又进入了同一个网站,又统计到一个IP,这时统计数据里IP就显示统计了2次。UV没有变,是1次。
2. 同一个局域网内2个人,在2台电脑上访问同一个网站,他们的公网IP是相同的。IP就是1,但UV是2。
TPS 即Transactions Per Second的缩写,每秒处理的事务数目。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数,最终利用这些信息作出的评估分。
QPS 即Queries Per Second的缩写,每秒能处理查询数目。是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
RPS 即Requests Per Second的缩写,每秒能处理的请求数目。等效于QPS
概念
- 服务雪崩效应
分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况,这种现象被称为服务雪崩效应
服务网关
服务网关的作用:网关作为对外的门户,实现动态路由、监控、授权、安全、调度等功能。
Spring Cloud Gateway VS Zuul
-
开源组织
Spring Cloud Gateway 是 Spring Cloud 微服务平台的一个子项目,属于 Spring 开源社区,依赖名叫:spring-cloud-starter-gateway。
Zuul 是 Netflix 公司的开源项目,Spring Cloud 在 Netflix 项目中也已经集成了 Zuul,依赖名叫:spring-cloud-starter-netflix-zuul。
-
底层实现
Zuul构建于 Servlet 2.5,兼容 3.x,使用的是阻塞式的 API,不支持长连接,比如 websockets。另外
Spring Cloud Gateway构建于 Spring 5+,基于 Spring Boot 2.x 响应式的、非阻塞式的 API。同时,它支持 websockets,和 Spring 框架紧密集成,开发体验相对来说十分不错。
-
性能表现
这个没什么好比的,要比就和 Zuul 2.x 比,Zuul 2.x 在底层上有了很大的改变,使用了异步无阻塞式的 API,性能改善明显,不过现在 Spring Cloud 也没集成 Zuul 2.x,所以就没什么好比的。
Spring Cloud Gateway 是 Spring Cloud Finchley 版推出来的新组件,用来代替服务网关:Zuul。
(Zuul 指 Zuul 1.xSpring cloud未集成Zuul 2.x且 Spring Cloud 貌似没有整合计划,看了下目前最新的包,整合的还是 Zuul 1.x
Spring Cloud Gateway,使用起来比 Zuul 更简单,配置更方便,所以说选 Spring Cloud Gateway 没错,毕竟是 Spring Cloud 亲儿子,不会始乱终弃。
分布式服务跟踪
分布式服务跟踪标准Open Tracing,与实现平台无关、厂商无关的分布式服务跟踪;
国内的分布式服务跟踪实现:
- 淘宝的 “鹰眼”
- 京东的 “Hydra”
- 大众点评的 “CAT”
- 新浪的 “Watchman”
- 唯品会的 “Microscope”
- 窝窝网的 “Tracing”
启动内网穿透
1.下载工具,地址https://github.com/open-dingtalk/pierced 2. 进入windows_64目录 3. 运行 ding.exe -config=./ding.cfg -subdomain=duanledexian 9300
问题
- Eureka控制台出现 EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
说明Eureka已经进入了保护模式。
-
@value 如果配置文件中没有这个配置项且没有指定默认值,则会报错:
Could not resolve placeholder 'xxx' in value "${aaa.bbb.ccc}"
@value指定默认的方法
@Value("${aaa.bbb.ccc:DefaultValue}")
-
docker 安装ELK(https://www.jianshu.com/p/f4812c21d6a8)
参考
- https://windmt.com/2018/04/14/spring-cloud-1-services-governance/
- https://blog.csdn.net/libertine1993/article/details/80765886
- https://www.jianshu.com/p/e148afe66367
- https://natapp.cn/article/natapp_newbie
- https://my.oschina.net/u/3266761/blog/2245498
- https://segmentfault.com/a/1190000019137876?utm_source=tag-newest
- https://blog.csdn.net/lvqingyao520/article/details/78756959