Browsed by
标签:Spring Cloud

Spring Boot与GraphQL – 篇三 集成开发

Spring Boot与GraphQL – 篇三 集成开发

[toc] Spring Boot与GraphQL – 篇三 集成开发 在了解了GraphQL相关概念,以及使用的方法后,就该进入到实操阶段了。使用常用的springboot来搭建服务,并提供GraphQL查询。 配置 在Spring Boot中集成GraphQL非常简单,只需引入两个包 pom.xml <dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-spring-boot-starter</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-java-tools</artifactId> <version>4.3.0</version> <dependency> 定义Schema 推荐在resources目录下建立graphql文件夹,在其中建立root.graphqls和schema.graphqls两个文件。一般会在root.graphqls文件中放Query或者Mutation的接口定义,在schema.graphql…

阅读全文 Read More

Spring Boot与GraphQL – 篇二 Schema格式与规范

Spring Boot与GraphQL – 篇二 Schema格式与规范

模式 Schema 在了解了GraphQL是如何查询以及如何变更数据后,我们需要进一步了解一下。对于客户端来说,需要在请求数据前知道数据的格式,包括有哪些field,这些字段的子对象又有哪些,子对象又是什么样的数据结构。这样就出现了schema的概念。 对象类型与字段 在GraphQL的schema中,构成的基本元素就是对象object类型type,即指定你想要获取的对象,以及想要获取的对象的字段,例如: type Character { name: String! appearsIn: [Episode!]! } Character定义了一个为GraphQL对象类型 name和appearsIn为Character类型中的字段 String是一个预定义的标量类型 String!表示此字段不可为空 [Episode!]!表示返回的是一个Episode对象列表,并且也是非空的 参数 每个GraphQL对象的字段都可以有若干个参数,例如下面例子中的length字段: type Starship { id: ID! name: String! length(unit: LengthUnit = METER): Float } 参数都需要预先定义好,例如上面例子中,unit就是length的一个参数。参数可以是必需也可以是可选,当一个参数是可选时,可以定义默认值。如果不给unit传递参数,那么METER即为默认值。 查询与变更类型 schema中大多数类型都是对象类型,除此之外,还有两种重要类型:查询que…

阅读全文 Read More

Spring Boot与GraphQL – 篇一 如何进行查询

Spring Boot与GraphQL – 篇一 如何进行查询

