06 2022 档案
摘要:在 “Springcloud基础知识(9)- Spring Cloud Config (一) | 搭建 Config 服务端和客户端” 里 SpringcloudDemo03 项目基础上,我们创建了 ConfigServer 和 ConfigClient 子模块。我们修改 Gitee 上的配置文件
阅读全文
摘要:在分布式微服务系统中,几乎所有服务的运行都离不开配置文件的支持,这些配置文件通常由各个服务自行管理,以 properties 或 yml 格式保存在各个微服务的类路径下,例如 application.properties 或 application.yml 等。这种将配置文件散落在各个服务中的管理方
阅读全文
摘要:在微服务架构中,一个系统往往由多个微服务组成,而这些服务可能部署在不同机房、不同地区、不同域名下。这种情况下,客户端(例如浏览器、手机、软件工具等)想要直接请求这些服务,就需要知道它们具体的地址信息,例如 IP 地址、端口号等。这种客户端直接请求服务的方式存在以下问题: (1) 当服务数量众多时,客
阅读全文
摘要:1. Hystrix 全局降级 在 “Springcloud基础知识(6)- Spring Cloud Hystrix (一) | 服务降级” 里的 SpringcloudDemo03 项目,ServiceProviderHystrix 子模块实现了服务端服务降级, ConsumerFeign 子模
阅读全文
摘要:在微服务架构中,一个应用往往由多个服务组成,这些服务之间相互依赖,依赖关系错综复杂。例如一个微服务系统中存在 A、B、C、D、E、F 等多个服务,它们的依赖关系如下图。 请求1 请求2 请求3 | | | V V V 服务A 服务B 服务C | | | V V V 服务D <-> 服务E <-> 服
阅读全文
摘要:Feign 是 Netflix 公司发布的一种实现负载均衡和服务调用的开源组件。Spring Cloud 将其与 Netflix 中的其他开源服务组件(例如 Eureka、Ribbon 以及 Hystrix 等)一起整合进 Spring Cloud Netflix 模块中,整合后全称为 Spring
阅读全文
摘要:Spring Cloud Ribbon 是一套基于 Netflix Ribbon 实现的客户端负载均衡和服务调用工具。Netflix Ribbon 是 Netflix 公司发布的开源组件,其主要功能是提供客户端的负载均衡算法和服务调用。Spring Cloud 将其与 Netflix 中的其他开源服
阅读全文
摘要:RestTemplate 是从 Spring 3.0 开始支持的一个 HTTP 请求工具,它提供了常见的 REST 请求方案的模版,例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute。RestTemplate 继承自
阅读全文
摘要:在微服务架构中,一个系统往往由十几甚至几十个服务组成,若将这些服务全部注册到同一个 Eureka Server 中,就极有可能导致 Eureka Server 因不堪重负而崩溃,最终导致整个系统瘫痪。解决这个问题最直接的办法就是部署 Eureka Server 集群。在 Eureka 实现服务注册与
阅读全文
摘要:Eureka 一词来源于古希腊词汇,是 “发现了” 的意思。在软件领域,Eureka 是 Netflix 公司开发的一款开源的服务注册与发现组件。Spring Cloud 将 Eureka 与 Netflix 中的其他开源服务组件(例如 Ribbon、Feign 以及 Hystrix 等)一起整合进
阅读全文
摘要:注:开始阅读 Spring Cloud 系列文章之前,读者应该已经掌握了 Java 基础知识、Web 基础知识、Spring 框架、Spring MVC 和 Spring Boot。另外,本系列文章中的所有实例都是使用 IntelliJ IDEA + Apache Maven 配置和编译的,所以还需
阅读全文
摘要:Maven 项目的部署通常包括以下步骤: (1) 开发人员将项目代码提交到 GIT 或 SVN 等版本控制系统中,并进行标记; (2) 编译人员从 Git 或 SVN 上下载完整的项目代码; (3) 构建应用; (4) 将构建输出的 WAR 或 JAR 文件存放在指定的服务器(Nexus); (5)
阅读全文
摘要:Nexus 是 Sonatype 公司发布的一款仓库(Repository)管理软件,常用来搭建 Maven 私服,所以也有人将 Nexus 称为 “Maven仓库管理器”。目前 Nexus 分为 Nexus 2.x 和 Nexus 3.x 两个大版本,它们是并行的关系。Nexus 2.x:http
阅读全文
摘要:1. 创建 Webapp 项目 本文将介绍如何使用 Maven 创建、构建、部署和运行 Web 应用程序。 1) 创建 Web 应用 使用 Maven 的 maven-archetype-webapp 模板,在 D:\Workshop\maven 目录下创建一个 Webapp 项目。 打开 cmd
阅读全文
摘要:Maven 项目通常都会有多个不同的运行环境,例如开发环境,测试环境、生产环境等。在不同环境的构建过程很可能是不同的,例如数据源配置、插件、以及依赖的版本等。将项目部署到不同的环境时,都需要修改相应的配置,这样重复的工作,不仅浪费劳动力,还容易出错。为了解决这一问题,Maven 引入了 Profil
阅读全文
摘要:1. Maven 依赖管理 在开发中子模块可以通过继承获得父模块中声明的全部依赖,这样虽然避免了在各个子模块 POM 中重复进行依赖声明,但也极有可能造成子模块中引入一些不必要的依赖。为此 Maven 引入了 dependencyManagement 来对依赖进行管理。 本文将在 “Maven基础知
阅读全文
摘要:1. Maven 依赖传递 Maven 的依赖传递机制是指:不管 Maven 项目存在多少间接依赖,POM 中都只需要定义其直接依赖,不必定义任何间接依赖。 Maven 会动读取当前项目各个直接依赖的 POM,将那些必要的间接依赖以传递性依赖的形式引入到当前项目中。Maven 的依赖传递机制能够帮助
阅读全文
摘要:Maven 自动化构建是一种方案,即当某个项目构建完成后(特别是有代码更新的情况下),所有依赖它的相关项目也应该开始构建过程,以确保这些项目的稳定运行。Maven 的自动化构建主要通过如下两种方案实现: (1) 使用 maven-invoker-plugin 插件。 (2) 使用持续集成(CI)服务
阅读全文
摘要:1. Maven 插件 Maven 实际上是一个依赖插件执行的框架,它执行的每个任务实际上都由插件完成的。Maven 的核心发布包中并不包含任何 Maven 插件,它们以独立构件的形式存在,只有在 Maven 需要使用某个插件时,才会去仓库中下载。 Maven 提供了如下 2 种类型的插件。 插件类
阅读全文
摘要:在 Maven 出现之前,项目构建的生命周期就已经存在,开发人员每天都在对项目进行清理,编译,测试及部署,但由于没有统一的规范,不同公司甚至不同项目之间的构建的方式都不尽相同。Maven 从大量项目和构建工具中学习和反思,最后总结了一套高度完美的,易扩展的生命周期。这个生命周期将项目的清理、初始化、
阅读全文
摘要:1. Maven 坐标 在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称为构件(组件)。在 Maven 世界中存在着数十万甚至数百万构件,在引入坐标概念之前,当用户需要使用某个构件时,只能去对应的网站寻找,但各个网站的风格迥异,这使得用户将大量的时间浪费在搜索和寻找上,严重地影响了
阅读全文
摘要:注:开始阅读 Maven 基础知识系列文章之前,读者应该已经掌握了 Java 基础知识。另外,本系列文章中的所有实例都是使用 IntelliJ IDEA 编辑,所以还需要对 IntelliJ IDEA 有基本的了解。以下是常用的 Java 开发工具(IDE): Eclipse IDE for Jav
阅读全文
摘要:本文上接 “Spring 系列 (9) - Springboot+OAuth2(四) | 搭建独立资源服务器”。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型
阅读全文