分布式
文章平均质量分 72
分享本人学习分布式系统相关的知识,如kafka,zookeeper,scala等
·yying·
知行合一
展开
-
Hystrix笔记总结
如图 1 所示,在所有服务都处于可用状态时,请求 1 需要调用 A、D、E、F 四个服务才能完成,请求 2 需要调用 B、E、D 三个服务才能完成,请求 3 需要调用服务 C、F、E、D 四个服务才能完成。从以上过程可以看出,当微服务系统的一个服务出现故障时,故障会沿着服务的调用链路在系统中疯狂蔓延,最终导致整个微服务系统的瘫痪,这就是“雪崩效应”。通常情况下,我们都会在客户端进行服务降级,当客户端调用的服务端的服务不可用时,客户端直接进行服务降级处理,避免其线程被长时间、不必要地占用。原创 2023-09-05 17:00:16 · 40 阅读 · 0 评论 -
SpringBoot整合OpenFeign和Hystrix
Hystrix类:重写方法用于当接口访问异常时,即调用的接口抛出异常时调用对应的重写方法,一般用于容错返回和输出异常。方式二:用Factory,可以获取异常信息和异常号。方式一:简单,但无法获取异常信息和状态号。MessageFeignFactory类。修改@FeignClient 注解。可以看到抛出的异常有状态号信息等。开启hystrix 熔断器。FeignClient类。原创 2023-09-05 16:58:17 · 83 阅读 · 0 评论 -
初识openFeign
Netflix Feign 是 Netflix 公司发布的一种实现负载均衡和服务调用的开源组件。Spring Cloud 将其与 Netflix 中的其他开源服务组件(例如 Eureka、Ribbon 以及 Hystrix 等)一起整合进 Spring Cloud Netflix 模块中,整合后全称为 Spring Cloud Netflix Feign。Feign 对 Ribbon 进行了集成,利用 Ribbon 维护了一份可用服务清单,并通过 Ribbon 实现了客户端的负载均衡。原创 2023-09-05 16:57:33 · 24 阅读 · 0 评论 -
SpringBoot整合kafka
【代码】SpringBoot整合kafka。原创 2023-09-05 16:47:02 · 22 阅读 · 0 评论 -
docker常用命令以及Ubuntu20.04安装docker步骤
【代码】docker常用命令以及Ubuntu20.04安装docker步骤。原创 2023-09-05 16:45:28 · 139 阅读 · 0 评论 -
Reidsson分布式锁代码实现
Redis分布式锁原理:https://blog.csdn.net/asd051377305/article/details/108384490。Redission 分布式锁代码实现。原创 2023-09-05 16:42:55 · 43 阅读 · 0 评论 -
ZAB协议和Paxos算法
在 ZooKeeper 中,主要依赖 ZAB 协议来实现分布式数据一致性,基于该协议,ZooKeeper 实现了一种主备模式的系统架构来保持集群中各个副本之间的数据一致性。当选举产生了新的 Leader 服务器,同时集群中已经有过半的机器与该 Leader 服务器完成了状态同步之后,ZAB 协议就会退出恢复模式。某提案后,会将该提案编号 N 记录在本地,这样每个表决者中保存的已经被 accept 的提案中会存在一个。,即在整个集群中是唯一的编号 N,然后将该编号赋予其要提出的提案,在。发送提案的提交请求。原创 2023-09-05 16:40:13 · 92 阅读 · 0 评论 -
2PC到3PC提交协议
请求,参与者收到之后如果能处理那么它将会进行事务的处理但并不提交,这个时候会一直占用着资源不释放,如果此时协调者挂了,那么这些资源都不会再释放了,这会极大影响性能。阶段,当一个参与者收到了请求之后其他参与者和协调者挂了或者出现了网络分区,这个时候收到消息的参与者都会进行事务提交,这就会出现数据不一致性问题。请求就挂了,那么也就意味着,收到消息的参与者会进行事务的提交,而后面没收到的则不会进行事务提交,那么这时候就会产生数据不一致性问题。并没有收到全部的参与者的响应,那么就会中断事务,它会向所有参与者发送。原创 2023-09-04 16:53:50 · 28 阅读 · 0 评论 -
分布式事务与本地事务的比较
比如:用户信息和订单信息分别在两个MySQL实例存储,用户管理系统删除用户信息,需要分别删除用户信息及用户的订单信息,由于数据分布在不同的数据实例,需要通过不同的数据库链接去操作数据,此时产生分布式事务。在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于应用主要靠关系数据库来控制事务,而数据库通常和应用在同一个服务器,所以基于关系型数据库的事务又被称为本地事务。:持久性,事务完成之后,该事务对数据的更改会持久到数据库,且不会被回滚。原创 2023-09-04 16:53:05 · 40 阅读 · 0 评论 -
zookeeper集群存储结构相关知识
正常情况下只有 1 个 leader,但是当两个机房中间网络断开的时候,每个机房的 3 台服务器都会认为另一个机房的 3 台服务器下线,而选出自己的 leader 并对外提供服务。Session 可以看作是 ZooKeeper 服务器与客户端的之间的一个 TCP 长连接,通过这个连接,客户端能够通过心跳检测与服务器保持有效的会话,也能够向 ZooKeeper 服务器发送请求并接受响应,同时还能够通过该连接接收来自服务器的 Watcher 事件通知。同时如果有新的节点加入,还需要对新节点进行同步。原创 2023-09-04 16:52:23 · 166 阅读 · 0 评论 -
数据一致性模型
数据复制导致了一致性的问题,为了保持副本的一致性可能会严重地影响性能,唯一的解决办法就是放松一致性的要求。通过一致性模型我们可以理解和推理在分布式系统中数据复制需要考虑的问题和基本假设,便于结合具体的业务场景做权衡。每种模型都有效地限制了对一个数据项执行度操作应返回的值。通常来说限制越少的模型越容易应用,但一致性的保证就越弱。原创 2023-09-04 16:51:40 · 40 阅读 · 0 评论 -
CAP和BASE理论
BASE 理论是对 CAP 中一致性 C 和可用性 A 权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于 CAP 定理逐步演化而来的,它大大降低了我们对系统的要求。**最终一致性:**最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。另外,需要补充说明的一点是:**如果网络分区正常的话(系统在绝大部分时候所处的状态),也就说不需要保证 P 的时候,C 和 A 能够同时保证。: 非故障的节点在合理的时间内返回合理的响应(不是错误或者超时的响应)。原创 2023-09-04 16:51:04 · 44 阅读 · 0 评论 -
初识分布式id
为了保证号段服务的高可用,我们同样需要建立一个集群,在请求方从号段服务获取ID时,就会随机的选取一个节点来获取,而这种并发场景下我们同样需要考虑到并发安全的问题,因此我们上面的表中也提供了一个版本号的字段version,我们可以使用乐观锁来进行并发的控制。前面两种方法的局限性在于其每次获取ID时都需要直接访问数据库,效率较低,如果能够一次获取大量的ID,并将其缓存在本地,那样就可以大大的提升ID获取的效率,这也是号段模式的核心思想。如果在修改步长的时候出现了重复的ID,此时就还需要进行停机修改。原创 2023-09-04 16:50:26 · 29 阅读 · 0 评论 -
Feign组件的fallback操作
Hystrix类:重写方法用于当接口访问异常时,即调用的接口抛出异常时调用对应的重写方法,一般用于容错返回和输出异常。方式二:用Factory,可以获取异常信息和异常号。方式一:简单,但无法获取异常信息和异常号。MessageFeignFactory类。修改@FeignClient 注解。可以看到抛出的异常有状态号信息等。开启hystrix 熔断器。FeignClient类。原创 2023-09-04 16:40:48 · 885 阅读 · 0 评论 -
VMware创建三台Ubuntu虚拟机搭建zookeeper完全分布式环境
我也是小白,还在努力前行中。----->打开文件后,输入 i 进行编辑,在最上面写入类似于下面三行,按【esc】键退出编辑模式,按【:】键,输入【wq】再按【回车键】即可退出vim。简洁快速地用VMware创建三台虚拟机master,slave1,slave2,配置java环境,搭建zookeeper完全分布式集群。依次连接完三台虚拟机之后,点击【工具】->【发送键输入到】->【所有会话】,同步操作三台虚拟机。打开XShell,点击新建会话,输入名称,主机ip地址,用户和密码,依次连接三台服务器。原创 2023-09-03 20:54:14 · 684 阅读 · 1 评论 -
初始云数据库系统架构UMP
UMP系统是低成本和高性能的MySQL云数据库方案保持单一的系统对外入口,并且为系统内部维护单一的资源池消除单点故障,保证服务的高可用性保证系统具有良好的可伸缩,能够动态地增加、删减计算与存储节点保证分配给用户的资源也是弹性可伸缩的,资源之间相互隔离,确保应用和数据安全。原创 2023-09-01 17:47:00 · 412 阅读 · 0 评论 -
Hadoop集群
Hadoop框架中最核心的设计是为海量数据提供存储的HDFS和对数据进行计算的MapReduceHadoop集群的整体性能取决于CPU、内存、网络以及存储之间的性能平衡。原创 2023-09-01 17:43:58 · 74 阅读 · 1 评论 -
初始云数据库
谷歌使用用户非常熟悉的MySQL,带有JDBC支持(适用于基于Java的App Engine应用)和DB-API支持(适用于基于Python的App Engine应用)的传统MySQL数据库环境,因此,多数应用程序不需过多调试即可运行,数据格式对于大多数开发者和管理员来说也是非常熟悉的。支持存储过程:它的数据类型、存储过程和传统的SQL Server具有很大的相似性,因此,应用可以在本地进行开发,然后部署到云平台上。使用Cloud SQL,所有的事务都在云中,并由谷歌管理,用户不需要配置或者排查错误。原创 2023-09-01 17:42:03 · 19 阅读 · 1 评论 -
初始MapReduce
它的划分方法完全由用户自己决定。TaskTracker 会周期性地通过“心跳”将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker 发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)JobTracker 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器(TaskScheduler),而调度器会在资源出现空闲时,选择合适的任务去使用这些资源。Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动。原创 2023-09-01 17:38:08 · 24 阅读 · 1 评论 -
初始NOSQL
MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。•同时,因为在移动过程中,只有被移动的那一条记录(文档)需要操作,而不像关系型中每个有关联的表都需要锁住来保证一致性,这样一来ACID的保证就会变得更快速,读写的速度也会有很大的提升。C(Consistency):一致性,是指任何一个读操作总是能够读到之前完成的写操作的结果,也就是在分布式环境中,多点的数据是一致的,或者说,所有节点在同一时间具有相同的数据。原创 2023-09-01 17:31:37 · 33 阅读 · 1 评论 -
Hadoop分布式文件系统
当客户端读取数据时,从名称节点获得数据块不同副本的存放位置列表,列表中包含了副本所在的数据节点,可以调用API来确定客户端和这些数据节点所属的机架ID,当发现某个数据块副本对应的机架ID和客户端对应的机架ID相同时,就优先选择该副本读取数据,如果没有发现,就随机选择一个副本读取数据。HDFS默认的冗余复制因子是3,每一个文件块会被同时保存到3个地方,有两份副本放在同一个机架的不同机器上面,第三个副本凡在不同机架的机器上面。•第二个副本:放置在与第一个副本不同的机架的节点上。(2)容易检查数据错误。原创 2023-09-01 17:20:17 · 94 阅读 · 1 评论 -
kafka学习笔记
Kafka是一种消息队列,主要用来处理大量数据状态下的消息队列,一般用来做日志的处理。既然是消息队列,那么Kafka也就拥有消息队列的相应的特性了。原创 2023-09-01 17:12:36 · 24 阅读 · 1 评论 -
初始rocketMQ
RocketMQ是阿里巴巴采用Java语言开发的开源分布式消息中间件,现在是Apache的一个顶级项目。在阿里内部,RocketMQ承接了例如“双11”等高并发场景的消息流转,能够处理万亿级别的消息。原创 2023-09-01 17:04:18 · 199 阅读 · 1 评论 -
初始springcloud
微服务是一种用于构建分布式应用的架构方案有别于更为传统的单体式方案。它将一个原本独立的系统拆分成了多个小型服务服务之间可以通过基于HTTP/HTTPS的RESTful AP进行通信协作,也可以通过RPC协议进行通信协作;每人功能都被称为一项服务,可以单独构建和部署;由于使用轻量级通信协议作为基础,所以微服务可以使用不同语言来编写。服务限流降级。原创 2023-09-01 17:02:44 · 37 阅读 · 1 评论