一、分布式定义
今晚翻论坛,想看看别人是怎么说的,一路把2004年的帖子都翻出来了,基本是众说纷纭
有的人说在不同机器上才是分布式,有的人说在不同JVM里才是分布式,也有的人说在不同线程里也算分布式……
我自己的理解是,从概念上讲,如果把业务拆分到不同的节点,就算是分布式。这里的节点可以是web app、JVM、服务器。但是不包括线程,线程的前提就是要跑在一个进程里,那根本就没有办法独立部署,还叫什么分布式呢
用一个办法简单区分,就是如果相互之间需要通过RPC调用,就是分布式。如果可以NPC,就不是分布式
二、分布式的好处
1、复用
分布式可以理解为“服务化”,把一大坨业务,拆分成若干个可独立运行的小业务,或者说子系统,这就使得每个子系统具备了复用的可能性。比如若干个子系统,都用到了用户管理,那么用户管理就可以拆分出来,实现复用
淘宝的商品管理、订单管理,也都是独立部署的子系统,这样上层的业务系统,都可以直接复用了
2、支持异构客户端
这个其实和第1点没有严格的区分。主要说的是将应用的前端和后端逻辑分离,这样就可以支撑不同的客户端。比如典型的新浪微博,可以用浏览器访问,也可以用iOS客户端访问,还可以用android客户端访问,甚至也提供了API,可以自行开发独立客户端
这都要求将应用的前后端分离,否则是不可能实现的
3、提升性能
这点跟将单线程应用改成多线程应用有些类似,都需要满足一定的条件,才能实现性能提升的目的,见另一篇博客
http://kyfxbl.iteye.com/blog/1888407
如果应用的瓶颈在CPU和内存上,然后子任务可并行化,那么用分布式提升性能的“可能性”是比较大的
反之,即使系统采用分布式架构,性能也基本不会有丝毫提升
比如说,系统的瓶颈是在数据库IO上,那么就算拆分成分布式架构,数据库IO瓶颈也依然存在,对性能没有任何好处
或者,把业务拆分后,多个子任务必须要串行执行(顺序依赖、资源竞争),那么分布式也无法带来性能提升
三、分布式的坏处
首先是开发、部署都变得复杂了,不赘述
其次,如果应用不当的话,分布式还有很大的可能会降低性能。因为分布式涉及到RPC,会带来额外的开销
四、集群
集群主要是为了可服务性(双机热备、双机互备)和容灾(数据冗余、数据备份)等
另一方面,集群也能带来性能提升
首先,集群配合负载均衡,通过分流可以同时响应更多请求,这里就可以提升性能
另外,虽然从单个请求来看,集群不能带来性能提升,比如做一个任务要10分钟,那么即使用了集群,一样也是10分钟。但是考虑用4台机器组成集群,那么就可以同时处理4个请求,10分钟里处理了4个请求,从整体来看,性能也是提升了。理论上,采用集群,系统是可以无限水平扩展的
另外一个帖子总结得不错:
“分布式是以缩短单个任务的执行时间来提升效率的;而集群则是通过提高单位时间内执行的任务数来提升效率”
http://www.iteye.com/topic/1121383
五、分布式与集群的联系
基本上是2个不同的概念。非分布式的系统,一样可以做集群;分布式里的每个子系统,都可以单独做集群
分享到:
相关推荐
数据库中间件06-mycat的读写分离03-读写分离补充 00:03:37分钟 | 第38节 数据库中间件07-mycat的高可用-01 00:10:01分钟 | 第39节 数据库中间件08-mycat的高可用-02 00:06:13分钟 | 第40节 数据库中间件09-mycat...
单机和集群安装相差不多,先说单机然后补充集群的几点配置。 第一步,先安装工具软件编辑器:vim 代码如下:sudo apt-get install vimssh服务器: openssh,先安装ssh是为了使用远程终端工具(putty或xshell等),这样...
与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 ...
├─补充2:Redis3.0新特性、主从复制、集群视频教程 │ │ 打开必读.txt │ │ │ ├─相关资料 │ │ redis-3.0.1.tar.gz │ │ redis-3.0.2.tar.gz │ │ redis-3.2.1.gem │ │ Redis集群.docx │ │ ...
2.提出了一种基于分布式故障检测机制的高可靠数据采集框架数据采集是海量网络数据处理业务的首要工作,只有保证采集数据的完整和可信,后续进行的数据处理工作结果才有意义和价值。因此本文首先针对当前移动互联网流量...
nn.DataParallel 使用 torch.distributed 加速并行训练 使用 torch.multiprocessing 取代启动器 使用 apex 再加速 horovod 的优雅实现 GPU 集群上的分布式补充:分布式这里,笔者记录了使用 4 块 Tesla V100-PICE 在...
MapReduce(2004)是GFS架构的一个补充,因为它能够充分利用GFS集群中所有低价服务器提供的大量CPU 但是两个系统都有一定的缺陷: 两个系统都缺乏实时随机存取数据的能力,意味着尚不足以处理Web服务 GFS的另一个...
可以搭建大型的分布式集群,处理PB级的数据服务于大公司,也可以运行在单机上,服务于小公司 2)、ES本身不是新技术,而是将全文检索、数据分析、分布式技术融合在一起而形成的 lucene(全文检索) 商用的数据...
第三,这一版在上一版的基础上根据最新的技术做了更新和补充,能满足读者学习最新技术的需求。本书第1版不仅取得了好的销量,而且广受好评,第2版在内容上有很大的提升,相信能让更多的读者从中受益。 —— ...
与Hadoop不同,Spark和Scala能够紧密集成,其中的Scala可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建Spark是为了支持分布式数据集上的迭代作业,但是实际上它是对Hadoop的补充,可以在Hadoop文件...
1.1.1 待补充 3 1.2 安装centos6.5 3 1.2.1 注意安装细节 3 1.2.2 设置VIM 命令 3 1.2.3 配置仅主机连网 4 1.2.4 配置网络出现的问题 5 1.2.5 设置桥接上网 6 1.2.6 设置nat上网 12 2 安装基本工具 15 2.1 SSH免登陆...
与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 ...
与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 ...
与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 ...
与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 ...
与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 ...
与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 ...
目录建立容器映像将Kiali运算符和Kiali图像推送到您的集群将Kiali Operator部署到您的集群将Kiali部署到您的集群从集群中删除Kiali 重新加载Kiali图片从集群中删除Kiali运算符独立运行配置嵌入Kiali 配置外部服务...
它包括智能化客户端、集群式服务端和开放的平台三个层次。"云安全"是现有反病毒技术基础上的强化与补充,最终目的是为了让互联网时代的用户都能得到更快、更全面的安全保护。 首先稳定高效的智能客户端,它可以是...
如果您有任何补充或改进,请提出问题或请求。 内容 -对集群管理器运行TensorFlow泊坞窗的配置。 用于ML的Kubernetes本机平台 用于运行分布式K8s自定义资源 不同版本的TensorFlow的Jupyter图像 Docker映像和K8s...