apollo

How to execute an async fetch request and then retry last failed request?

巧了我就是萌 提交于 2019-11-30 02:19:22
Apollo link offers an error handler onError Issue: Currently, we wish to refresh oauth tokens when they expires during an apollo call and we are unable to execute an async fetch request inside the onError properly. Code: initApolloClient.js import { ApolloClient } from 'apollo-client'; import { onError } from 'apollo-link-error'; import { ApolloLink, fromPromise } from 'apollo-link'; //Define Http link const httpLink = new createHttpLink({ uri: '/my-graphql-endpoint', credentials: 'include' }); //Add on error handler for apollo link return new ApolloClient({ link: ApolloLink.from([ onError(({

Apollo源码解析-搭建调试环境

和自甴很熟 提交于 2019-11-30 01:52:58
准备工作 本地运行时环境 JDK :1.8+ MySQL :5.6.5+ Maven :3.6.1 IDE :IntelliJ IDEA Apollo的表结构对timestamp使用了多个default声明,所以需要5.6.5以上版本。 从官方仓库 https://github.com/ctripcorp/apollo Fork 出属于自己的仓库 https://github.com/wupeixuan/apollo 。 使用 IntelliJ IDEA 从 Fork 出来的仓库拉取代码。拉取完成后,Maven 会下载所需依赖包。 创建数据库 Apollo 服务端共有两个数据库: ApolloPortalDB ApolloConfigDB ApolloPortalDB 只需要在生产环境部署一个即可,而 ApolloConfigDB 需要在每个环境部署一套,如 fat、uat 和 pro 分别部署3套 ApolloConfigDB。 可以根据实际情况选择通过手动导入SQL或是通过Flyway自动导入SQL创建。 在 Apollo 项目下的 scripts 目录,提供了对应的初始化脚本: 创建 ApolloPortalDB 根据实际情况修改 flyway-portaldb.properties 中的 flyway.user、flyway.password 和 flyway.url 配置

金丝雀发布、滚动发布、蓝绿发布到底有什么差别?关键点是什么?

我只是一个虾纸丫 提交于 2019-11-29 21:36:51
根据 2017 年的 DevOps 发展报告,高效能组织和低效能组织在软件交付的效率上有数量级上的差异。技术组织的软件交付能力是一种综合能力,涉及众多环节,其中发布是尤为重要的环节。 作为技术人员,大家可能听说过“滚动发布”和“蓝绿发布”等术语,但是很多人并不清楚这些术语背后的原理。本文试图总结当前主流的发布策略,每个的优劣,适用性,让开发人员特别是架构师对现代发布技术有一个更为清晰全面的认识,让大家能够根据自己的企业上下文,对发布策略做出正确的选型和实践。 一、单服务器组发布 先解释下单服务器组的概念,早先我们机器资源比较紧张,不像现在云计算和虚拟化(包括容器技术)这么发达,所以应用机器基本是预先静态分配好的(一般由运维负责分配),原来应用 A 住在这 n 台机器上,那么下次升级发布的应用 A 也住在这 n 台机器上,所以称为单服务器组发布方式。 1.1 蛮力发布 如下图所示,这种发布方式比较简单粗暴,有点像我们传统的软件升级方式,主要靠手工完成,先将老版本 V1 全部下掉,再将新版本发到机器上去。这种方式会引入服务中断(停机),在开发测试环境是可行的,但对于生产环境发布,其会直接影响用户的使用体验,这种方式一般是不建议的。 发布前 发布后 优势和适用场合 优势: 简单成本低 不足: 服务中断用户受影响,出了问题回退也慢 适用场合: 开发测试环境 非关键应用(用户影响面小)

linux下搭建阿波罗分布式配置中心

♀尐吖头ヾ 提交于 2019-11-29 21:04:13
1 环境要求 首先虚拟机内存在2g以上 一定要提前安装好java1.8k环境。 安装jdk步骤如下: 1、在user目录下新建java文件夹: # cd /usr/ # mkdir java # cd java 2.下载jdk1.8,进入http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,复制下载目录 # wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux- x64.tar.gz? AuthParam=1534129356_6b3ac55c6a38ba5a54c912855deb6a22 3、解压:使用tar -zxvf 文件名进行解压。解压之后: 4、配置环境变量: # vi /etc/profile 将如下配置添加至文件中,然后保存退出。 #java export JAVA_HOME=/usr/java/jdk1.8.0_181 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib

How do you prevent nested attack on GraphQL/Apollo server?

孤人 提交于 2019-11-29 19:05:26
How do you prevent a nested attack against an Apollo server with a query such as: { authors { firstName posts { title author { firstName posts{ title author { firstName posts { title [n author] [n post] } } } } } } } In other words, how can you limit the number of recursions being submitted in a query? This could be a potential server vulnerability. As of the time of writing, there isn't a built-in feature in GraphQL-JS or Apollo Server to handle this concern, but it's something that should definitely have a simple solution as GraphQL becomes more popular. This concern can be addressed with

携程Apollo统一配置中心的搭建和使用(java)

