![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式 & 微服务
文章平均质量分 87
分布式和微服务部分
@Sup
学无止境!
展开
-
SSO单点登录
一.基础知识1、SSO概念SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。https://baike.baidu.com/item/SSO/3451380例如访问在网易账号中心(https://reg.163.com/ )登录之后 访问以下站点都是登录状态网易直播https://v.163.comopen in new window 网易博客https://blog.163.comopen in new..原创 2022-03-16 22:10:23 · 319 阅读 · 0 评论 -
分布式事务解决方案总结
分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免。首先要搞清楚:ACID、CAP、BASE理论。ACID指数据库事务正确执行的四个基本要素:原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability)CAPCAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容.原创 2022-04-29 11:23:51 · 381 阅读 · 0 评论 -
Zookeeper中的ZAB原子广播协议
作为一个优秀高效且可靠的分布式协调框架,ZooKeeper在解决分布式数据一致性问题时并没有直接使用Paxos,而是专门定制了一致性协议叫做ZAB(ZooKeeper Atomic Broadcast)原子广播协议,该协议能够很好地支持崩溃恢复。1.ZAB中的三个角色和介绍Paxos一样,在介绍ZAB协议之前,我们首先来了解一下在ZAB中三个主要的角色,Leader 领导者、Follower跟随者、Observer观察者。Leader:集群中唯一的写请求处...原创 2022-03-22 21:21:07 · 695 阅读 · 0 评论 -
微服务架构下如何保证数据的一致性
随着业务的快速发展、业务复杂度越来越高,传统单体应用逐渐暴露出了一些问题,例如开发效率低、可维护性差、架构扩展性差、部署不灵活、健壮性差等等。而微服务架构是将单个服务拆分成一系列小服务,且这些小服务都拥有独立的进程,彼此独立,很好地解决了传统单体应用的上述问题,但是在微服务架构下如何保证事务的一致性呢?从本地事务到分布式事务的演变什么是事务?回答这个问题之前,我们先来看一个经典的场景:支付宝等交易平台的转账。假设小明需要用支付宝给小红转账 100000 元,此时,小明帐号会少 100000 元,.转载 2022-05-07 21:45:44 · 3021 阅读 · 0 评论 -
高可用系统设计
1.高可用的概念及其判断标准高可用描述的是一个系统在大部分时间都是可用的,可以为我们提供服务的。高可用代表系统即使在发生硬件故障或者系统升级的时候,服务仍然是可用的。一般情况下,我们使用多少个 9 来评判一个系统的可用性,比如 99.9999% 就是代表该系统在所有的运行时间中只有 0.0001% 的时间是不可用的,这样的系统就是非常非常高可用的了!当然,也会有系统如果可用性不太好的话,可能连 9 都上不了。除此之外,系统的可用性还可以用某功能的失败次数与总的请求次数之比来衡量,比如对网站请求原创 2022-03-24 21:36:32 · 337 阅读 · 0 评论 -
分布式锁以及三种加锁方式
在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。那具体什么是分布式锁,分布式锁应用在哪些业务场景、如何来实现分布式锁呢?一 为什么要使用分布式锁我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的锁进行处理,并且可以完美的运行,毫无Bug!注意这是单机应用,后来业务发展,需要做集群,一个应用需要部署到几台机器上然后做负载均衡,大致如下图:上图可以看到,变量A存在三个服务器内存中(这个变量A主要体现是在一原创 2022-04-19 21:50:42 · 2867 阅读 · 0 评论 -
Dubbo的负载均衡策略
什么是负载均衡?先来看一下稍微官方点的解释。下面这段话摘自维基百科对负载均衡的定义:负载均衡改善了跨多个计算资源(例如计算机,计算机集群,网络链接,中央处理单元或磁盘驱动)的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间,并避免任何单个资源的过载。使用具有负载平衡而不是单个组件的多个组件可以通过冗余提高可靠性和可用性。负载平衡通常涉及专用软件或硬件。上面讲的大家可能不太好理解,再用通俗的话给大家说一下。我们的系统中的某个服务的访问量特别大,我们将这个服务部署在了多台原创 2022-03-22 19:53:46 · 2915 阅读 · 1 评论 -
JWT详解
项目中做用户身份验证和系统登录时常常会用到JWT,因此在看了一系列相关的文章后,找到了一篇总结的比较详细的博客,分享给需要的人。内容有点多,就不转载了,直接上链接吧。JWT详解_baobao555#的博客-CSDN博客_jwt...原创 2022-05-15 21:01:02 · 202 阅读 · 0 评论 -
Paxos算法和Raft算法---经典的分布式系统一致性问题解决算法
一.Paxos 算法Paxos 算法诞生于 1990 年,这是一种解决分布式系统一致性的经典算法 。但是,由于 Paxos 算法在国际上被公认的非常难以理解和实现,因此不断有人尝试简化这一算法。到了2013 年才诞生了一个比 Paxos 算法更易理解和实现的分布式一致性算法—Raft 算法二.Raft算法1 背景当今的数据中心和应用程序在高度动态的环境中运行,为了应对高度动态的环境,它们通过额外的服务器进行横向扩展,并且根据需求进行扩展和收缩。同时,服务器和网络故障也很常见。因此,系统.原创 2022-03-20 21:23:06 · 2154 阅读 · 0 评论 -
服务降级 & 熔断机制
一.服务降级1.什么是降级?降级是从系统功能优先级的角度考虑如何应对系统故障。服务降级指的是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。降级服务的特征如下:原因: 整体负荷超出整体负载承受能力。 目的:保证重要或基本服务正常运行,非重要服务延迟使用或暂停使用 大小: 降低服务粒度,要考虑整体模块粒度的大小,将粒度控制在合适的范围内 可控性: 在服务粒度大小的基础上增加服务的可控性,后台服务开关的功能是一.原创 2022-03-27 20:56:17 · 11783 阅读 · 0 评论 -
分布式系统中的CAP理论和BASE理论详解
一.CAP理论CAP 理论/定理open in new window起源于 2000年,由加州大学伯克利分校的Eric Brewer教授在分布式计算原理研讨会(PODC)上提出,因此 CAP定理又被称作布鲁尔定理(Brewer’s theorem)2年后,麻省理工学院的Seth Gilbert和Nancy Lynch 发表了布鲁尔猜想的证明,CAP理论正式成为分布式领域的定理。简介CAP也就是Consistency(一致性)、Availability(可用性)、Partition To...原创 2022-03-20 21:14:56 · 2309 阅读 · 1 评论 -
常见的限流算法总结
1.固定窗口计数器算法固定窗口其实就是时间窗口。固定窗口计数器算法规定了我们单位时间处理的请求数量。假如我们规定系统中某个接口 1 分钟只能访问 33 次的话,使用固定窗口计数器算法的实现思路如下:给定一个变量counter来记录当前接口处理的请求数量,初始值为 0(代表接口当前 1 分钟内还未处理请求)。 1 分钟之内每处理一个请求之后就将counter+1,当counter=33之后(也就是说在这 1 分钟内接口已经被访问 33 次的话),后续的请求就会被全部拒绝。 等到 ...原创 2022-03-24 21:55:14 · 605 阅读 · 1 评论 -
ZooKeeper 集群
为了保证高可用,最好是以集群形态来部署 ZooKeeper,这样只要集群中大部分机器是可用的(能够容忍一定的机器故障),那么 ZooKeeper 本身仍然是可用的。通常 3 台服务器就可以构成一个 ZooKeeper 集群了。ZooKeeper 官方提供的架构图就是一个 ZooKeeper 集群整体对外提供服务。上图中每一个 Server 代表一个安装 ZooKeeper 服务的服务器。组成 ZooKeeper 服务的服务器都会在内存中维护当前的服务器状态,并且每台服务器之间都互相保持着通信。集群间原创 2022-03-22 21:11:14 · 4677 阅读 · 0 评论 -
ZooKeeper的Session分桶策略
分桶策略ZooKeeper的会话管理主要是由SessionTracker负责的,其采用了一种特殊的会话管理方式,称其为“分桶策略”。所谓分桶策略,是将超时时间相近的会议放到同一个桶中来进行管理,以减少管理的复杂度。在检查超时的会话时,只需要检查桶中剩下的会话即可(没有被转移走的会话全是超时的)。会话超时时间的计算方法如下:可见,超时检查的粒度就是expirationInterval,以这个粒度为单位,就可以分成多个桶,同一个桶中存放着超时时间一致的会话。会话激活有了桶之后,接下来就.原创 2022-04-21 22:46:13 · 363 阅读 · 0 评论 -
Eureka服务发现详解以及和zookeeper的区别
一.Eureka的服务发现功能官方定义:Eureka是基于REST(代表性状态转移)的服务,主要在AWS云中用于定位服务,以实现负载均衡和中间层服务器的故障转移。我们称此服务为Eureka服务器。Eureka 还带有一个基于Java的客户端组件Eureka Client,它使与服务的交互变得更加容易。客户端还具有一个内置的负载平衡器,可以执行基本的循环负载平衡。在Netflix,更复杂的负载均衡器将Eureka包装起来,以基于流量,资源使用,错误条件等多种因素提供加权负载均衡,以提供出...原创 2022-03-18 21:00:18 · 488 阅读 · 0 评论 -
分布式ID常见解决方案总结
一.数据库1.数据库主键自增这种方式就比较简单直白了,就是通过关系型数据库的自增主键产生来唯一的 ID。以 MySQL 举例,我们通过下面的方式即可。1.1.创建一个数据库表。CREATE TABLE `sequence_id` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `stub` char(10) NOT NULL DEFAULT '', PRIMARY KEY (`id`), UNIQUE KEY原创 2022-03-20 22:09:41 · 602 阅读 · 0 评论 -
Spring Cloud Gateway 服务网关的部署
一、为什么需要服务网关:1、什么是服务网关:传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关,客户端只能在本地记录每个微服务的调用地址,当需要调用的微服务数量很多时,它需要了解每个服务的接口,这个工作量很大。那有了网关之后,能够起到怎样的改善呢? 网关作为系统的唯一流量入口,封装内部系统的架构,所有请求都先经过网关,由网关将请求路由到合适的微服务,所以,使用网关的好处在于:(1)简化客户端的工作。网关将微服务封装起来后,...转载 2022-05-15 11:46:10 · 727 阅读 · 0 评论 -
Feign的工作原理分析
Feign的简单介绍Feign组件主要用于微服务项目中,用来简化服务之间的远程调用,相信大家对他的使用方法已经相当熟悉了。那么Feign到底是如何实现服务的远程调用的呢?又是如何发送请求的呢?发送的请求又是什么样子的呢?本文主要就针对这三个对Feign的原理做一个简单的分析。上面这张图是我按照自己的理解简单的画了一下Feign的主要工作流程,下面将结合Feign底层的源码对工作原理进行详细的分析。Feign的工作原理根据上图我将流程分为主要的三个步骤:通过动态代理在本地实例化远程接口-&转载 2022-05-15 11:08:41 · 335 阅读 · 0 评论 -
JWT 身份认证优缺点分析
一.Token 认证的优势相比于 Session 认证的方式来说,使用 token 进行身份认证主要有下面四个优势:1.无状态token 自身包含了身份验证所需要的所有信息,使得我们的服务器不需要存储 Session 信息,这显然增加了系统的可用性和伸缩性,大大减轻了服务端的压力。但是,也正是由于 token 的无状态,也导致了它最大的缺点:当后端在token 有效期内废弃一个 token 或者更改它的权限的话,不会立即生效,一般需要等到有效期过后才可以。另外,当用户 Logout 的话,tok原创 2022-03-16 22:04:06 · 830 阅读 · 0 评论