spring cloud
Gogym
热爱生活,热爱技术。
展开
-
springcloud(一):大话Spring Cloud
研究了一段时间spring boot了准备向spirng cloud进发,公司架构和项目也全面拥抱了Spring Cloud。在使用了一段时间后发现Spring Cloud从技术架构上降低了对大型系统构建的要求,使我们以非常低的成本(技术或者硬件)搭建一套高效、分布式、容错的平台,但Spring Cloud也不是没有缺点,小型独立的项目不适合使用,另外对分布式事物的支持暂时也没有。转载 2017-11-20 12:02:58 · 519 阅读 · 0 评论 -
spring boot 解决Tomcat 报 The valid characters are defined in RFC 7230 and RFC 3986 的问题
tomcat 8.0以后对请求URL做了严格的过滤就是严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。这可能会遇到一个问题,比如参数中传了一段j...原创 2018-12-18 17:09:35 · 15673 阅读 · 13 评论 -
java mybatis 多数据源,动态数据源 使用
做项目,有时候需要一个工程里配置多个数据源。网上也有很多啦。我这里写一个比较全,实现相对优雅的方式吧。使用mybatis的时候,可以不用多个DAO。一个DAO全部搞定直接上代码:1、先添加需要的数据源配置# 数据源,默认配置Druidspring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.dr...原创 2018-04-27 11:03:25 · 827 阅读 · 1 评论 -
zuulGateway 通过filter统一修改返回值
使用spring cloud有时候我们给客户端返回内容的时候,往往需要添加一些额外的东西。比如加密,多添加一个返回值等等。当然可以在方法里面处理,但如果方法很多,需要统一处理的,就很不方便了,这时候可以通过zuulGateway的filter来统一处理。直接看代码,很简单:import java.io.InputStream;import java.nio.charset.Charset;...原创 2018-04-08 11:55:46 · 7382 阅读 · 0 评论 -
zuulGateway网关添加路由异常熔断
zuulGateway是spring cloud中很不错的组件,使用频率很高。使用过程中偶尔可能遇到服务路由异常的情况,如果没有异常熔断,可能会造成应用无响应,严重甚至造成系统雪崩。所以一般需要加上熔断机制。直接看代码,很简单:/* * 文件名:ServerFallback.java 版权:Copyright by www.poly.com 描述: 修改人:gogym 修改时间:2018年1月3...原创 2018-04-08 11:43:20 · 1834 阅读 · 0 评论 -
中小型互联网公司微服务实践-经验和教训
上次写了一篇文章叫Spring Cloud在国内中小型公司能用起来吗?介绍了Spring Cloud是否能在中小公司使用起来,这篇文章是它的姊妹篇。其实我们在这条路上已经走了一年多,从16年初到现在。在使用Spring Cloud之前我们对微服务实践是没有太多的体会和经验的。从最初的开源软件云收藏来熟悉Spring Boot,到项目中的慢慢使用,再到最后全面拥抱Spring Cloud。这转载 2017-11-23 09:02:34 · 769 阅读 · 0 评论 -
springcloud(十):服务网关zuul
前面的文章我们介绍了,Eureka用于服务的注册于发现,Feign支持服务的调用以及均衡负载,Hystrix处理服务的熔断防止故障扩散,Spring Cloud Config服务集群配置中心,似乎一个微服务框架已经完成了。我们还是少考虑了一个问题,外部的应用如何来访问内部各种各样的微服务呢?在微服务架构中,后端服务往往不直接开放给调用端,而是通过一个API网关根据请求的url,路由到相应的转载 2017-11-23 09:01:31 · 519 阅读 · 0 评论 -
springcloud(九):配置中心和消息总线(配置中心终结版)
我们在springcloud(七):配置中心svn示例和refresh中讲到,如果需要客户端获取到最新的配置信息需要执行refresh,我们可以利用webhook的机制每次提交代码发送请求来刷新客户端,当客户端越来越多的时候,需要每个客户端都执行一遍,这种方案就不太适合了。使用Spring Cloud Bus可以完美解决这一问题。Spring Cloud BusSp转载 2017-11-23 09:00:56 · 848 阅读 · 0 评论 -
springcloud(八):配置中心服务化和高可用
在前两篇的介绍中,客户端都是直接调用配置中心的server端来获取配置文件信息。这样就存在了一个问题,客户端和服务端的耦合性太高,如果server端要做集群,客户端只能通过原始的方式来路由,server端改变IP地址的时候,客户端也需要修改配置,不符合springcloud服务治理的理念。springcloud提供了这样的解决方案,我们只需要将server端当做一个服务注册到eureka中,cli转载 2017-11-23 09:00:19 · 463 阅读 · 0 评论 -
springcloud(七):配置中心svn示例和refresh
上一篇springcloud(六):配置中心git示例留了一个小问题,当重新修改配置文件提交后,客户端获取的仍然是修改前的信息,这个问题我们先放下,待会再讲。国内很多公司都使用的svn来做代码的版本控制,我们先介绍以下如何使用svn+Spring Cloud Config来做配置中心。svn版本同样先示例server端的代码,基本步骤一样。1、添加依赖转载 2017-11-23 08:59:48 · 533 阅读 · 0 评论 -
springcloud(六):配置中心git示例
随着线上项目变的日益庞大,每个项目都散落着各种配置文件,如果采用分布式的开发模式,需要的配置文件随着服务增加而不断增多。某一个基础服务信息变更,都会引起一系列的更新和重启,运维苦不堪言也容易出错。配置中心便是解决此类问题的灵丹妙药。市面上开源的配置中心有很多,BAT每家都出过,360的QConf、淘宝的diamond、百度的disconf都是解决这类问题。国外也有很多开源的配置中心Apac转载 2017-11-23 08:59:17 · 642 阅读 · 0 评论 -
springcloud(五):熔断监控Hystrix Dashboard和Turbine
Hystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以在直观地看到各Hystrix Command的请求响应时间, 请求成功率等数据。但是只使用Hystrix Dashboard的话, 你只能看到单个应用内的服务信息, 这明显不够. 我们需要一个工具能让我们汇总系统内多个服务的数据并显示到Hystrix Dashboard上,转载 2017-11-23 08:58:39 · 496 阅读 · 0 评论 -
springcloud(四):熔断器Hystrix
说起springcloud熔断让我想起了去年股市中的熔断,多次痛的领悟,随意实施的熔断对整个系统的影响是灾难性的,好了接下来我们还是说正事。熔断器雪崩效应在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用转载 2017-11-23 08:57:54 · 463 阅读 · 0 评论 -
springcloud(三):服务提供与调用
上一篇文章我们介绍了eureka服务注册中心的搭建,这篇文章介绍一下如何使用eureka服务注册中心,搭建一个简单的服务端注册服务,客户端去调用服务使用的案例。案例中有三个角色:服务注册中心、服务提供者、服务消费者,其中服务注册中心就是我们上一篇的eureka单机版启动既可,流程是首先启动注册中心,服务提供者生产服务并注册到服务中心中,消费者从服务中心中获取服务并执行。转载 2017-11-23 08:57:03 · 342 阅读 · 0 评论 -
springcloud(二):注册中心Eureka
Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。也是springcloud体系中最重要最核心的组件之一。背景介绍服务中心服务中心又称注册中心,管理各种服务功能包括服务的注册、发现、熔断、负载、降级等,比如dubbo admin后台的各种功能。有了服务中转载 2017-11-20 12:03:59 · 484 阅读 · 0 评论 -
解决通过阿里云SLB多层代理后,spring boot工程获取不到客户端真实IP的问题
现在很多服务都部署到阿里云上,免不了使用SLB做负载均衡,然后又通过了nginx等代理。如果这个时候你想获取客户端访问的真实ip,你会发现一直拿到的是127.0.0.1 下面一起来解决这个问题。现在来解决一下:首先:配置一下SLB监听。确定获取真实IP已经开启,一般默认都是开启的,如图:二、配置nginx转发ip信息,基本都有这段配置:proxy_set_header Ho...原创 2018-12-18 17:37:21 · 3147 阅读 · 1 评论