SpringCloud1
文章摘要
SpringCloudNetFlix
核心问题
微服务架构核心问题
服务很多,客户端如何访问
这么多服务,服务之间如何通信
如何治理服务
服务挂了怎么办
解决方案
Spring Cloud 生态
- Spring Cloud NetFlix 一站式解决方案!
api网关:zuul组件
服务调用 Feign--HttpClinet http通信方式。同步 阻塞
服务注册发现 Eureka
熔断机制 Hystrix
负载均衡 ribbon
- Apache Dubbo Zookeeper 半自动,需要整合别人的
api:没有,用第三方插件,或者自己实现
Dubbo
Zookeeper
没有,借助 Hystrix
- Spring Cloud Alibaba 最新的 一站式解决方案 更简单
认识Spring Cloud
springboot专注于快速、方便的开发单个个体微服务,springCloud关注全局协调的微服务框架
现在大型网站的架构图
Spring Cloud NetFlix
Eureka
服务注册和服务发现
必须要进行参数优化,否则速度太慢
nacos zookeeper rockemq中的nameserver也是这个作用
consul
为什么要搞两级缓存
目的就是为了避免并发冲突
集群模式
Eureka优化
Eureka和Zookeeper区别
CAP理论:
C 一致性
A 可用性
P 容错性
由于分区容错P在分布式系统中是必须要保证的,因此,偶问你只能在A和P之间进行权衡
Zookeeper保证的是CP
Eureka保证的是AP
Feign
服务调用
整合eureka和ribbon
Feign是面向接口的
Ribbon
负载均衡
服务第一次被调用的时候,他会初始话一个ribbon组件,初始化这些组件可能会耗费一定时间,所以很容易导致服务超时。开启下面参数,让每个服务启动的时候就直接初始化ribbon相关的组件,避免第一次请求的时候初始化
Hystrix
服务熔断在服务端
服务降级在客户端
服务熔断
定义:某个服务超时或者异常,引起熔断 类似于保险丝的作用
一般发生在服务端
服务降级
定义:从整体网站请求负载考虑,当前某些服务访问量比较大,会暂时关闭一些访问量比较小的服务,将整个网站的资源倾斜在访问量比较大的服务上,等到访问量下来,就重新开启那些服务;此时在客户端上,我们可以准备一个FallbackFactory,返回默认的值,提示用户当前的服务不可用
一般发生在客户端
Zuul
路由网关,用户一进来接触的组件就是路由网关
主要功能:
路由
过滤
zuul服务最终还是会注册到Eureka中
zookeeper
网关
核心功能
动态路由
灰度发布
授权认证
性能监控
系统日志
数据缓存
限流熔断
kong zuul ngnix+lua(openresty) 自研网关
大厂基本上都是基于netty做的自有网关
zuul:基于java开发,功能比较简单,但是比如灰度发布,限流,动态路由等没有这些功能
kong:依托于ngnix实现,openresty,lua实现的模块,现成的一些插件,可以直接使用
zuul
一般来讲一台8核16g的zuul每秒抗1000+不成问题