分布式处理

怎么找百度云链接

限于喜欢 提交于 2020-03-08 08:43:00
分布式与集群 集群: 集群构架是将相同的处理逻辑进行复制(复制一份源代码),创建出一组具备相同功能的服务集合,集群中每个服务都能够独立的完成用户的请求,它们之间基本上不需要互相通讯,也就用不上RPC了; 分布式: 分布式指的是将一个系统拆分为多个独立的子系统,部署在不同的机器上; 在处理任务时会将一个任务拆分成若干子任务,分发给不同的子系统处理,每个子系统仅能处理一部分任务,通常一个完整的任务包含多个处理步骤,例如用户要购买某个商品,需要先创建订单,然后修改库存,假设修改库存的服务由另一个服务器提供这时候RPC就闪亮登场了; 可以发现分布式与集群在底层构架上完全不同,所以要将一个原本集群的系统重构为分布式的话,则需要大量的修改,所以若系统后期存在高并发的需求,则可以在项目初期就采用分布式构架来搭建。 来源: https://www.cnblogs.com/ckvjvf/p/12440935.html

Dubbo 入门-细说分布式与集群

走远了吗. 提交于 2020-03-08 00:29:57
什么是Dubbo Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 什么是RPC RPC全称(Remote Procedure Call)远程过程调用 过程指的是某个代码片段的执行,远程调用则意味着我们可以在其他进程,甚至其他机器上去调用这段代码,当然也能获取到其执行后的返回值,按照这个定义,我们请求某个http地址得到相应数据其实也算一次RPC,但是这样的方式太过麻烦,(数据要先打包成http请求格式,在调用相关的请求库,拿到的结果也是文本格式的需要在进行转换),执行效率,和开发效率相比RPC则低一些; 我们需要一种更简单的方式来完成分布式开发中的RPC环节,这也是Dubbo的核心所在,有多简单呢? 调用远程服务器上的某个服务时就像是调用本地的某个方法一样简单,就像下面这样 为什么需要rpc RPC是用来实现分布式构架的基石,分布式构架将同一个系统中的不同模块拆分到不同的子系统中,而子系统又分布在不同的服务器上,这时就需要RPC在来完成子系统之间的相互访问; 可以这么说分布式少不了RPC,RPC也要在分布式系统中才能发挥其核心价值; rpc的实现原理 毫无以为底层肯定是要通过socket来进行网络通讯的,但是如何能够直接调用另一个机器上的方法呢? 服务消费方(client

分布式原理与算法--概述

旧时模样 提交于 2020-03-06 12:49:47
分布式技术地图 按照业务的架构层次栈,我自底向上按照资源、通信、数据与计算的维度,梳理出了 4 个技术层次:分布式资源池化、分布式通信、分布式数据存储与管理、分布式计算 符合了架构设计的规律,在一定资源上,进行一定通信,通过一定计算,完成一定数据的加工和处理,从而对外提供特定的服务. 因为在分布式架构下需要去解决:协同、调度、追踪高可用,还有部署的问题.那么就可以从横向的技术层次,提炼出分布式协同、分布式调度、分布式追踪与高可用、分布式部署 4 个纵向技术线. 分布式的发展 1单兵模式:单机模式 比如: 所有的模块都在一台机器上,请求处理和数据部署都可能在一台机器上 好处:功能、代码和数据集中,便于维护、管理和执行 缺点:硬件系能提升是有限的,不可能无限的提高cpu等硬件性能.性价比也需要考虑. 除此之外,还会有单点失效的问题,一台机崩溃,所有的服务都不能用 2游击队模式:数据并行或数据分布式 在单兵模式下,进行数据的拆分,执行的步骤: 一 将应用与数据分离,分别部署到不同的服务器上 二 把数据按照系统进行拆分 拆分以后系统就开始变的稍微复杂一些,需要相应的解决一些问题: 1要考虑负载均衡的问题,让每台机器的处理都比较均衡 2请求量大了,数据库的io就变成了瓶颈,那么就要进行数据库的读写分离,同时要考虑读写数据库的数据同步问题就要 3某些系统的数据库会成为热点服务器

GitHub上整理的一些工具

拥有回忆 提交于 2020-03-06 00:52:13
GitHub上整理的一些工具 GitHub 2015-11-19 10:10:47 发布 您的评价: 0.0 收藏 5收藏 技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs,51cto,csdn:常见的技术社区,各有专长 stackoverflow:IT技术问答网站 GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核, OpenStack等免费的it电子书: http://it-ebooks.info/ DevStore:开发者服务商店 不错的书籍 人件 人月神话 代码大全2 计算机程序设计艺术 程序员的自我修养 程序员修炼之道 高效能程序员的修炼(成为一名杰出的程序员其实跟写代码没有太大关系) 深入理解计算机系统 软件随想录 算法导论(麻省理工学院出版社) 离线数学及其应用 设计模式 编程之美 黑客与画家 编程珠玑 C++ Prime Effective C++ TCP/IP详解 Unix 编程艺术 《精神分析引论》弗洛伊德 搞定:无压力工作的艺术 平台工具(都是开源的好东东哦) Redmine/Trac:项目管理平台 Jenkins

Docker快速部署Ceph分布式集群

≡放荡痞女 提交于 2020-03-06 00:12:14
最近工作上需要熟悉了解Ceph分布式存储,所以本地搭建一套Ceph来做测试。本文主要内容是使用Docker部署Ceph集群。 1.Ceph Ceph 是一个可靠、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备和文件系统服务。块设备存储是Ceph的强项。 RADOS 是一个完整的分布式对象存储系统,它具有可靠、智能、分布式等特性,Ceph的高可靠、高可拓展、高性能、高自动化都是由这一层来提供的,用户数据的存储最终也都是通过这一层来进行存储的,RADOS可以说就是Ceph的核心组件。 一个Ceph存储集群至少需要一个Ceph Monitor和两个OSD守护进程。 Ceph OSDs 负责存储数据,处理数据的的复制、恢复、回填、再均衡,并通过检查其他OSD守护进程的心跳来向Ceph Monitors提供一些监控信息。 Ceph Monitors 维护者展示集群状态的各种图表 Mgr 管理进程。 2.环境准备 2.1 虚机准备 准备3台 Centos7 虚拟机,各挂载一个2G的虚拟硬盘,用于存储osd数据,例如:/dev/sdb hostname ip 部署 master 10.211.55.4 mon osd mgr node1 10.211.55.5 mon osd node2 10.211.55.6 mon osd 2.2

分布式文件系统HDFS

微笑、不失礼 提交于 2020-03-05 21:52:49
HDFS全称为Hadoop Distributed File System,是整个Hadoop平台上的两大核心组件之一 HDFS用于解决海量数据的分布式存储问题 计算机集群结构 分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集群 与之前使用多个处理器和专用高级硬件的并行化处理装置不同的是,目前的分布式文件系统所采用的计算机集群,都是由普通硬件构成的,这就大大降低了硬件上的开销 机架内部的机器通过光纤高速交换机进行连接,机架和机架之间通过带宽更高的几个光纤交换机来完成彼此之间的交互和连接 分布式文件系统的结构 分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点分为两类,一类叫“主节点”(Master Node)或者也被称为“名称结点”(NameNode),另一类叫“从节点”(Slave Node)或者也被称为“数据节点”(DataNode)一个作为主节点,其余作为从节点,主节点承担起数据目录(元数据)服务,从节点要具体完成数据的存储任务 HDFS简介 HDFS要实现以下目标: 兼容廉价的硬件设备 流数据读写 大数据集 简单的文件模型 强大的跨平台兼容性 传统的文件系统在进行数据读写的时候是以块数据为单位,每一次可以读取指定的某一部分数据,而HDFS设计的目标就是对大量数据的读写,不会访问某个文件的子集或去访问一块一块的数据

简单了解分布式系统

て烟熏妆下的殇ゞ 提交于 2020-03-05 07:58:34
随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。本文主要简单介绍了分布式系统的概念、分布式系统的特点、常用的分布式方案以及分布式和集群的区别等。 一、集中式系统 在学习分布式之前,先了解一下与之相对应的集中式系统是什么样的。 集中式系统用一句话概括就是:一个主机带多个终端。终端没有数据处理能力,仅负责数据的录入和输出。而运算、存储等全部在主机上进行。现在的银行系统,大部分都是这种集中式的系统,此外,在大型企业、科研单位、军队、政府等也有分布。集中式系统,主要流行于上个世纪。 集中式系统的最大的特点就是部署结构非常简单,底层一般采用从IBM、HP等厂商购买到的昂贵的大型主机。因此无需考虑如何对服务进行多节点的部署,也就不用考虑各节点之间的分布式协作问题。但是,由于采用单机部署。很可能带来系统大而复杂、难于维护、发生单点故障(单个点发生故障的时候会波及到整个系统或者网络,从而导致整个系统或者网络的瘫痪)、扩展性差等问题。 二、分布式系统(distributed system) 在《分布式系统概念与设计》一书中,对分布式系统做了如下定义: 分布式系统是一个硬件或软件组件分布在不同的网络计算机上

zookeeper分布式锁实现原理

落爺英雄遲暮 提交于 2020-03-02 04:40:38
文章转载自 https://blog.csdn.net/koflance/article/details/78616206 1、互斥锁mutex lock 顾名思义就是排它锁,同一时间只允许一个客户端执行。 实现步骤: 首先,创建一个lock node,例如“ locknode ” 其次,客户端lock执行以下方式: 创建(create)一个有序临时节点,例如“ locknode /guid-lock-”,其中guid可以是你客户端的唯一识别序号,如果发生前面说的创建失败问题,需要使用guid进行手动检查。 调用getChildren(watch=false)获取获取子节点列表,注意wtach设置为false,以避免羊群效应(Herd Effect),即同时收到太多无效节点删除通知。 从这个列表中,判断自己创建的节点 序号是否是最小 ,如果是则直接返回true,否则继续往下走。 从步骤2中获取的list中选取排在当前节点前一位的节点,调用exist(watch=true)方法。 如果exist返回false,则回到步骤2; 如果exist返回true,则等待exist的哨兵(watch)回调通知,收到通知后再执行步骤2. 最后,客户端unlock只需要调用delete删除掉节点即可。 节点操作示意图: 流程图: 优点 : 避免了轮询和超时控制 每次一个子节点的删除动作

在分布式微服务架构应用中如何实现最终一致性?

て烟熏妆下的殇ゞ 提交于 2020-03-01 18:01:33
在分布式系统中,实现强一致性并不容易。即使2PC、3PC阶段提交,也无法保证绝对的强一致性。 我们也不能因为极小的不一致性概率,导致系统整体性能低下,或者扩展性受到影响,并且架构也变得极其复杂。因此,在2PC/3PC提交缺乏大规模应用的情况下,最终一致性是一个较好的方案,在业界得到了大量使用。 一、重试机制 如下图所示,Service Consumer 同时调用 Service A 和 Service B,如果Service A 调用成功,Service B 调用识别,为了保证最终一致性,最简单的办法是重试。 重试的时候,要注意设置Service Consumer 的超时时间, 避免长时间等待或卡死,耗尽资源。 Consumer 重试时,需要注意如下几个方面: 超时时间; 重试的次数; 重试的间隔时间; 重试间隔时间的衰减度; 具体实现细节,可以参考《 基于Spring-tryer 优雅的重试方案》。 二、本地记录日志 通过本地记录日志,然后收集到分布式监控系统或者其他后端系统中,启动一个定期检查的工具。根据实际情况,可以选择人工处理。 日志格式:TranID-A-B-Detail TransID为事务ID,可以生成一个随机序列号; Detail 为数据的详细内容; 如果调用A成功,则记录 A success; 如果调用B失败,或者出现故障,没有记录等等,也就是日志中没有B

GitHub上整理的一些工具

我与影子孤独终老i 提交于 2020-02-29 09:19:37
技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs,51cto,csdn:常见的技术社区,各有专长 stackoverflow:IT技术问答网站 GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核, OpenStack等免费的it电子书: http://it-ebooks.info/ DevStore:开发者服务商店 不错的书籍 人件 人月神话 代码大全2 计算机程序设计艺术 程序员的自我修养 程序员修炼之道 高效能程序员的修炼(成为一名杰出的程序员其实跟写代码没有太大关系) 深入理解计算机系统 软件随想录 算法导论(麻省理工学院出版社) 离线数学及其应用 设计模式 编程之美 黑客与画家 编程珠玑 C++ Prime Effective C++ TCP/IP详解 Unix 编程艺术 《精神分析引论》弗洛伊德 搞定:无压力工作的艺术 平台工具(都是开源的好东东哦) Redmine/Trac:项目管理平台 Jenkins/Jira(非开源):持续集成系统(Apache Continuum,这个是Apache下的CI系统,还没来得及研究)