202010-08 Spring Cloud Data Flow初体验以Local模式运行 1前言SpringCloudDataFlow是什么,虽然已经出现一段时间了,但想必很多人不知道,因为在项目中很少有人用。不仅找不到很多中文资料,英文资料也一样少的可怜。这让探索的路更加艰辛,也更加有趣吧。SpringCloudDataFlow是基于微服务的,专门用于流式和批式数据处理的框架。2基本概念2.1数据处理模式数据处理有两种模式,分别是Streaming流式处理和Batch批次处理。Streaming是长时间一直存在的,你数据来了我就处理,没来... 继续阅读 >
202010-08 如何把Spring Cloud Data Flow部署在Kubernetes上 1前言SpringCloudDataFlow在本地跑得好好的,为什么要部署在Kubernetes上呢?主要是因为Kubernetes能提供更灵活的微服务管理;在集群上跑,会更安全稳定、更合理利用物理资源。SpringCloudDataFlow入门简介请参考:SpringCloudDataFlow初体验,以Local模式运行2部署DataFlow到Kubernetes以简单为原则,我们依然是基于Batch任务,不部署与Stream相关的组件。2.1下载GitHub代码我们要基于官方提供的部署代码进行修改,... 继续阅读 >
202010-08 SpringBoot + Spring Cloud Consul 服务注册和发现详细解析 什么是ConsulConsul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案,Consul的方案更“一站式”,内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其它工具(比如ZooKeeper等)。使用起来也较为简单。Consul使用Go语言编写,因此具有天然可移植性(支持Linux、windows和MacOSX);安装包仅包含一个可执行... 继续阅读 >
202010-08 详解SpringCloudGateway内存泄漏问题 SpringCloudGateway内存泄漏问题项目完善差不多,在进入压力测试阶段期间,发现了gateway有内存泄漏问题,问题发现的起因是,当时启动一台gateway,一台对应的下游应用服务,在压力测试期间,发现特别不稳定,并发量时高时低,而且会有施压机卡住的现象,然后找到容器对应的宿主机,并使用containerstats命令观察内存,经过观察发现,压力测试时内存会暴涨,并由于超过限制最大内存导致容器挂掉(这里由于用的swarm所以会自动选择... 继续阅读 >
202010-07 基于Nacos实现Spring Cloud Gateway实现动态路由的方法 简介该文档主要介绍以Nacos为配置中心,实现SpringCloudGateWay实现动态路由的功能。SpringCloudGateway启动时候,就将路由配置和规则加载到内存里,无法做到不重启网关就可以动态的对应路由的配置和规则进行增加,修改和删除。通过nacos的配置下发的功能可以实现在不重启网关的情况下,实现动态路由。集成SpringCloudGateWay集成spring-cloud-starter-gateway:路由转发、请求过滤(权限校验、限流以及监控等)spring-boot-... 继续阅读 >
202010-01 Spring Cloud Stream微服务消息框架原理及实例解析 随着近些年微服务在国内的盛行,消息驱动被提到的越来越多。主要原因是系统被拆分成多个模块后,一个业务往往需要在多个服务间相互调用,不管是采用HTTP还是RPC都是同步的,不可避免快等慢的情况发生,系统性能上很容易遇到瓶颈。在这样的背景下,将业务中实时性要求不是特别高且非主干的部分放到消息队列中是很好的选择,达到了异步解耦的效果。目前消息队列有很多优秀的中间件,目前使用较多的主要有RabbitMQ,Kafka,RocketMQ... 继续阅读 >
202009-30 Spring Cloud Gateway全局通用异常处理的实现 为什么需要全局异常处理在传统SpringBoot应用中,我们@ControllerAdvice来处理全局的异常,进行统一包装返回//摘至springcloudalibabaconsole模块处理@ControllerAdvicepublicclassConsoleExceptionHandler{@ExceptionHandler(AccessException.class)privateResponseEntity<String>handleAccessException(AccessExceptione){returnResponseEntity.status(HttpStatus.FORBIDDEN).body(e.getErrMsg());... 继续阅读 >
202009-28 Spring cloud gateway工作流程原理解析 springcloudgateway的包结构(在Idea2019.3中展示)这个包是spring-cloud-gateway-core.这里是真正的spring-gateway的实现的地方.为了证明,我们打开spring-cloud-starter-gateway的pom文件<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><a... 继续阅读 >
202009-28 IDEA 中 30 秒创建一个 Spring Cloud Alibaba 工程 如果你想使用 SpringCloudAlibaba,那么你遇到的第一个问题一定是如何快速的创建一个脚手架工程。近日,阿里巴巴发布了Spring的国内脚手架定制版AliyunJavaInitializer,因为全中文界面和流畅速度,被广大开发者热传。Spring脚手架为开发者提供了丰富的可选组件,并且可以选择多种打包方式,大大方便了开发人员的使用。Web端Spring脚手架可以帮助用户快速上手,但很多开发者也面临一个问题:在Web版本Spring... 继续阅读 >
202009-27 Spring Cloud Zuul路由网关服务过滤实现代码 Zuul简介Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/admin转发到到Admin服务,/api/member转发到到Member服务。Zuul默认和Ribbon结合实现了负载均衡的功能。引入依赖在pom.xml中主要添加spring-cloud-starter-netflix-eureka-server和spring-cloud-starter-netflix-zuul依赖<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix... 继续阅读 >
202009-27 Spring Cloud Zipkin服务端追踪服务 Zipkin简介ZipKin是一个开放源代码的分布式跟踪系统,用于收集服务的定时数据,以解决微服务架构中的延迟问题。包括数据的收集、存储、查找和展现。每个服务向Zipkin报告计时数据,Zipkin会根据调用关系通过ZipkinUI生成依赖关系图,显示了多少跟踪请求通过每个服务。该组件可以让我们通过一个Web前端轻松的收集和分析数据。例如用户每次请求服务的处理时间等,可方便的监测系统中存在的瓶颈。服务追踪说明微服务架构是... 继续阅读 >
202009-27 Spring Cloud Alibaba和Dubbo融合实现 服务提供者创建一个名为hello-dubbo-nacos-provider的服务提供者项目POM<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframewor... 继续阅读 >
202009-27 Spring Cloud Alibaba Nacos Config配置中心实现 什么是NacosConfig在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。SpringCloudAlibabaNacosConfig是SpringCloudConfig的替代方案。NacosConfig的存储配置功能为分布式系统中的外部化配置提供服务器端和客户端支持,可以在Nacos中集中管理SpringCloud应用的外部属性配置。引入依赖在pom.xml中添加spring-cloud-starter-alibaba-nacos-config依赖... 继续阅读 >
202009-25 spring-cloud-gateway降级的实现 前言本文主要研究一下springcloudgateway如何集成hystrix。当下游接口负载很大,或者接口不通等其他原因导致超时,如果接口不熔断的话将会影响到下游接口得不到喘息,网关也会因为超时连接一直挂起,很可能因为一个子系统的问题导致整个系统的雪崩。所以我们的网关需要设计熔断,当因为熔断器打开时,网关将返回一个降级的应答。Maven配置添加hystrix依赖pom.xml<dependency><groupId>org.springframework.cloud... 继续阅读 >
202009-25 springCloud服务注册Eureka实现过程图解 介绍Eureka是Netfix开发的,一个基于Rest服务的,服务注册与发现的组件。主要包括两个组件:EurekaServer和EurekaClientEurekaServer:注册中心,提供服务注册与发现EurekaClient:java客户端(通常就是微服务中的客户端和服务端)上图简要描述了Eureka的基本架构,由3个角色组成:1.EurekaServer(注册中心,相当于中介)2.ServiceProvider(服务提供方,相当于房东)3.ServiceC... 继续阅读 >
202009-24 SpringCloud URL重定向及转发代码实例 WebUI项目中,很多Springcontroller视图函数直接返回html页面,还有一些视图函数是要重定向或转发到其他的url上.redirect和forward的区别:重定向redirect:完整的重定向包含两次request-response过程,第一次是访问原始url,第二次是服务器通知客户端访问重定向后的url.重定向完成后,浏览器的地址是重定向后的url,而不是原始的url.重定向的使用场景:因为重定向会修改浏览器地址,所以form提交应该使用重定向,以... 继续阅读 >