Spring Cloud

深入理解Spring Cloud Ribbon客户端负载均衡原理(一 实现服务实例地址转换)

随声附和 提交于 2020-05-04 04:51:15
在使用spring cloud搭建微服务架构时,需要进行负载均衡操作。负载均衡分为硬件负载均衡和软件负载均衡,软件负载均衡又分为服务端负载均衡和客户端负载均衡。本系列主要介绍利用Spring cloud Ribbon 和RestTemplate实现客户端负载均衡,本文主要介绍将逻辑名为host的URI转化为服务实例的过程。 一、客户端负载均衡接口LoadBalanceClient 在进行开发时,要实现对基于RestTemplate的客户端负载均衡,只需在创建RestTemplate对象时,添加LoadBalanced注解即可实现。通过查看源码,该注解是通过LoadBalanceClient接口实现其功能。LoadBalanceClient接口定义三个方法,源码如下: 1 public interface LoadBalancerClient { 2 ServiceInstance choose(String var1); 3 4 <T> T execute(String var1, LoadBalancerRequest<T> var2) throws IOException; 5 6 URI reconstructURI(ServiceInstance var1, URI var2); 7 } choose()方法用来从负载均衡器中挑选一个服务实例。 execute(

Zuul上实现限流(spring-cloud-zuul-ratelimit)

只愿长相守 提交于 2020-05-03 20:32:02
简述 Spring Cloud Zuul RateLimit项目Github地址: https://github.com/marcosbarbero/spring-cloud-zuul-ratelimit 该包实现了在Zuul对每个服务进行限流。提供的几种限流方式: 1. 认证用户(Authenticated User) 使用已认证的用户名(username)或'anonymous' 2. 原始请求(Request Origin) 使用用户的原始请求 3. URL 使用上游请求的地址 4. 针对每个服务的全局配置 该方式不会验证Request Origin,Authenticated User或URL 使用该方式只需不设置‘type’参数即可 使用方式 pom.xml增加依赖: <dependency> <groupId>com.marcosbarbero.cloud</groupId> <artifactId>spring-cloud-zuul-ratelimit</artifactId> <version>1.3.2.RELEASE</version> </dependency> 配置示例: zuul: ratelimit: key-prefix: your-prefix #对应用来标识请求的key的前缀 enabled: true repository: REDIS

SC-gateway使用简绍

社会主义新天地 提交于 2020-05-03 19:25:15
pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.bootx</groupId> <artifactId>service-gateway</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org

SpringCloud系列之集成Dubbo应用篇

只谈情不闲聊 提交于 2020-05-03 16:43:29
目录 前言 项目版本 项目说明 集成Dubbo 2.6.x 新项目模块 老项目模块 集成Dubbo 2.7.x 新项目模块 老项目模块 参考资料 系列文章 前言 SpringCloud系列开篇文章就说到了,公司新项目将入坑SpringCloud全家桶,但原先线上老项目是采用Spring+Dubbo技术栈的,新项目中的部分业务还是和老项目有点关联的,重写这一部分业务逻辑也是需要点时间,本来想通过http请求进行业务交互的,总感觉不够优雅,原先也了解过SpringCloud Alibaba,趁着这个机会捣腾捣腾。 项目版本 spring-boot-version: 2.2.5.RELEASE spring-cloud.version: Hoxton.SR3 dubbo版本会分成2.6.x系列和2.7.x系列二个版本进行说明 dubbo2.6.x <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.2.1.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId>

做了5年的Android,我转Java后台了!

只愿长相守 提交于 2020-05-02 17:41:03
很多人做Java开发4,5年后,都会感觉自己遇到瓶颈。什么都会又什么都不会,如何改变困境,为什么很多人写了7,8年还是一个码农,工作中太多被动是因为不懂底层原理。公司的工作节奏又比较快,难有机会学习架构原理,也没人教,所以这个时候,学习架构原理,扩展思维,对自己以后职业生涯尤为重要。 同样公司的两个新人,一个新人一点就通,学东西很快,有的人,学东西很慢,也很痛苦,处处都是新技术。为什么?因为那个人懂原理,万物都有规律,掌握了规律学其他东西原理相通,一触就会,不懂原理就会处处碰壁,学习很慢还很折磨。 很多程序员会有一个苦恼,工作了很久,在公司一味的增删改查,得不到技术的提高,无缘底层代码,只会用不知其原理!有不少朋友问,如何深入学习Java后端技术栈, 今天分享一个,互联网牛人整理出来的Java深入学习路线图,以及开发工具包,【 戳我进入 】学习裙。 一、阅读源码 深入的Java学习,经典源码阅读不可少: 常见的设计模式,编码必备 Spring5,做应用必不可少的最新框架 MyBatis,玩数据库必不可少的组件 画外音:大家扪心自问,除了写业务代码,看过多少优秀开源代码? 二、分布式架构 随着业务越来越复杂,数据量越来越大,并发量越来越大,单体的架构模式显然再也无法对应,作为Java后端架构师,高并发+高可用+海量数据的分布式架构体系,是必不可少的: 分布式架构原理 分布式架构策略

架构演变之路:为何要搞微服务架构?

百般思念 提交于 2020-05-02 16:47:03
有不少朋友或同事都问过我这个问题:为什么我们要搞微服务架构,一个项目把代码从头撸到尾不是很方便吗,开发更快速,部署也容易。而且一提起微服务,涉及的技术就一大堆,好像几辈子也学不完。 怎么解答这个问题呢?我想还是通过架构的发展变迁史来说起,为什么会出现现在的各种架构。只有从整体上了解了架构的脉络,我们才好更加全方位的评估一个架构。为此,我们有理由来梳理一下架构发展的来龙去脉,究竟为何会出现微服务,主要解决什么问题。微服务架构是最先进的架构吗? 本文我们来探索一下架构的变迁。以及从Java工程师的角度来看技术的发展,了解我们在讨论微服务的时候,都会涉及哪些技术。微服务的下一步将如何发展。阅读完本文,你将了解到: 软件架构的发展史 SOA架构与MSA架构的区别 微服务架构核心关注的问题是什么 如何做微服务架构的技术选型 目前架构正在朝着什么方向发展 架构升级与业务发展的关系,一定要用最前卫的架构技术吗?什么样的架构才是好的架构 微服务的难点是什么,这里主要留给大家思考,会在后续文章中进一步讲解 首先我们还是回顾一下架构的整体发展史。 0、架构发展史 架构也是随着其缺陷不断演变而来的,下面是粗略的架构演变史: 70~80s:集中式(大型机) 上世纪70年代和80年代,大型机是计算机的工作方式。 问题所在 :最初的大型计算机使用打孔卡,并且大多数计算都在批处理过程中进行。没有在线处理

SpringCloud Hystrix 监控仪表盘

有些话、适合烂在心里 提交于 2020-05-02 16:46:40
在hystrix的回退方法中做好报警通知就可以了,Hystrix的监控仪表盘在实际开发中用得不多,此处只是作为了解。 hystrix的监控可以检测消费者调用提供者的情况,hystrix是在消费者中设置的,hystrix的监控自然也是在消费者中设置的。 actuator 服务调用监控 1、在消费者中添加依赖: < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-actuator </ artifactId > </ dependency > 2、配置文件 management: endpoints: web: exposure: include: "*" 默认只会监控部分数据,此配置是监控服务调用所有的数据 3、在浏览器地址栏输入 127.0.0.1:8781/actuator/hystrix.stream ,ip、port都是消费者的 刷新一下服务调用,已经监控到数据 dashboard 仪表盘 上面密密麻麻的数据不直观,Hystrix提供了仪表盘可以将数据直观地展示出来。 可以在消费者中配置仪表盘,也可以单独写一个子模块作为仪表盘。 1、创建时勾选Spring Cloud Circuit Breaker -> Hystrix

15、Feign整合断路器监控Hystrix Dashboard

大憨熊 提交于 2020-05-02 15:47:20
Ribbon 可以整合整合断路器监控 Hystrix Dashboard , Feign 也不能少 , 本篇讲解一下 Feign 如何整合断路器监控 Hystrix Dashboard 。本篇主要整合 sc-eureka-client-consumer-feign-hystrix项目和sc-hystrix-dashboard项目。 1、 新建项目sc-feign-hystrix-dashboard ,对应的 pom.xml 文件如下 < project xmlns ="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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 </ modelVersion > < groupId > spring-cloud </ groupId > < artifactId > sc-feign-hystrix-dashboard </ artifactId > < version > 0.0.1-SNAPSHOT </

SpringCloudAlibaba微服务实战教程系列

自闭症网瘾萝莉.ら 提交于 2020-05-02 11:40:23
一、应用系列    Docker安装MySql完整教程、实操 使用到的mysql数据库的安装方案。    Docker安装Alibaba Nacos教程 docker安装单实例或集群的Nacos的注册中心方便快速开始。      实现Nacos服务注册与发现教程 通过简单的方式进行服务注册与调用     ******完善中 二、概念性的介绍      Nacos理论知识     ***** 三、官网系列      Spring官网微服务alibaba文档      SpringCloudAlibaba文档      阿里巴巴nacos官方文档      阿里巴巴Sentinal官方文档    阿里巴巴分布式事务Seata官网      阿里巴巴Dubbo使用nacos官方文档      阿里巴巴exception 四、Spring Cloud Alibaba简介 Spring Cloud Alibaba 致力于提供 微服务开发的一站式解决方案 。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。 目前 Spring