大憨熊 提交于 2019-11-29 18:04:01
一.Apollo配置中心介绍 1、What is Apollo 1.1 Apollo简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。 Apollo支持4个维度管理Key-Value格式的配置: application (应用) environment (环境) cluster (集群) namespace (命名空间) 同时,Apollo基于开源模式开发,开源地址:https://github.com/ctripcorp/apollo 二、分布式部署指南 1.环境 1.1 Java Apollo服务端:1.8+ Apollo客户端:1.7+ 可以通过如下命令检查: java -version 样例输出: java version "1.8.0_74" Java(TM) SE Runtime Environment (build 1.8.0_74-b02) Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode) 1.2 MySQL 版本要求:5.6.5+ 连接上MySQL后,可以通过如下命令检查: SHOW VARIABLES WHERE Variable_name =

关于Springboot微服务使用Apollo配置管理中心的热刷新问题

纵然是瞬间 提交于 2019-11-29 18:03:51
近日,公司项目中使用携程网的Apollo配置管理中心进行统一配置管理,为了方便环境部署和运维,能避免很多配置问题导致的环境部署错误;很多网友估计都用过Apollo; 在我们项目组使用前做了一些预研,发现还需要解决连接池的热刷新问题,否则意味着Apollo的portal界面上修改配置后还得重启服务才能生效; 可能很多人会说,Apollo配置管理中心本身就支持配置的热刷新,但是,这只适用于普通应用场景(如一些不需要复杂的初始化操作的组件和spring-boot默认支持的组件); 对于Druid连接池、Jedis连接池、Lettuce连接池等等之类的组件,实现配置的热刷新仍然需要自己做一些代码适配; 网上有热心网友也给出了一些对通用配置的热刷新代码实现,这种方式对spring-boot默认集成的第三方组件是有效的,比如spring-boot 2.x的默认数据库连接池 Hikari(其实查看源代码就能发现,spring-boot为它监听了EnvironmentChangeEvent事件并实现了热刷新逻辑); 那么,对基于Apollo配置管理中心的Druid连接池、Jedis连接池、Lettuce连接池等等之类的客户端组件热刷新问题如何解决呢? 本文暂时只给出思路,详细代码后续会放出来;实现方法步骤如下: 1. 编写配置监听器

Spring Cloud Alibaba基础教程:Sentinel使用Apollo存储规则

隐身守侯 提交于 2019-11-29 14:21:50
上一篇 我们介绍了如何通过Nacos的配置功能来存储限流规则。Apollo是国内用户非常多的配置中心,所以,今天我们继续说说Spring Cloud Alibaba Sentinel中如何将流控规则存储在Apollo中。 使用Apollo存储限流规则 Sentinel自身就支持了多种不同的数据源来持久化规则配置,目前包括以下几种方式: 文件配置 Nacos配置 ZooKeeper配置 Apollo配置 本文我们就来一起动手尝试一下,如何使用Apollo来存储限流规则。 准备工作 下面我们将同时使用到 Apollo 和 Sentinel Dashboard ,所以可以先把 Apollo 和 Sentinel Dashboard 启动起来。 如果还没入门 Sentinel Dashboard 可以通过文末的系列目录先学习之前的内容。Apollo的话相对复杂一些,这里不做详细介绍了,如果还没有接触过Apollo的读者可以查看其 官方文档 进一步学习。 应用配置 第一步 :在Spring Cloud应用的 pom.xml 中引入Spring Cloud Alibaba的Sentinel模块和Apollo存储扩展: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId

Using GraphQL Fragment on multiple types

我是研究僧i 提交于 2019-11-29 13:16:32
If I have a set of field that is common to multiple types in my GraphQL schema, is there a way to do something like this? type Address { line1: String city: String state: String zip: String } fragment NameAndAddress on Person, Business { name: String address: Address } type Business { ...NameAndAddress hours: String } type Customer { ...NameAndAddress customerSince: Date } Fragments are only used on the client-side when making requests -- they can't be used inside your schema. GraphQL does not support type inheritance or any other mechanism that would reduce the redundancy of having to write

Apollo安装与配置

妖精的绣舞 提交于 2019-11-29 09:57:47
一、准备工作 二、安装步骤 三、启动Apollo配置中心 四、使用Apollo配置中心 为了让大家更快的上手了解Apollo配置中心,我们这里准备了一个Quick Start,能够在几分钟内在本地环境部署、启动Apollo配置中心。 考虑到Docker的便捷性,我们还提供了Quick Start的Docker版本,如果你对Docker比较熟悉的话,可以参考 Apollo Quick Start Docker部署 通过Docker快速部署Apollo。 不过这里需要注意的是,Quick Start只针对本地测试使用,如果要部署到生产环境,还请另行参考 分布式部署指南 。 注:Quick Start需要有bash环境,Windows用户请安装 Git Bash ,或者也可以直接通过IDE环境启动,详见 Apollo开发指南 。 一、准备工作 1.1 Java Apollo服务端:1.8+ Apollo客户端:1.7+ 由于Quick Start会在本地同时启动服务端和客户端,所以需要在本地安装Java 1.8+。 在配置好后,可以通过如下命令检查: java -version 样例输出: java version "1.8.0_74" Java(TM) SE Runtime Environment (build 1.8.0_74-b02) Java HotSpot(TM) 64-Bit