分布式
分布式集群架构场景化解决方案
四月丶丶
越努力越幸运
展开
-
分布式事务详解
1. 分布式事务理论1.1 CAP(强一致性)CAP 定理,又被叫作布鲁尔定理,理论含义是,一个分布式系统不可能同时满足一致性(C:Consistency),可用性(A: Availability)和分区容错 性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中的2个。选项描述C 一致性分布式系统当中的一致性指的是所有节点的数据一致,或者说是所有副本的数据一致A 可用性Reads and writes always succeed. 也就是原创 2020-09-25 13:08:10 · 116 阅读 · 0 评论 -
同步和异步,阻塞和非阻塞概念介绍
同步和异步同步(synchronize)、异步(asychronize)是指应用程序和内核的交互而言的.同步:指用户进程触发IO操作等待或者轮训的方式查看IO操作是否就绪。通俗点说指发送一个请求,需要等待返回,然后才能发送下一次请求,有个等待过程异步:当一个异步进程调用发出之后,调用者不会立刻得到结果。而是在调用发出之后,被调用者通过状态、通知来通知 调用者,或者通过回调函数来处理这个调用。指发送一个请求,不需要等待返回,随时可以再发送下一次请求,不需要等待使用异步IO时,Ja原创 2020-08-02 23:47:13 · 185 阅读 · 0 评论 -
RMI简介及使用
简介Java RMI 指的是远程方法调用 (Remote Method Invocation),是java原生支持的远程调用 ,采用JRMP(Java Remote Messageing protocol)作为通信协议,可以认为是纯java版本的分布式远程调用解决方案, RMI主要用 于不同虚拟机之间的通信,这些虚拟机可以在不同的主机上、也可以在同一个主机上,这里的通信可以理解为一个 虚拟机上的对象调用另一个虚拟机上对象的方法。客户端:存根/桩(Stub):远程对象在客户端上的代理;远程引用层原创 2020-08-02 23:03:50 · 971 阅读 · 0 评论 -
RPC简介
什么是RPCRPC全称为remote procedure call,即远程过程调用。借助RPC可以做到像本地调用一样调用远程服务,是一种进程间的通信方式比如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的 应用提供的方法,由于两个应用不在一个内存空间,不能直接调用,所以需要通过网络来表达调用的语义和传达调 用的数据。需要注意的是RPC并不是一个具体的技术,而是指整个网络远程调用过程。RPC架构一个完整的RPC架构里面包含了四个核心的组件,分别是原创 2020-08-02 22:35:12 · 182 阅读 · 0 评论 -
分布式系统设计策略
分布式系统本质是通过低廉的硬件攒在一起以获得更好的吞吐量、性能以及可用性等。 在分布式环境下,有几个问题是普遍关心的,我们称之为设计策略:如何检测当前节点还活着?如何保障高可用?容错处理负载均衡1. 心跳检测在分布式环境中,我们提及过存在非常多的节点(Node),其实质是这些节点分担任务的运行、计算或者程序逻 辑处理。那么就有一个非常重要的问题,如何检测一个节点出现了故障乃至无法工作了?通常解决这一问题是采用心跳检测的手段,如同通过仪器对病人进行一些检测诊断一样。心跳顾名思义,就是以固定原创 2020-08-01 23:57:59 · 158 阅读 · 0 评论 -
分布式理论:一致性协议 3PC
什么是三阶段提交3PC,全称 “three phase commit”,是 2PC 的改进版,将 2PC 的 “提交事务请求” 过程一分为二,共形成了由 CanCommit、PreCommit和doCommit三个阶段组成的事务处理协议。阶段一:CanCommit事务询问协调者向所有的参与者发送一个包含事务内容的canCommit请求,询问是否可以执行事务提交操作,并开始等待 各参与者的响应。各参与者向协调者反馈事务询问的响应参与者在接收到来自协调者的包含了事务内容的canCom原创 2020-08-01 23:36:37 · 72 阅读 · 0 评论 -
分布式理论:一致性协议 2PC
什么是 2PC2PC ( Two-Phase Commit缩写)即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase)、提交阶段(commit phase),2是指两个阶段,P是指准备阶段,C是指提交阶段。在计算机中部分关系数据库如Oracle、MySQL支持两阶段提交协议.两个阶段过程:准备阶段(Prepare phase):事务管理器给每个参与者发送Prepare消息,每个数据库参与者在本地执行事 务,并写本地的Undo/Redo日志,此时事务没有提交。 (U原创 2020-08-01 23:21:10 · 84 阅读 · 0 评论 -
分布式理论:BASE 理论
什么是BASE理论BASE:全称:Basically Available(基本可用),Soft state(软状态),和 Eventually consistent(最终一致性)三个 短语的缩写,来自 ebay 的架构师提出。BASE是对CAP中一致性和可用性权衡的结果,BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可 以根据自身业务特点,采用适当的方式来使系统达到最终一致性。Basically Available(基本可用)基本可用是指分布式系统在出现不可预知故障的时候,.原创 2020-08-01 22:56:20 · 225 阅读 · 0 评论 -
分布式理论:CAP定理
CAP 定理2000 年7月的时候,加州大学伯克利分校的Eric Brewer 教授提出了 CAP 猜想,2年后,被 来自于麻省理工 的Seth Gilbert 和 Nancy Lynch 从理论上证明了猜想的可能性,从此,CAP 定理正式在学术上成为了分布式 计算领域的公认定理。并深深的影响了分布式计算的发展。CAP 理论含义是,一个分布式系统不可能同时满足一致性(C:Consistency),可用性(A: Availability)和分区容错 性(P:Partition tolerance)这三原创 2020-08-01 22:47:09 · 154 阅读 · 0 评论 -
分布式理论:一致性
什么是分布式一致性分布式数据一致性,指的是数据在多份副本中存储时,各副本中的数据是一致的。副本一致性分布式系统当中,数据往往会有多个副本。如果是一台数据库处理所有的数据请求,那么通过ACID四原则,基本 可以保证数据的一致性。而多个副本就需要保证数据会有多份拷贝。这就带来了同步的问题,因为我们几乎没有办 法保证可以同时更新所有机器当中的包括备份所有数据。 网络延迟,即使我在同一时间给所有机器发送了更新数据 的请求,也不能保证这些请求被响应的时间保持一致存在时间差,就会存在某些机器之间的数据不一致的情况原创 2020-08-01 22:16:13 · 156 阅读 · 0 评论 -
Session共享问题分析
Session为什么要共享Session共享也可以称为Session保持或者叫做Session一致性,Session存储在服务器的内存中,比如Java中,Session存放在JVM的中,Session也可以持久化到file,MySQL,redis等,SessionID存放在Cookie中。比如一个系统登录后,假如用户的请求通过Nginx被转发到tomcat1上,这时一些当前用户的信息放入session中,比如登录信息让用户一直处于登录状态。那么Nginx负载均衡后,可能用户刷新页面后重新跳转到了to原创 2020-07-26 22:34:45 · 161 阅读 · 0 评论 -
cron表达式详解
cron表达式由七个位置组成,空格分隔按顺序依次为Seconds(秒) 0~59Minutes(分) 0~59Hours(小时) 0~23Day of Month(天)1~31,注意有的月份不足31天Month(月) 0~11,或者 JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DECDay of Week(周) 1~7,1=SUN或者 SUN,MON,TUE,WEB,THU,FRI,SATYear(年)1970~2099 可选..原创 2020-07-26 21:53:47 · 364 阅读 · 0 评论 -
分布式任务调度框架Elastic-Job简介及使用
1. Elastic-Job介绍Elastic-Job是当当网开源的一个分布式调度解决方案,基于Quartz二次开发的,由两个相互独立的子项 目Elastic-Job-Lite和Elastic-Job-Cloud组成。本文主要介绍 Elastic-Job-Lite,它定位为轻量级无中心 化解决方案,使用Jar包的形式提供分布式任务的协调服务,而Elastic-Job-Cloud子项目需要结合Mesos 以及Docker在云环境下使用。Elastic-Job的github地址:Elastic-Job原创 2020-07-26 21:24:31 · 1061 阅读 · 0 评论 -
Linux安装zookeeper-3.6.1
安装jdk,如果已经安装过,跳过此步骤安装步骤参考:https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz下载zookeeper安装包下载地址:https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1.tar.gz解压..原创 2020-07-26 20:22:55 · 374 阅读 · 0 评论 -
分布式ID生成策略
1. UUID2. 独立数据库的自增ID3. SnowFlake 雪花算法4. 借助Redis的Incr命令获取全局唯一ID原创 2020-07-25 21:23:14 · 80 阅读 · 0 评论 -
集群时钟同步问题
时钟不同步导致的问题时钟此处指服务器时间,如果集群中各个服务器时钟不一致势必导致一系列问题,试想 “集群是各个服 务器一起团队化作战,大家工作都不在一个点上,岂不乱了套!”举一个例子,电商网站业务中,新增一条订单,那么势必会在订单表中增加了一条记录,该条记录中应 该会有“下单时间”这样的字段,往往我们会在程序中获取当前系统时间插入到数据库或者直接从数据库 服务器获取时间。那我们的订单子系统是集群化部署,或者我们的数据库也是分库分表的集群化部署, 然而他们的系统时钟缺不一致,比如有一台服务器的时间是昨天原创 2020-07-25 19:08:26 · 471 阅读 · 0 评论 -
Nginx 配置一致性Hash负载均衡策略
核心模块简介进入nginx的安装目录进入/src/http目录如上图,Nginx http 核心功能模块都在这个目录,功能如下负载均衡器ngx_http_upstream_consistent_hash 模块是一个负载均衡器,使用一个内部一致性hash算法来选择合适的后端节点。该模块可以根据配置参数采取不同的方式将请求均匀映射到后端机器,consistent_hash $remote_addr:可以根据客户端ip映射consistent_hash $request_ur原创 2020-07-25 17:26:00 · 577 阅读 · 1 评论 -
一致性Hash分析
Hash算法应用场景Hash算法在很多分布式集群产品中都有应用,比如分布式集群架构Redis、Hadoop、ElasticSearch,Mysql分库分表,Nginx负载均衡等主要的应用场景归纳起来两个请求的负载均衡(比如nginx的ip_hash策略)Nginx的IP_hash策略可以在客户端ip不变的情况下,将其发出的请求始终路由到同一个目标服务器上,实现会话粘滞,避免处理session共享问题 ,我们可以对ip地址或者sessionid进行计算哈希值,哈希值与服务 器数量进行取模原创 2020-07-25 15:10:46 · 89 阅读 · 0 评论 -
初识Hash算法
定义Hash,也称“哈希”或者“散列”,是一种重要的存储方式,也是一种常见的检索方法。散列方法的主要思想是根据结点的关键码值来确定其存储地址:以关键码值K为自变量,通过一定的函数关系h(K)(称为散列函数),计算出对应的函数值来,把这个值解释为结点的存储地址,将结点存入到此存储单元中。检索时,用同样的方法计算地址,然后到相应的单元里去取要找的结点。为什么需要使用Hash?通过散列方法可以对结点进行快速检索。Hash算法较多的应用在数据存储和查找领域,最经典的就是Hash表,它的查询效率非常之高,原创 2020-07-25 14:47:17 · 231 阅读 · 1 评论