
Spring Cloud
Spring Cloud各个组件的使用以及问题收集。
ZhiYuanYe
.
展开
-
Zuul中整合Swagger2,实现对源服务API测试
前言我们知道,Swagger2整合到项目中,可以非常方便地进行接口测试,是前后端对接效率提高。现在,我们可以在Zuul中整合Swagger2,通过Zuul配置文件配置的映射路径,来生成源服务接口的测试Dashboard。 github项目源码地址1、Zuul Server工程pom.xml文件中引入依赖: <dependency> ...原创 2018-06-06 10:21:27 · 4274 阅读 · 2 评论 -
基于Lua的Spring Cloud网关高可用通用Ngnix插件
项目github地址:点击跳转场景痛点在Spring Cloud微服务架构体系中,我们往往会部署一个Zuul集群来横向扩展我们的微服务应用,集群的上层是Nginx软负载,在实际情况中,往往会遇到Zuul宕机的尴尬事情,这时候从Nginx到这台机器的请求就会全部失效。此项目针对此痛点,用lua脚本实现定时拉取特定服务地址,动态无感知增减Zuul在Nginx中的负载节点。如果您希望...原创 2018-05-23 17:10:18 · 3005 阅读 · 0 评论 -
一种接口限速方案
如果一个接口的频繁调用会严重影响到系统稳定性的话,那就要考虑限速了。谷歌有个现有的开源实现:Guava的RateLimiter类,RateLimiter使用的是一种叫令牌桶的流控算法,RateLimiter会按照一定的频率往桶里扔令牌,线程拿到令牌才能执行,比如你希望自己的应用程序QPS不要超过1000,那么RateLimiter设置1000的速率后,就会每秒往桶里扔1000个令牌。 详情请戳:G原创 2017-06-07 14:56:01 · 10736 阅读 · 0 评论 -
使用spring boot admin监控spring cloud应用程序
最近在找一个spring cloud的监控组件,要求粒度要到每一个接口的,hystrix dashboard显然不适合,也不是这个应用场景。后来发现了spring boot admin这个神器,可以注册到Eureka和spring cloud无缝整合,页面AngularJS写的还算凑合,里面包含有许多功能:显示 name/id 和版本号显示在线状态Logging日志级别管理JMX beans管理Th原创 2017-06-12 15:21:29 · 28261 阅读 · 2 评论 -
基于Spring Boot、Spring Cloud、Docker的微服务系统架构实践
原文/项目 地址:https://github.com/sqshq/PiggyMetrics由于最近公司业务需要,需要基于Spring Cloud的微服务系统。遍访各大搜索引擎,发现国内资料少之又少,也难怪,国内Dubbo正统治着天下。但是,一个技术总有它的瓶颈,Dubbo也有它捉襟见肘的地方。所幸霸主Spring也推出了一整套微服务解决方案,各个子项目也巧妙地解决了分布式系统开发过程中的各种各样的翻译 2017-03-07 23:39:02 · 71505 阅读 · 23 评论 -
如何将单体应用改造为微服务
如果你的工作围绕一个大型的,复杂的单体应用,可能你每天开发和部署应用的工作都是进展缓慢而痛苦的。微服务看起来像是一个遥不可及的天堂,幸运的是,有方法可以帮助你逃离单体架构的地狱。本文将会介绍如何逐步地将单体应用改造为一系列的微服务。概述将单体应用改造为微服务实际上是应用现代化的过程,这是开发者们在过去十年来一直在做的事情,所以已经有一些可以复用的经验。全部重写是绝对不能用的策略,除非你要集中精力从转载 2017-03-14 15:09:34 · 15142 阅读 · 1 评论 -
Eureka Server的高可用
Eureka Server进行互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署创建application-peer1.properties,作为peer1服务中心的配置,并将serviceUrl指向peer2spring.application.name=eureka-serverserver.port=1111eu转载 2017-03-14 21:52:25 · 3070 阅读 · 1 评论 -
3017.3.12---Spring Cloud中国社区线下meetup笔记
地点:电子科技大学清水河校区空天院报告厅Eureka优势:基于Java实现,和Java后端代码兼容性强。定制开发易于Java程序员掌握。出于Netflix,与Netflix其他组件如Ribbon、Hystrix、Zuul具有先天良好适配性。不足:需要在每个服务添加Eureka客户端。心跳包机制,导致服务状态更新不及时。Consul优势:服务注册独立于服务本身。主动检测服务本身。通原创 2017-03-15 15:21:53 · 7626 阅读 · 0 评论 -
Feign报错:Attribute 'value' in annotation,must be declared as an @AliasFor [serviceId], not [name]
今天在Feign搭建中想追下新,把1.3.5.RELEASE版本改成了1.4.0.RELEASE版本,然后就莫名其妙报这个错了,这么解决都莫法。。。完整报错:org.springframework.core.annotation.AnnotationConfigurationException: Attribute ‘value’ in annotation [org.springframework原创 2017-03-19 23:52:34 · 12265 阅读 · 0 评论 -
java.lang.NoClassDefFoundError: feign/Logger
找不到类,明显是少包,少依赖。。。。添加spring-cloud-starter-feign 的依赖坐标。。。解决原创 2017-03-21 22:59:32 · 15924 阅读 · 1 评论 -
Ribbon负载均衡策略配置
在这里吐槽一句:网上很多文章真是神坑,你不看还好,看了只会问题越来越多,就连之前的问题都没有解决!!!不多说了,Ribbon作为后端负载均衡器,比Nginx更注重的是请求分发而不是承担并发,可以直接感知后台动态变化来指定分发策略。它一共提供了7种负载均衡策略: 策略名 策略声明 策略描述 实现说明原创 2017-03-22 14:12:26 · 53042 阅读 · 18 评论 -
Spring Cloud 组件搭建(一)Eureka服务发现
Spring Cloud生态圈目前有21个子项目来共同构建,解决了目前微服务系统的很多问题,废话不多说,直接上其最普通简单的Eureka服务发现与注册中心搭建过程。本系列教材依照1.3.5.RELEASE版本,该版本比较稳定,JDK要求1.7以上。1、micro-service父工程pom.xml:<?xml version="1.0" encoding="UTF-8"?><project xml原创 2017-03-22 22:25:16 · 15726 阅读 · 2 评论 -
Spring Cloud组件完整demo
托管于github:https://github.com/Lovnx/micro-service说明:**工程名** **描述** **端口**eureka-server 服务发现与注册中心 7070ribbon 负载均衡器 7071config-server 配置管理中心 7072zuul 动态路由器 7073service-A A服务,用来测试服务间调用与路由原创 2017-03-22 22:46:57 · 29217 阅读 · 61 评论 -
com.netflix.zuul.exception.zuulexception timeout
zuul部署上物理机之后,如果使用默认配置,请求很容易超时,错误信息:java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInpu原创 2017-04-10 11:39:30 · 39243 阅读 · 2 评论 -
Spring Cloud 负载均衡后,某个服务挂掉后保证数据一致性
前提是有zuul服务!说一下背景:一个eureka做的服务发现,2个微服务,1个zuul,当一个微服务挂掉后,由于eureka是默认集成了轮询策略,所以,当访问服务时,有50%几率是请求失败的,如何保证挂掉一个服务后还能100%请求成功呢?1、使用Hystrix2、让zuul只路由到活着的那个服务: 添加依赖: <dependency> <groupId>com.squareup.o原创 2017-04-14 18:07:43 · 21411 阅读 · 4 评论 -
如何实现Spring Cloud微服务挂掉之后自动重启
微服务迟早是要部署在Linux系统上的,当网络不稳定就会挂掉,但是挂掉后手动去重启是十分麻烦的,下面就以Eureka为例配合shell脚本来实现自动重启。1、启动一台Eureka:20984 20490 99 17:57 pts/0 00:00:25 java -jar /usr/local/server/micro-service/micro-eureka-server-0.0.1-SNAP原创 2017-04-14 18:25:21 · 19039 阅读 · 0 评论 -
为什么spring cloud服务启动之后回到命令行会自动挂掉
使用nohup命令就不会了! 例:jar包:micro-service/micro-eureka-server-0.0.1-SNAPSHOT.jar启动命令:nohup java -jar micro-service/micro-eureka-server-0.0.1-SNAPSHOT.jar &启动之后用 ctrl+c 回到命令行就不会挂掉了,想要看看启动起来没有可以查看进程:ps -ef |原创 2017-04-14 23:09:55 · 10072 阅读 · 0 评论 -
分布式服务化系统一致性(分布式事务、ACID、BASE、CAP)原理与解决方案
1、背景 一致性是一个抽象的、具有多重含义的计算机术语,在不同应用场景下,有不同的定义和含义。在传统的IT时代,一致性通常指强一致性,强一致性通常体现在你中有我、我中有你、浑然一体;而在互联网时代,一致性的含义远远超出了它原有的含义,在我们讨论互联网时代的一致性之前,我们先了解一下互联网时代的特点,互联网时代信息量巨大、需要计算能力巨大,不但对用户响应速度要求快,而且吞吐量指标也要向外扩展(既:转载 2017-04-18 09:41:41 · 24577 阅读 · 0 评论 -
NUMBEROF_RETRIES_NEXTSERVER_EXCEEDED、NUMBEROF_RETRIES_EXCEEDED
先说一下场景:请求一个url,第一次会出现这个错误,后面的请求就不会。原因:是ribbon的MaxAutoRetriesNextServer数量超过了我们总的服务器-1,这个东西比较玄乎,叫做“区域感知负载均衡”。我的配置信息:# 在同一个服务器上的最大重试数 (不包括第一次重试) ribbon.MaxAutoRetries=1 # 最大重试服务器数量(不包括第一台服务器) ribbon.M原创 2017-04-21 13:45:11 · 6748 阅读 · 3 评论 -
如何解决Eureka Server不剔除已关停的节点的问题?
背景:由于Eureka拥有自我保护机制,当其注册表里服务因为网络或其他原因出现故障而关停时,Eureka不会剔除服务注册,而是等待其修复。这是AP的一种实现。 为了让其有精准的 CP健康检查,可以采取让其剔除不健康节点。server端:eureka.server.enable-self-preservation//(设为false,关闭自我保护主要)eureka.server.evict原创 2017-05-01 09:52:30 · 27910 阅读 · 6 评论 -
Eureka注册服务列表显示ip+端口
Eureka服务注册列表默认是显示主机名+端口,要想更方便地知道是哪台主机就需要查看ip+端口。client端配置:eureka: instance: preferIpAddress: true instance-id: ${spring.cloud.client.ipAddress}:${server.port}效果:原创 2017-05-01 10:10:01 · 25274 阅读 · 6 评论 -
什么是分布式系统中的幂等性
现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者restful,既然是通信,那么就有可能再服务器处理完毕后返回结果的时候挂掉,这个时候用户端发现很久没有反应,那么就会多次点击按钮,这样请求有多次,那么处理数据的结果是否要统一呢?那是肯定的!尤其再支付场景。幂等性:就是用户对于同一操作发转载 2017-05-02 15:36:38 · 20911 阅读 · 2 评论 -
分布式系统的接口幂等性设计
概念幂等性, Idempotence, 这个词来源自数学领域, 百科 上一元运算的幂等性解释如下: > 设 f 为一由 {x} 映射至 {x} 的一元运算, 则 f 为幂等的, 当对于所有在 {x} 内的 x: > f(f(x)) = f(x) > 特别的是,恒等函数一定是幂等的,且任一常数函数也都是幂等的。幂等性衍生到软件工程中, 它的语义是指: 函数/接口可以使用相同的参数重复执行, 不应该影响转载 2017-05-02 18:00:22 · 17007 阅读 · 5 评论 -
Swagger-UI与Spring Cloud整合与安全设置
swagger ui是一个API在线文档生成和测试的利器,在某种程度上可以媲美常用的postman,网上有很多它的整合教程,但是没有考虑到安全问题,下面是它的整合流程。1、maven依赖: <!-- Swagger --> <dependency> <groupId>io.springfox</groupId> <artifact原创 2017-05-23 14:38:35 · 19355 阅读 · 8 评论 -
Spring Cloud生态圈简介
说到Spring Cloud就不得不提一下微服务,什么是微服务呢?就是Microservice,字面意思来看就是小服务,小型服务,微小型服务,然而它是与传统服务的相对概念。承载传统服务的Web项目,所有功能集成到一个系统,最终打包成一个war包,部署于Web容器,或单机,或集群,基本上没有什么外部的依赖,其有如下特点: (优点) - 开发简单直接,集中式管理 - 基本不会重复开发 -原创 2017-03-01 22:21:06 · 18289 阅读 · 4 评论