1.为何须要 Hystrix断路器?git
雪崩现象: 复杂的分布式架构的应用程序有不少的依赖,当依赖的某个服务出现失败时(线程池阻塞),很容易拖垮整个应用。web
解决办法:spring
对依赖作隔离,Hystrix就是处理依赖隔离的框架,同时也是能够帮咱们作依赖服务的治理和监控数据库
hysrix(豪猪):保证微服务群的健壮,作了隔离,熔断,降级,缓存等操做。编程
最终达到不会因为某个服务出问题而致使雪崩,让整个集群死掉。后端
资源隔离(限流):线程池隔离,信号量隔离。分配每一个服务的资源,互不影响。缓存
熔断:失败率达到阈值时自动触发降级安全
降级:超时降级,资源不足时降级,降级后配合降级接口返回托底数据。减小损失服务器
缓存:提供了请求缓存,请求合并实现。架构
所谓降级,就是当某个服务熔断以后,服务器将再也不被调用,此时客户端能够本身准备一个本地的fallback回调,返回一个缺省值。
熔断(服务提供方作)调用时不能用feign(有本身的机制),使用ribbon
1.导jar包依赖
2.启动断路器(@EnableHystrix)
3.配置断路注解(@HystrixCommand(fallbackMethod = "getUserFailBack") //出现短路(超时,异常,屡次访问都失败),托底数据访问(经过方法调用获取的))
4.返回托底数据的方法(public User getUserFailBack(Long id){ return new User(id,"出现异常了亲!");})
为何使用Feign?
每一个方法都要加回调而且耦合。
解决方案:
可使用spring面向切面编程,为feign的接口建立一个代理对象,完成对服务调用,当发现熔断后就调用同名托底方法。
若是咱们服务消费者实现的技术为ribbon,必须在服务提供者方经过Hystrix的断路器.
若是咱们服务消费者实现的技术为feign,必须在服务消费者经过feign的断路器,feign断路器底层仍是Hystrix的断路器.
Zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用。
Zuul 在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 至关因而设备和 Netflix 流应用的 Web 网站后端全部请求的前门,也要注册入Eureka。
路由访问映射规则 :
安全加固:不用服务名,映射路径
忽略原来访问:原来模式不能够访问
加上统一前缀
yml配置
zuul: routes: myUser.serviceId: user-provider myUser.path: /user/** #以/user/开头的全部路径都转发给user-provider ignored-services: "*" #能够一个一个配置,可是很麻烦,用*来通配 prefix: "/services" #加上统一前缀
微服务架构中,每一个项目都有一个yml配置,管理起来麻烦。要使用spring cloud config来统一管理。
在整个项目中须要一个config-server 全部的其余项目都对应一个config-clent,不管是provider consumer eureka等。
实现
gitjhub上面的数据就用yhptest的 服务端:能经过url访问配置 客户端:可以经过服务端最终访问配置信息 注意:config-server、和Eureka-sever的配置文件不能交给spring cloud config。注意前后
事务: 指做为单个逻辑工做单元执行的一系列操做,要么彻底地执行,要么彻底地不执行.
本地事务: SqlSessionfactory
一个数据库范围类事务管理.
分布式事务:
跨了多个数据库事务管理,在微服务架构每一个服务都有本身数据库,在微服务架构中必然要用到分布式事务.
为何须要?
微服务架构所必须
实现方案
二阶段提交(耗时耗资源)
tcc(强一致性)
异步确保型(最终一致性-不实时)