SpringCloud知识点
SpringCloud
一、系统架构的演变
单机版
把我们的所有的模块都放置一个项目上,最后将项目打包成war包或者jar包部署到你的服务器上;
分布式
不同的业务在不同的模块上,然后发布在不同的服务器上,物理上的分离,逻辑上的集中
SOA:面向服务
微服务:SpringCloud Dubbo 两套解决方案
二、微服务
是什么?
根据业务的不同:拆分成怎么样,仁者见仁智者见智了;微服务是一种架构风格;
特点
三、Dubbo与SpringCloud的区别?
本质区别
RPC和Http的区别
四、Spring、Spring FrameWork、SpringBoot和SpringCloud是什么?
Spring
Spring是一个生态体系(技术体系),是集大成者,包括了SpringFrame,SpringBoot、SpringCloud、Spring Data、SpringSecurity 等等
Spring Frame
是整个Spring的基石,是一个一站式的轻量级的Java开发框架,核心是控制反转(IOC)和面向切面(AOP),针对开发WEB层的SpringMVC,业务层的AOP,持久层的JDBCTemplate等配置解决方案。
SpringBoot
SpringBoot是一个快速整合第三方框架的框架;有着简化配置、自动配置、独立运行和应用监控等优点
SpringCloud
SpringCloud则是微服务架构的一套解决方案;关注的是宏观,将SpringBoot开发的一个个单体的服务整合并管理起来,它为各个服务提供了注册中心进行服务发现,配置管理,负载均衡,断电器路由,微代理
由很多组件组成:
Eureka:注册中心;服务的注册与发现;
Zuul:网关组件;路由的请求分发、过滤器(Ribbon. hystrix)
Ribbon:负载均衡组件
Hystrix:熔断组件
Fegin:远程调用组件
五、Eureka(注册中心)
服务注册中心(可以是一个集群),对外暴露自己的地址
使用步骤
1、引入启动器;
2、配置spring.application.name = item-eureka
eureka.client.service-url.defaultZone=http://localhost:10086/eureka
// 当是eureka集群时,两两相互注册即可; 关闭自我保护,定期清 除无效链接
eureka.server: eviction-interval-timer-in-ms: 5000
enable-self-preservation: false]
3、启动类添加注解 @EnableEurekaServer
六、Ribbon(负载均衡)
使用的负载均衡策略
七、Hystrix(熔断)
Hystrix是一个处理分布式系统的 延迟和容错开源库;在分布式系统里,许多依赖不可避免的会调用失败,你如超时、异常等,hystrix组件能够保证一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性
对比
服务降级:优先保护核心服务,而非核心服务不可用或弱可用
触发服务降级的条件
服务熔断:(断路器) 有三个状态
八、Feign(远程调用)
Feign(伪装):可以把Rest请求进行隐藏,伪装成SpringMVC的Controller一样,你不用在自己拼url和参数等,一切交给feign就可以
Feign也集成了Ribbon负载均衡(默认配置)和Hystix服务熔断(需要配置);
使用流程
九、Zuul(服务网关)
不论是来自客户端(PC端或移动端)的请求,还是服务内部调用,一切对服务的请求都必须经过Zuul服务网关组件,然后再由网关来实现动态路由、授权等等操作;Zuul就是我们服务的统一入门
Zuul 如果需要负载均衡 可以用nginx进行做负载均衡和反向代理
使用流程(路由)
- 在启动类(引导类)@EnableZuulProxy
过滤器
创建一个类继承ZuulFilter父类(基类)
重写其四个方法
Nginx
十、分布式微服务架构
十一、Eureka 和 Zookeeper 两个区别
CAP是什么?
分布式理论CAP
一个分布性系统不可能同时满足CAP;由于分区容错性P是分布式中必须要保证的;所以我们只能在A和C中进行权衡。
Zookeeper遵循CP
当一台Zookeeper挂了,那其他的Zookeeper会进行一次选取(要求强一致性;我一定要保证数据的一致性);但是在选举的过程中Zookeeper是不可用的,而当前的体验不是很好;
Eureka遵循AP
标签:
相关文章
-
无相关信息