Spring Cloud
Spring分布式全家桶
CallMeJacky
如果你有梦想的话,就要去捍卫它 。
展开
-
OAuth2.0公钥私钥授权技术
传统的资源服务授权流程如下:客户端先去授权服务器申请令牌,申请令牌后,携带令牌访问资源服务器;资源服务器访问授权服务器校验令牌的合法性;如果校验成功,授权服务器返回用户信息给资源服务器;资源服务器接收到校验成功的结果后,返回客户端请求的资源。传统授权方法的问题是用户每次请求资源服务,资源服务都需要携带令牌访问认证服务去校验令牌的合法性,并根据令牌获取用户的相关信息,性能低下。为了避免每次资源服务器反复校验令牌的合法性,我们可以利用公钥私钥完成对令牌的加密,如果加密解密成功,则表示令牌合法,原创 2020-08-21 17:51:59 · 3282 阅读 · 0 评论 -
Spring Security Oauth 2.0第三方授权认证
在开始之前,首先介绍一下认证和授权。身份认证用户访问系统资源时,系统要求验证用户的身份信息,身份合法则方可继续访问。常见的用户身份认证的表现形式有:用户名密码登陆指纹打卡用户授权用户认证通过后去访问系统的资源,系统会判断当前用户是否拥有访问资源的权限,只允许访问有权限的资源,没有权限的资源无法访问。1. 单点登陆单点登陆是指用户在一个系统中登陆之后,就可以访问所有相互信任的应用系统。分布式系统要实现单点登陆,通常是将认证系统独立 抽取出来。2. Oauth 2.0OAuth(开放授原创 2020-08-21 15:43:27 · 2494 阅读 · 0 评论 -
SpringBoot与SpringCloud版本控制与兼容
在整合使用SpringBoot和SpringCloud开发过程中,遇到了一些版本兼容性问题。1. 版本自动化控制spring bootspring-boot-starter-parent是一个依赖管理器的pom文件。它的作用就是管理boot需要的所有依赖,从而统一各种jar的版本号,避免了版本不一致而出现的问题。所以,引入其他的依赖就可以省略版本号。当然也可以加上指定的版本号,从而取代默认的。 <parent> <groupId>org.springfr原创 2020-08-21 11:31:40 · 1299 阅读 · 0 评论 -
Spring Cloud Gateway微服务网关限流与JWT鉴权
不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口,存在一些问题:页面需要对接多个域名,非常繁琐;安全隐患,服务端暴露的接口增加,增加服务器受攻击的面积;跨域问题;认证复杂。微服务网关的主要作用:整合各个微服务的功能,形成一套系统;在微服务网关中实现日志的统一记录;实现用户的操作跟踪;实现限流操作;用户权限认证操作。实现微服务网关的技术有很多:nginx:一个高性能HTTP和反向代理web服务器,同时提供了IMAP/POP3/SMTP服务;(一般用于原创 2020-08-21 00:34:01 · 3679 阅读 · 3 评论 -
Dubbo使用Hystrix实现服务熔断
Dubbo中没有提供熔断限流和自动权重调整等服务治理机制。因此,这里采用SpringCloud中的Hystrix实现服务熔断。1.熔断器简介在微服务架构中,根据业务来拆分成一个个服务、服务与服务之间可以通过RPC相互调用。为了保证高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务造成灾难原创 2020-07-08 19:42:13 · 1598 阅读 · 0 评论 -
PXC数据库集群的负载均衡
前一篇博客介绍了PXC数据库集群的搭建过程,但是这里有一个问题,虽然搭建了数据库集群,但是如果不使用数据库负载均衡,单节点处理所有的请求,还是会造成单个节点负载过高,数据库系统的性能较差。本篇博客将会介绍如何通过Haproxy(转发器)做负载均衡,使得请求能够被均匀地分发给每一个节点,单节点负载得到降低,提高了数据库系统的性能。指标HaproxyNginxApacheLVS是否免费免费免费免费免费支持虚拟机支持支持支持不支持HTTP协议支持支持原创 2020-07-27 17:24:19 · 673 阅读 · 0 评论 -
PXC数据库集群搭建
传统的单节点数据库无法应对高负载,满足大型互联网的需求。同时,单节点数据库没有冗余设计,无法保证高可用。因此,需要数据库集群技术。MySQL作为一种免费的数据库,受到了业界的喜爱。常见的MySQL集群方案有Replication和PXC (Percona XtraDB Cluster)两种。指标ReplicationPXC速度快慢数据一致性弱一致性,异步复制,无法保证数据的一致性强一致性,同步复制,事务在所有的集群节点要么同时提交,要么不提交适用场景低价值数据原创 2020-07-27 11:23:37 · 999 阅读 · 1 评论 -
Elasticsearch 2.6.8安装与使用
ElasticSearch是目前全文搜索引擎的首选,它可以快速存储、搜索和分析海量的数据。SpringBoot通过整合Spring Data ElasticSearch为我们提供了非常便捷的检索功能支持。ElasticSearch是一个分布式搜索服务,提供了Restful API,底层基于Lucene,采用多shard(分片)的方式保证数据的安全,并且提供自动resharding的功能,github等大型的站点也采用了ElasticSearch技术。在Docker中安装ElasticSearchdoc原创 2020-07-25 14:11:35 · 226 阅读 · 0 评论 -
消息中间件RabbitMQ转发策略详解
上次介绍了消息中间键的基本概念和原理,本篇将介绍RabbitMQ的基本使用。本篇将介绍交换器的三种常见的转发策略,即direct、fanout和topic。如下图所示,有三个不同转发策略的交换器,以及4个消息队列。这里首先添加三个交换器。接着,添加消息队列。...原创 2020-07-24 10:07:26 · 1098 阅读 · 0 评论 -
Canal数据同步原理简介及应用
在使用缓存时,不可避免地会遇到数据库同步问题,即当Mysql数据库中的数据更新之后,需要同步更新Redis缓存。一种做法是在更新数据库时删除Redis中的缓存。但是这种方式无疑会将业务逻辑复杂化,稍微不注意就有可能忘记更新缓存,导致数据不一致的问题。因此,另一种较为常见的做法是订阅Mysql的增加、修改和删除操作,当数据库数据发生变动时,自动监听数据的变化,更新缓存。Canal就是做这个事情的。1. Canal工作原理canal是应阿里存在杭州和美国的双机房部署,存在跨机房同步的业务需求而提出的。通过原创 2020-08-13 11:14:46 · 3091 阅读 · 0 评论 -
OpenResty并发限流技术
对于一个网站来说,尽管做了多级缓存,但是,当某一时间内有大量的并发同时访问时,依旧会面临着一些问题,例如,之前上学的时候每次进行评教,都需要按照学院分批进行评教,另外,限流对于防止DDOS攻击也是非常有效的一种解决方案,根据IP限制用户对网站的访问速率。这一点和实际生活中的地铁限流很类似,入站口设置一个弯弯曲曲的通道来限制入站的速率,这样,无论多少连接进来,都保证地铁内部不会过于拥挤,保证系统的正常运行。本章内容紧接着上篇:OpenResty简介与缓存测试Nginx限流策略有两种:根据访问速率限制,原创 2020-08-13 01:51:00 · 2217 阅读 · 0 评论 -
OpenResty简介与缓存测试
OpenResty是一个基于Nginx的可伸缩的web应用服务器,由国人章亦春发起,提供了很多高质量的第三方模块。web开发人员可以使用Lua脚本调用Nginx支持的各种C和Lua模块。其最突出的特点是能够快速构造出承受10K以上的并发连接响应的超高性能web应用系统,目前,360、阿里云、新浪、腾旭都是OpenResty的深度用户。OpenResty可以简单地理解成封装了Nginx,并且集成Lua脚本,开发人员只需要简单地使用已经提供好的Lua脚本,而不需要自己编写复杂的Lua脚本调用Nginx。本.原创 2020-08-12 00:38:04 · 831 阅读 · 0 评论 -
FastDFS分布式文件系统从入门到精通
1. FastDFS简介FastDFS是一个开源的轻量级分布式文件系统,它能够对文件进行管理,例如:文件同步、上传和下载等,解决了大容量存储和负载均衡问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等。从上图可以看出,最终客户端还是需要访问对应的Storage,Tracker在这里所起的作用是负载均衡和调度。2. 上传流程上传成功后,返回的文件索引信息包括:组名:文件上传后所在的Storage组名称;虚拟磁盘路径:Storage中配置的虚拟路径,与磁盘选项store_path对应原创 2020-08-06 01:45:11 · 610 阅读 · 0 评论