ZuulException REJECTED_SEMAPHORE_EXECUTION 是一个最近在性能测试中经常遇到的异常。查询资料发现是因为zuul默认每个路由直接用信号量做隔离,并且默认值是100,也就是当一个路由请求的信号量高于100那么就拒绝服务了,返回500。 信号量隔离 既然默认值太小,那么就在gateway的配置提高各个路由的信号量再实验。 routes: linkflow: path: /api1/** serviceId: lf stripPrefix: false semaphore: maxS…

2020年10月5日 0条评论 36点热度 阅读全文

项目地址 https://github.com/yinjihuan/kitty-cloud 前言 Kitty Cloud 开源后有以为朋友在 GitHub 上给我提了一个 issues,问为什么项目中要同时集成 Feign 和 Dubbo 两个框架来调用服务。今天就来聊一聊这个问题,然后讲下在 Kitty Cloud 中如何切换使用两种调用方式。 为什么要支持两种协议? 关于支持两种协议,我这个是一个开源项目,主要还是为了让使用者有更多的选择。当然框架本身不是我开发的,我只是使用者而已。 一种协议更统一化,两种协议…

2020年10月5日 0条评论 49点热度 阅读全文

本文,我们将学习 Spring Cloud的另一个组件:zuul,它提供微服务的网关功能,即中转站,通过它提供的接口,可以转发不同的服务。在学习 zuul 之前,我们先接着上一篇的代码,来看看服务提供者是如何提供服务的。 在服务提供者的 module 下创建 HelloController 类,添加内容如下: @RestController public class HelloController { @RequestMapping("index") public String index(){ return "H…

2020年10月2日 0条评论 46点热度 阅读全文

IT 技术发展太快了,就像浪潮一样一波接着一波,朝你迎面扑来,稍不留神就会被巨浪卷至海底而不得翻身。我们必须要学会抓住那些不变的本质或规律,只有这样才能屹立潮头而不倒,乘风破浪,做这个巨变时代的弄潮儿! 2003年,Rod Johnson 创建了 Spring,我在那一年开始了研究生实习。2005年参加工作,通信行业,主力开发语言是 C/C++。在校勤工俭学时捣鼓过 JSP,2005年前后我开始自学 Spring 搭建个人网站,那时 Java 领域最火的开发框架组合就是:Struts + Spring + Hibe…

2020年9月30日 0条评论 42点热度 阅读全文

FEBS Cloud 微服务权限系统 FEBS Cloud是一款使用Spring Cloud Greenwich.SR1、Spring Cloud OAuth2和Spring Cloud Security构建的权限管理系统,前端(FEBS Cloud Web)采用vue element admin构建。FEBS意指:Fast,Easy use,Beautiful和Safe。该系统具有如下特点: 前后端分离架构,客户端和服务端纯Token交互; 认证服务器与资源服务器分离,方便接入自己的微服务系统; 微服务防护,客户…

2020年9月27日 0条评论 47点热度 阅读全文

Spring Cloud 分布式事务管理 在微服务如火如荼的情况下,越来越多的项目开始尝试改造成微服务架构,微服务即带来了项目开发的方便性,又提高了运维难度以及网络不可靠的概率. @[toc]在说微服务的优缺点时,有对比才会更加明显,首先说一下单体式结构 单体式架构 在单体式架构中,系统通常采用分层架构模式(MVC),持久化层、表示层,业务逻辑层。架构主要存在以下问题: 系统内部互相访问,耦合紧密导致难以维护; 各业务领域需要采用相同的技术栈,难以快速应用新技术(例如使用SSH很难向SSM改造); 对系统的任何修改…

2020年9月21日 0条评论 44点热度 阅读全文

什么是网关 在微服务架构里,服务的粒度被进一步细分,各个业务服务可以被独立的设计、开发、测试、部署和管理。这时,各个独立部署单元可以用不同的开发测试团队维护,可以使用不同的编程语言和技术平台进行设计,这就要求必须使用一种语言和平台无关的服务协议作为各个单元间的通讯方式。 换句话说就是网关为所有的请求提供了统一的入口,方便我们对服务请求和响应做统一管理。 为什么要用网关 API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理授权、访问控制和流量限制等,这样 REST API 接口…

2020年9月21日 0条评论 51点热度 阅读全文

通过之前的入门示例,我们已经为trace-1和trace-2引入了Spring Cloud Sleuth的基础模块spring-cloud-starter-sleuth,实现了为各微服务的日志信息中添加跟踪信息的功能。但是,由于日志文件都离散的存储在各个服务实例的文件系统之上,仅仅通过查看日志文件来分析我们的请求链路依然是一件相当麻烦的差事,所以我们还需要一些工具来帮助我们集中的收集、存储和搜索这些跟踪信息。引入基于日志的分析系统是一个不错的选择,比如:ELK平台,它可以轻松的帮助我们来收集和存储这些跟踪日志,同时…

2020年9月9日 0条评论 38点热度 阅读全文

前面我们提到,对外提供接口通过 zuul 服务网关实现。一个大型的系统由多个微服务模块组成,各模块之间不可避免需要进行通信,一般我们可以通过内部接口调用的形式,服务 A 提供一个接口,服务 B 通过 HTTP 请求调用服务 A 的接口,为了简化开发,Spring Cloud 提供了一个基础组件方便不同服务之间的 HTTP 调用,那就是 Feign。 什么是 Feign Feign 是一个声明式的 HTTP 客户端,它简化了 HTTP 客户端的开发。使用 Feign,只需要创建一个接口并注解,就能很轻松的调用各服务提…

2020年9月8日 0条评论 59点热度 阅读全文

Spring Cloud Context:应用程序上下文服务 Spring Boot有一个关于如何使用Spring构建应用程序的主见,例如,它具有通用配置文件的常规位置,并具有用于通用管理和监控任务的端点,Spring Cloud在此基础上构建并添加了一些功能,这些功能可能是系统中的所有组件都会使用或偶尔需要的。 Bootstrap应用程序上下文 Spring Cloud应用程序通过创建“bootstrap”上下文来运转,该上下文是主应用程序的父上下文,它负责从外部源加载配置属性以及用于解密本地外部配置文件中的属性…

2020年9月8日 0条评论 59点热度 阅读全文