1、Eureka
功能: 服务注册中心 服务发现与注册
简单实现原理 : Eureka通过心跳检测、健康检查和客户端缓存等机制
高可用说明: eureka 可以把自己设置为一个应用程序注册到自自己,和其他节点互相注册,这样当一个节点挂掉之后,另一个eureka节点就会代替该节点。
配置说明: https://www.cnblogs.com/li3807/p/7282492.html
心跳说明 http://blog.csdn.net/forezp/article/details/73017664
注意: 1、注册eureka时,要同时写多个地址,如下。
2、为什么eureka 互相注册了,还要写多个节点。这是防止 eureka挂掉,然后serviceA挂掉,然后serviceA重启(此时当前注册的eureka未启动),这时候其他服务就访问不到了
2、Zuul 网关(负载均衡功能)
功能简介 将服务保留的rest进行代理和网关控制,除了平常经常使用的node.js、nginx外,Spring Cloud系列的zuul和rebbion,可以帮我们进行正常的网关管控和负载均衡。
Feign Feign 相当于一个HttpClient的东西,会保持长连接和监理线程池。feign默认是通过自己包下的Retryer进行重试配置,默认是5次
Ribbion Ribbion我的理解是一个算法,相当于是从eureka中获取所有的微服务列表,然后从例如A服务有两个节点,会更具算法选择一个让Feign进行调用。
Hystrix(Feign已经依赖)(熔断):
雪崩效应(场景)
在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。
解决问题:
如同电力过载保护器。它可以实现快速失败,如果它在一段时间内侦测到许多类似的错误,会强迫其以后的多个调用快速失败,不再访问远程服务器,从而防止应用程序不断地尝试执行可能会失败的操作,使得应用程序继续执行而不用等待修正错误,或者浪费CPU时间去等到长时间的超时产生。熔断器也可以使应用程序能够诊断错误是否已经修正,如果已经修正,应用程序会再次尝试调用操作
特性:
1、断路器机制
2、FallBack (相当于降级机制)
3、资源隔离
参考文档:
相关文档:https://www.cnblogs.com/ityouknow/p/6868833.html
Zuul过滤器
说明
Zuul大部分功能都是通过过滤器来实现的。
Zuul中定义了四种标准过滤器类型,这些过滤器类型对应于请求的典型生命周期。
(1)PRE:
这种过滤器在请求被路由之前调用。我们可利用这种过滤器实现身份验证、在集群中选择请求的微服务、记录调试信息等。
(2) ROUTING:
这种过滤器将请求路由到微服务。这种过滤器用于构建发送给微服务的请求,并使用Apache HttpClient或Netfilx Ribbon请求微服务。
(3) POST:
这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添加标准的HTTP Header、收集统计信息和指标、将响应从微服务发送给客户端等。
(4) ERROR:
在其他阶段发生错误时执行该过滤器。
Zuul重试配置
Ribbon 重试配置
第一次调用失败问题:
疑问:
为什么我的节点注册到eureka中了,但是在zuul代理访问不到, 这是由于zuul会通过eureka client 定时从eureka中获取当前节点的配置。
注意:
1、zuul目前版本只支持http不支持tcp的负载均衡
2、注意熔断:具体行为为:后端接口没有问题,但是前段调用超过1s直接报错,这里是有一个配置文件可以配置延长时间
3、Fegin 相当于HTTPCLient 的东西
访问地址
http://localhost:8765/api/uc/user/test
http://localhost:8765/test/test
3、Config:
说明
Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同, 随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境
中文文档:
https://springcloud.cc/spring-cloud-config.html
git配置文件拉取
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
您要在哪里存储配置服务器的配置数据?管理此行为的策略是
EnvironmentRepository
,服务于Environment
对象。这个Environment
是Spring Environment
(包括propertySources
作为主要功能)的域的浅层副本。Environment
资源由三个变量参数化:{application}
映射到客户端的“spring.application.name”;{profile}
映射到客户端上的“spring.profiles.active”(逗号分隔列表); 和{label}
这是一个服务器端功能,标记“版本”的一组配置文件。
http://localhost:8750/gate/dev/master
http://localhost:8750/uc /dev/masteruc
4 spring cloud bus 作用: 事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。
Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控
文档:
http://blog.csdn.net/forezp/article/details/70148235?utm_source=tuicool&utm_medium=referral
对照周二讲解分析:
http://wiki.alphalawyer.cn/pages/viewpage.action?pageId=8231506
5、微服务之间的事务 tcc 事务
TRYING
阶段主要是对业务系统做检测及资源预留
CONFIRMING
阶段主要是对业务系统做确认提交,
TRYING
阶段执行成功并开始执行
CONFIRMING
阶段时,默认
CONFIRMING
阶段是不会出错的。即:只要
TRYING
成功,
CONFIRMING
一定成功。
CANCELING
阶段主要是在业务执行错误,需要回滚的状态下执行的业务取消,预留资源释放。
而幂等性则是指业务方法调用一次与调用多次的执行返回结果是一样的。
相关实现框架 txlcn(本地事务搬用工作)
https://gitee.com/wangliang1991/tx-lcn
happylifeplat-transaction(完全基于tcc的)
https://github.com/yu199195/happylifeplat-transaction
6、相关链接: 代码学习例子: 学习例
https://gitee.com/geek_qi/AG-Admin-Learning
例子
https://gitee.com/geek_qi/ace-security
文档学习
【spring|spring cloud 基础知识】 https://springcloud.cc/spring-cloud-config.html
https://springcloud.cc/spring-cloud-netflix.html
分享用到的例子
https://gitee.com/softwar/AG-Admin-Learning/tree/learning
欢迎转载 转载时请注明本地址 https://blog.csdn.net/weixin_41805044/article/details/80239071
推荐阅读
- =======j2ee|spring用注解实现注入的@resource,@autowired,@inject区别
- jar|springboot项目打成jar包和war包,并部署(快速打包部署)
- 数据库|效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】)...
- java人生|35K 入职华为Java开发那天,我哭了(这 5 个月做的一切都值了)
- Java毕业设计项目实战篇|Java项目:在线嘿嘿网盘系统设计和实现(java+Springboot+ssm+mysql+maven)
- 微服务|微服务系列:服务发现与注册-----Eureka(面试突击!你想了解的Eureka都在这里.持续更新中......)
- 每日一书|每日一书丨终于有人把云原生讲明白了
- java|ApplicationListener和SpringApplicationRunListener的联系
- Spring|SpringSecurity--自定义登录页面、注销登录配置
- 性能|性能工具之 Jmeter 通过 SpringBoot 工程启动