背景介绍 GraphQL,由Facebook开源,并在github api v4中得到了使用,替代了v3中restful的地位。既然大厂使用,那就得去看看到底是个什么货色。 GraphQL相对于传统的restful接口,主要是在灵活性上有较大改进。例如,要增加一个属性返回,之前的做法可能需要更改接口的返回对象;如果属性越加越多,可能衍生出多个接口(包含返回少量的和大量的数据),也可能由此诞生一个巨大的接口(包含所有的数据);如果是多个对象的组合,由于组合的形式多种多样,有可能也会造成多个接口的产生。 而解决此缺点的做法是,客户端根据自己的需求来传递请求参数,参数中指明需要哪些数据,则服务器端根据这些参数返回给客户端所需要的数据。这样,关于数据的特定字段、或者组合、聚合类的需求,都无需服务端关心,客户端自己确定就好。 查询与变更 Queries and Mutations 字段 Fields 客户端通过指定Fields来控制返回的数据,Fields即为请求的数据,类似字段的含义。指定了服务端定义好的标量,例如: 请求 { hero { name # Queries can have comments! friends { name } } } 响应 { “data”: { “hero”: { “name”: “R2-D2”, “friends”: [ { “name”: “Luke Skywalker” }, { “name”: “Han Solo” }, { “name”: “Leia Organa…

阅读全文 Read More

使用Ribbon和Spring Cloud实现客户端负载均衡

使用Ribbon和Spring Cloud实现客户端负载均衡

使用Ribbon和Spring Cloud实现客户端负载均衡 Client Side Load Balancing with Ribbon and Spring Cloud 通过此教程,你将使用Netflix Ribbon为一个微服务应用提供客户端负载均衡。 This guide walks you through the process of providing client-side load balancing for a microservice application using Netflix Ribbon. 将要做什么 What you’ll build 你将构建一个微服务应用,并使用Netflix Ribbon与Spring Cloud Netflix,在调用另一个微服务中提供客户端负载均衡。 You’ll build a microservice application that uses Netflix Ribbon and Spring Cloud Netflix to provide client-side load balancing in calls to another microservice. 需要些什么 What you’ll need 大约15分钟 你喜欢的文本编辑器或者IDE JDK 1.8或更高版本 Gradle 4+或者Maven 3.2+ 你也可以直接导入代码到IDE中: Spring Tool Suite (STS) IntelliJ IDEA Abo…

阅读全文 Read More

路由与过滤

路由与过滤

路由与过滤 Routing and Filtering 通过此教程,你将使用Netflix Zuul边缘服务库来路由和过滤到一个微服务应用的请求。 This guide walks you through the process of routing and filtering requests to a microservice application using the Netflix Zuul edge service library. 将要做什么 What you’ll build 你将编写一个简单的微服务应用,并使用Netflix Zuul构建一个反向代理应用来转发请求到这个服务应用。以及如何使用Zuul通过代理服务来过滤请求。 You’ll write a simple microservice application and then build a reverse proxy application that uses Netflix Zuul to forward requests to the service application. You’ll also see how to use Zuul to filter requests made through the proxy service. 需要些什么 What you’ll need 大约15分钟 你喜欢的文本编辑器或者IDE JDK 1.8或更高版本 Gradle 4+或者Maven 3.2+ 你也可以直接导入代码到I…

阅读全文 Read More

服务注册与发现

服务注册与发现

服务注册与发现 Service Registration and Discovery 通过此教程,你将构建并消费Netflix Eureka服务中心。 This guide walks you through the process of standing up and consuming the Netflix Eureka service registry. 将要做什么 What you’ll build 将设置一个Netflix Eureka服务中心并建立一个客户端,用来向中心注册自己与解析自己。一个服务中心是非常有用的,因为它可以启用客户端负载均衡并在不适用DNS的情况下解耦服务提供者与消费者。 You’ll setup a Netflix Eureka service registry and then build a client that both registers itself with the registry and uses it to resolve its own host. A service registry is useful because it enables client-side load-balancing and decouples service providers from consumers without the need for DNS. 需要些什么 What you’ll need 大约15分钟 你喜欢的文本编辑器或者IDE JDK 1.8或…

阅读全文 Read More

中心化配置

中心化配置

中心化配置 Centralized Configuration 此教程指导你构建一个Spring Cloud配置服务器,并从其中消费配置。 This guide walks you through the process of standing up, and consuming configuration from, the Spring Cloud Config Server 将要做什么 What you’ll build 你将构建一个配置服务器,然后建立一个客户端在启动时去消费配置并在不重启客户端的情况下刷新配置。 You’ll setup a Config Server and then build a client that consumes the configuration on startup and then refreshes the configuration without restarting the client. 需要些什么 What you’ll need 大约15分钟 你喜欢的文本编辑器或者IDE JDK 1.8或更高版本 Gradle 4+或者Maven 3.2+ 你也可以直接导入代码到IDE中: Spring Tool Suite (STS) IntelliJ IDEA About 15 minutes A favorite text editor or IDE JDK 1.8 or later Gradle 4+ or Maven 3.2+ You can a…

阅读全文 Read More

断路器

断路器

断路器 Circuit Breaker 此教程通过使用Netflix Hystrix容错库在可能失败的方法调用中应用断路器。 This guide walks you through the process of applying circuit breakers to potentially-failing method calls using the Netflix Hystrix fault tolerance library. 将要做什么 What you’ll build 你将使用一个断路器模式构建一个微服务应用,在方法调用失败时将降级服务。当一个相关的服务失败时,使用断路器模式将允许一个微服务继续执行,防止失败传递并让失败的服务有时间恢复。 You’ll build a microservice application that uses the Circuit Breaker pattern to gracefully degrade functionality when a method call fails. Use of the Circuit Breaker pattern can allow a microservice to continue operating when a related service fails, preventing the failure from cascading and giving the failing service time to …

阅读全文 Read More