Java开发环境安装-JDK、Maven、Git
CentOS 和 Ubuntu 下安装 Oracle JDK,Ubuntu 卸载自带的 OpenJDK。
CentOS 和 Ubuntu 下安装 Oracle JDK,Ubuntu 卸载自带的 OpenJDK。
微服务架构下,会有很多微服务,服务之间调用关系会非常复杂,就非常有必要对每个请求的完整调用链进行跟踪,了解调用了那些服务,当出现问题时可以快速定位。
Spring Cloud Sleuth 为 Spring Cloud 实现了一个分布式跟踪解决方案 Sleuth,该组件大量借签了 Dapper、Zipkin 和 HTrace。
对于大多数用户来说,Sleuth 应该是不可见的,它会自动检测系统的交互,可以在日志中捕获跟踪数据,或将其它送到远程日志收集服务器。
Spring Cloud Sleuth 官方文档,Sleuth Zipkin 日志存储跟踪示例,Zipkin GitHub Zipkin UI 示例、OpenZipkin/Brave 捕获延迟信息的库。
本篇是前面两篇 Config Git 和 JDBC 实现的文章的延续,主要对 Spring Cloud Config 服务器端和客户端的相关配置进行详细的描述。
具体包括引导启动、服务存储库、健康检测、安全认证、集成服务发现、请求失败重试等配置详解。
Spring Cloud Config 支持 Git 和 JDBC 做为后端存储库,默认是 Git 存储库,对于开发来说是方便且易于理解的;但对于运维来说,因涉及 Git 操作,可能就不那么方便了。
另外,如果能给分布式配置管理提供 Web 控制台来操作就非常直观和方便了,JDBC 存储库就可以较好的应用在 Web 应用中。
在微服务架构集群部署的环境中,可能会有十几甚至几十个服务,若要修改项目属性参数,手动的方式是很糟糕的,所以就有了分布式配置管理这个概念。
将服务器的配置外部化,可以存在文件或数据库中,一个专门用于管理应用服务配置的应用,可以随时修改和自动更新到目标服务器上。目前已有开源项目,如,smconf、disconf、QConf。
Spring Cloud Config 为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Config Server,可以在所有环境中管理应用程序的外部属性。Spring Cloud Config 官方文档,spring-cloud-config Github。
该篇是 Spring Cloud系列(八):路由和过滤器之API网关 Zuul 的延续,主要讲解 Zuul 的相关配置,比如编码、过滤器、熔断回退、超时、跨域等。
API 网关是对外服务的一个入口,隐藏了内部架构的实现,是微服务架构不可或缺的一部分。
Zuul 是 Netflix 基于JVM的路由器和服务器端负载均衡器。Zuul 能够与 Eureka、Ribbon、Hystrix等组件配合使用。
相关文档可参考Spring Cloud文档:Router and Filter-Zuul Netflix Zuul GitHub,Zuul Wiki 文档
HystrixCommand 中除了 fallbackMethod,还有很多的配置。详细可查看 原生 Netflix Hystrix,Netflix Hystrix Wiki 文档。
微服务架构中,会有多个可调用的微服务,一个请求可能会连续调用多个服务,若其中某一个服务失败可能会导致级联失败(连锁反应),最终导致整个系统不可用,这种情况称之为服务雪崩效应。
Netflix 为微服务架构开发了一个 Hystrix 中间件(库),用于实现断路器功能,类似于电路中的保险丝。Hystrix 通过 HystrixCommand 对服务调用进行隔离来阻止故障连锁反应,能够让接口调用快速失败并迅速恢复正常、或者回退并优雅降级到另一个受 hystrix 保护的调用。
原生 Netflix Hystrix,Netflix Hystrix Wiki 文档,Spring Cloud Hystrix 文档。
Feign 是一个声明式 Web 客户端,让 Rest 服务调用更简单。要使用 Feign ,只需在编写接口并添加其注解,就可以定义好 http 请求的参数、格式、地址等信息。
Feign 会完全代理 Http 请求,只需向调用方法一样调用 feign 注解的客户端就可以完成服务请求及相关处理。
Spring Cloud 支持集成 Ribbon 和 Eureka,Feign 和他们一起使用时支持客户端负载均衡功能。Spring Cloud OpenFeign 文档。