- 博客(23)
- 收藏
- 关注
转载 Spring Cloud Alibaba之配置管理组件 - Nacos
[TOC]使用Nacos管理配置为什么要需要配置管理?在微服务架构中,每个微服务都有可能会存在多个实例,为了保证同一微服务不同实例的配置文件内容一致,我们就需要有一个服务可以对微服务项目的配置文件进行统一管理,通常我们将其称之为统一配置管理中心。因为如果配置文件的内容不一致,有可能会导致同一微服务的不同实例在行为上发生差异,从而导致一些错误。除此之外,在企业开发中还要求项目在不同环境使...
2019-09-14 10:35:12
443
转载 微服务的用户认证与授权杂谈(下)
[TOC]AOP实现登录状态检查在微服务的用户认证与授权杂谈(上)一文中简单介绍了微服务下常见的几种认证授权方案,并且使用JWT编写了一个极简demo来模拟Token的颁发及校验。而本文的目的主要是延续上文来补充几个要点,例如Token如何在多个微服务间进行传递,以及如何利用AOP实现登录态和权限的统一校验。为了让登录态的检查逻辑能够通用,我们一般会选择使用过滤器、拦截器以及AOP等手段来...
2019-09-08 23:10:41
496
转载 微服务的用户认证与授权杂谈(上)
[TOC]有状态 VS 无状态几乎绝大部分的应用都需要实现认证与授权,例如用户使用账户密码登录就是一个认证过程,认证登录成功后系统才会允许用户访问其账户下的相关资源,这就是所谓的授权。而复杂点的情况就是用户会有角色概念,每个角色所拥有的权限不同,给用户赋予某个角色的过程也是一个授权过程。用户的登录态在服务器端分为有状态和无状态两种模式,在单体分布式架构的时代,我们为了能让Session信息...
2019-09-05 20:07:15
4141
转载 Spring Cloud Gateway - 扩展
[TOC]Spring Cloud Gateway的监控端点说到监控,就应该能想到Spring Boot Actuator。而Spring Cloud Gateway基于Actuator提供了许多的监控端点。只需要在项目中添加spring-boot-starter-actuator依赖,并将 gateway 端点暴露,即可获得若干监控端点。配置示例:management: endpoi...
2019-08-18 18:20:39
1301
转载 Spring Cloud Gateway 内置的过滤器工厂
本文基于Spring Cloud Greenwich SR2[TOC]内置的过滤器工厂这里简单将Spring Cloud Gateway内置的所有过滤器工厂整理成了一张表格,虽然不是很详细,但能作为速览使用。如下:过滤器工厂作用参数AddRequestHeader为原始请求添加HeaderHeader的名称及值AddRequestParameter为原...
2019-08-17 19:58:04
892
转载 第二代微服务网关组件 - Spring Cloud Gateway
[TOC]初识Spring Cloud Gateway简介:Spring Cloud Gateway是Spring Cloud体系的第二代网关组件,基于Spring 5.0的新特性WebFlux进行开发,底层网络通信框架使用的是Netty,所以其吞吐量高、性能强劲,未来将会取代第一代的网关组件Zuul。Spring Cloud Gateway可以通过服务发现组件自动转发请求,默认集成了R...
2019-08-17 19:19:22
885
转载 Spring Cloud Gateway 内置的路由谓词工厂
本文基于Spring Cloud Greenwich SR2[TOC]内置的路由谓词工厂Spring Cloud Gateway内置了一系列的路由谓词工厂,以便我们可以在开发中灵活的使用Gateway进行请求转发。我这里将Gateway内置的所有路由谓词工厂整理成了表格,如下:路由谓词工厂作用参数After当且仅当请求时的时间After配置的时间时,才转发该请求...
2019-08-16 14:11:46
277
转载 Spring Cloud Stream总结
概念1、group:组内只有1个实例消费。如果不设置group,则stream会自动为每个实例创建匿名且独立的group——于是每个实例都会消费组内单次只有1个实例消费,并且会轮询负载均衡。通常,在将应用程序绑定到给定目标时,最好始终指定consumer group2、destination binder:与外部消息系统通信的组件,为构造 Binding提供了 2 个方法,分别是 ...
2019-08-11 21:34:45
355
转载 Spring Cloud Stream异常处理
应用处理当消费者在处理接收到的消息时,有可能会由于某些原因而抛出异常。若希望对抛出来的异常进行处理的话,就需要采取一些异常处理手段,异常处理的方式可分为三种:应用层面的处理、系统层面的处理以及通过RetryTemplate进行处理。本小节先来介绍较为常用的应用层面的异常处理方式,该方式又细分为局部处理和全局处理。局部处理Stream相关的配置内容如下:spring: cloud: ...
2019-08-11 21:00:23
1338
转载 Spring Cloud Stream实现消息过滤的三种主要方式
消息过滤消息过滤是指消费者不希望消费topic里的所有消息,而是只消费部分特定的消息。从topic中挑选出这些特定的消息,就是所谓的消息过滤。通过消息过滤可以实现消息的分流处理,例如生产者生产的消息,header可能都是不尽相同的,这样我们就可以编写两个或多个消费者,对不同header的消息进行针对性的处理。Spring Cloud Stream实现消息过滤的方式主要有三种,一是使用@Stre...
2019-08-11 18:49:50
1321
转载 Spring Cloud Stream - 构建消息事件驱动的微服务
承接上文:Spring Cloud Alibaba RocketMQ - 构建异步通信的微服务Spring Cloud Stream简介Spring Cloud Stream是什么:Spring Cloud Stream是Spring Cloud的一个子项目,是一个能让我们更加方便操作MQ的框架,其目的用于构建与消息中间件连接的高度可伸缩的消息事件驱动的微服务简单来说Spring ...
2019-08-11 14:28:52
486
转载 Spring Cloud Alibaba RocketMQ - 构建异步通信的微服务
引入MQ后的架构演进MQ的选择消息队列对比参照表:RocketMQ vs. ActiveMQ vs. Kafka:参考至:消息队列对比参照表RocketMQ vs. ActiveMQ vs. KafkaCentOS7上搭建RocketMQ环境要求:CentOS 7.264位JDK1.8+4G+的可用磁盘空间1、下载RocketMQ的二进制包,我这里使用的是4....
2019-08-03 22:07:00
678
转载 Spring Cloud Alibaba之服务容错组件 - Sentinel [规则持久化篇]
规则持久化 - 拉模式在Sentinel控制台对某个微服务的接口资源配置了流控、降级等规则后,若重启了该微服务,那么配置的相关规则就会丢失,因为Sentinel默认将规则存放在内存中。每次重启微服务都得重新配置规则显然是不合理的,所以我们需要将配置好的规则进行持久化存储,而Sentinel提供了两种规则持久化模式:拉模式(pull)推模式(push)本小节先介绍一下拉模式(pull),...
2019-08-03 15:01:56
2216
转载 Spring Cloud Alibaba之服务容错组件 - Sentinel [代码篇]
Sentinel与控制台通信原理在基础篇中我们学习了如何为项目整合Sentinel,并搭建了Sentinel的可视化控制台,介绍及演示了各种Sentinel所支持的规则配置方式。本文则对Sentinel进行更进一步的介绍。首先我们来了解控制台是如何获取到微服务的监控信息的:微服务集成Sentinel需要添加spring-cloud-starter-alibaba-sentinel依赖,该依...
2019-08-01 22:07:59
2705
转载 Spring Cloud Alibaba之服务容错组件 - Sentinel [基础篇]
常见容错方案在微服务等分布式架构中,服务容错是老生常谈的问题了,我们都知道在微服务架构中会存在多个微服务,而绝大部分微服务之间都会存在调用关系,若由于某个底层服务不可用从而产生连锁反应,导致一系列的上层服务崩溃、故障,这种现象被称为雪崩效应或级联故障。如下图所示:所以在微服务等分布式架构中,能够防御服务雪崩效应的容错方案是必不可少的,常见的容错方案如下:1、超时:设置请求超时时间,让请求...
2019-08-01 12:10:29
1262
转载 声明式HTTP客户端 - Spring Cloud OpenFeign
Feign什么是Feign:Feign是Netflix开源的声明式Http客户端关于Feign的基本使用方式在微服务之间的通信的方式一文中介绍过,这里不再赘述Feign的组成:Feign.Builder:所有的FeignClient都是由Feign.Builder构建Client:feign.Client.Default内部实际用的是HttpURLConnection,而Load...
2019-07-29 20:59:15
270
转载 数据库之锁模块
MyISAM与InnoDB关于锁方面的区别MyISAM与InnoDB关于锁方面的区别:MyISAM默认使用的是表级锁,不支持行级锁InnoDB默认用的是行级锁,也支持表级锁InnoDB支持事务,在事务中被加锁的数据行需要 等事务commit之后才会统一解锁,否则不会解锁。而MyISAM不支持事务,所以不会有这个问题MyISAM和InnoDB都支持共享锁和排他锁,读锁共享,写锁排他In...
2019-07-28 22:13:18
154
转载 数据库之索引模块
索引模块除了是数据库最重要的模块之一,也是面试中最经常被问到的,关于索引模块常见问题如下:为什么要使用索引什么样的信息能成为索引索引的数据结构密集索引和稀疏索引的区别为什么要使用索引:数据库中最小存储单位通常是块或者页,每个块里面都会包含多行数据。而我们在查询一些没有使用索引的数据时,通常都需要进行全表扫描,也就是说需要加载所有的块,然后逐个遍历这些块直到查找出我们需要查找的数据...
2019-07-28 14:01:26
252
转载 Spring Cloud Alibaba之负载均衡组件 - Ribbon
负载均衡我们都知道在微服务架构中,微服务之间总是需要互相调用,以此来实现一些组合业务的需求。例如组装订单详情数据,由于订单详情里有用户信息,所以订单服务就得调用用户服务来获取用户信息。要实现远程调用就需要发送网络请求,而每个微服务都可能会存在有多个实例分布在不同的机器上,那么当一个微服务调用另一个微服务的时候就需要将请求均匀的分发到各个实例上,以此避免某些实例负载过高,某些实例又太空闲,所以在这...
2019-07-27 20:11:19
5717
转载 Spring Cloud Alibaba之服务发现组件 - Nacos
服务发现为了实现多个微服务之间的调用,我们除了需要Feign这种调用组件外还得依赖服务发现组件。主要的原因是每个微服务所在的机器ip并非总是固定的,并且每个微服务都可能部署多个实例在不同的机器上,所以我们不能把依赖的微服务ip地址写在代码或配置文件里,我们需要有个组件去动态的管理,这就是为什么微服务架构里服务发现功能是必须的。那么服务发现组件是怎么实现服务发现的呢?我们以大家比较熟悉的MySQ...
2019-07-26 19:57:07
1873
转载 什么是Spring Cloud Alibaba
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。...
2019-07-25 17:10:41
123
转载 Java多线程与并发笔记
synchronizedsynchronized主要是用于解决线程安全问题的,而线程安全问题的主要诱因有如下两点:存在共享数据(也称临界资源)存在多条线程共同操作这些共享数据解决线程安全问题的根本方法:同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再对共享数据进行操作所以互斥锁是解决问题的办法之一,互斥锁的特性如下:互斥性:即在同一时间只允许一个...
2019-07-21 20:13:42
194
转载 Java底层:GC相关
垃圾回收之垃圾标记算法对象被判定为垃圾的标准:该对象没有被其他对象引用判定对象是否为垃圾的算法:引用计数算法,优点:执行效率高,程序执行受影响较小;缺点:无法检测出循环引用的情况,容易导致内存泄露通过判断对象的引用数量来决定对象是否可以被回收每个对象实例都有一个引用计数器,被引用则+1,完成引用即引用结束则-1综上,任何引用计数为0的对象实例就可以被当作垃圾收集可达性分析...
2019-07-18 22:33:41
138
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人