什么是分布式,怎么理解

快乐起航2020 2016-10-09 02:35:43
我的理解是 分布式 就是一台服务器上取数据,多台服务器共享。
那么问题来了?我们实际项目中怎么架网站,不同服务器上架同一个网站 可以指向同一个域名。譬如淘宝之类的大型网站。
还有 我们怎么实现数据的一致,数据库怎么架。譬如我们有一个账号已经在A服务器上注册了,B服务器上的数据库如何判断检测?
原谅我是个新手。求赐教
...全文
10639 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
姜煜  2018-03-02
  • 打赏
  • 举报
回复
我以前理解的分布式,一定是分布式计算,即一个功能由多台服务(或多个运用)同时进行计算,每个计算一部分内容,但最终会统一结果输出,但目前在IT行业,负载均衡,加个redis、mq就被称作分布式部署、分布式服务。
software_artisan 2016-10-10
  • 打赏
  • 举报
回复 1
所为分布式,就是由多台设备协同完成一个或并行完成多个任务。
token不能为空 2016-10-09
  • 打赏
  • 举报
回复
引用 10 楼 XiaoPeiyuan2020 的回复:
[quote=引用 7 楼 hanjun0612 的回复:] 多台服务器,联合处理分布的数据。我这么理解的。
我们怎么实现数据的一致,数据库怎么架。譬如我们有一个账号已经在A服务器上注册了,B服务器上的数据库如何判断检测? 关于最后面这个问题是怎么解释的 前辈[/quote] 这个问题,我觉得直接连到一个数据库不就全部解决啦。。
正怒月神 版主 2016-10-09
  • 打赏
  • 举报
回复
引用 10 楼 XiaoPeiyuan2020 的回复:
[quote=引用 7 楼 hanjun0612 的回复:] 多台服务器,联合处理分布的数据。我这么理解的。
我们怎么实现数据的一致,数据库怎么架。譬如我们有一个账号已经在A服务器上注册了,B服务器上的数据库如何判断检测? 关于最后面这个问题是怎么解释的 前辈[/quote] 这个和算法有关系。比如淘宝之前的设计是这么说的。他们有16个数据库。用户名通过一定的算法后对16取模,然后就能确定该用户保存在哪台服务器上了,在到那个数据库去读取数据。并不需要几台服务器的数据是一模一样的。不然就是去了分布式的意义。
快乐起航2020 2016-10-09
  • 打赏
  • 举报
回复
引用 7 楼 hanjun0612 的回复:
多台服务器,联合处理分布的数据。我这么理解的。
我们怎么实现数据的一致,数据库怎么架。譬如我们有一个账号已经在A服务器上注册了,B服务器上的数据库如何判断检测? 关于最后面这个问题是怎么解释的 前辈
快乐起航2020 2016-10-09
  • 打赏
  • 举报
回复
大师
快乐起航2020 2016-10-09
  • 打赏
  • 举报
回复
我们怎么实现数据的一致,数据库怎么架。譬如我们有一个账号已经在A服务器上注册了,B服务器上的数据库如何判断检测? 关于最后面这个问题是怎么解释的
正怒月神 版主 2016-10-09
  • 打赏
  • 举报
回复
多台服务器,联合处理分布的数据。我这么理解的。
  • 打赏
  • 举报
回复
引用 楼主 XiaoPeiyuan2020 的回复:
我的理解是 分布式 就是一台服务器上取数据,多台服务器共享。
如果你原来满脑子就是“一个数据库,多个机器多用户访问”,现在你说你接触到了“多个数据库、每个服务器都有一个本地数据库”,你认为这是还是不是分布式呢? 这就好像一盘菜里边有木耳,木耳是不是这道菜呢?我告诉你,所谓分布式,就好像厨师炒菜,他学习了炒菜的技能。而你一个旁观者纠结于“这道菜里边哪些是你认识的木耳”,这很难回答。厨师炒这道菜必定需要使用木耳,而你硬说“我的理解是 这道菜 就是木耳被放到锅里,然后有用过锅铲扒拉过”,你满脑子里的东西没有从人家的api、设计方式出发,而是纯粹是从自己的臆想出发。 分布式“可以”让每一个机器上都有一个本地数据库。但是这样做的目的是为了什么呢?你从来不关心,也不会提出问题?
  • 打赏
  • 举报
回复
分布式确实是“一个功能分给多台服务去执行”。但是技术的要点在你是否有“核心技术”,而不在于你是否是刚刚进入皮毛。也就是说,你开发了这样一个调度程序(哪怕只有50行c#代码),能够实现100台服务器的调度的最基本的流程,“是骡子是马拉出来溜溜”,你能有这样一个调度程序,这便说明你开始进行分布式操作了。在这个过程中,确实可以使用“redis、mq”等机制(当然也可以自己编写几行、十行c#代码来完成同样功能,而完全不需要另找开源代码),但是如果你认为这些“就是分布式”,那么就可能没有用起来分布式。这就好像同样的材料可以炒出不同味道的菜肴,你说这些材料是这道菜、还是这些材料不属于这道菜?根本没有“是非纠结”,因为根本需要从量变到质变而换一个层面才能深入理解“组件-系统”的问题。 说白了,分布式的核心就是你要贴出分布式调度的api、并且基于一套 api 而给出一些分布式任务的算法设计,以此证明你会一点分布式设计。 看核心技术算法就知道会不会分布式操作——很简单,并不需要纠结于具体某个编程语言框架。而并不是看一个人知不知道一大堆近似的名词儿。 如果你“知道一点名词儿皮毛就说自己会了分布式”,那就跟有些人“我学过了c#语法所以我没有什么可学的编程知识了、只好学别的编程语言了”这种荒唐的说法一样了,跟“滥竽充数”没有两样了。
qq_28023843 2016-10-09
  • 打赏
  • 举报
回复
分布式开发 。。。 我也是新手 但是我觉得你上面描述的是错误的,分布式其实可以这样理解 :一个服务端+多个客户端, 以三层为列子,在三层的基础上增加一个服务端应用程序,这个服务端这要的功能就是提供接口,他的数据来源就是通过调用业务层然后数据访问层获得数据。这就相当于服务端应用程序+bll+dal就组成了一个完整的程序。然后再其他的项目中,你就可以根据服务端的地址在web应用程序中更新服务引用获得客户端,实例化客户端对象你就可以调用服务端提供的接口了。
  • 打赏
  • 举报
回复
我以前理解的分布式,一定是分布式计算,即一个功能由多台服务(或多个运用)同时进行计算,每个计算一部分内容,但最终会统一结果输出,但目前在IT行业,负载均衡,加个redis、mq就被称作分布式部署、分布式服务,感觉分布式已经变成一个时髦词了,不说都不好意思出来见人
闭包客 2016-10-09
  • 打赏
  • 举报
回复
本来一台服务器做的任务,多台服务器来做,就是分布式。 这个问题太大了,说不清。
shoppo0505 2016-10-09
  • 打赏
  • 举报
回复
门是只有一扇,不变。但是门后房间多了很多
掌握分布式mapreduce与raft算法与分布式数据库MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念Map(映射)和Reduce(归约),是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。MapReduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义:1)MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群。2)MapReduce是一个并行计算与运行软件框架(Software Framework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。3)MapReduce是一个并行程序设计模型与方法(Programming Model & Methodology)。它借助于函数式程序设计语言Lisp的设计思想,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可理解性,Raft 将一致性算法分解成了几个关键模块,例如leader人选举、日志复制和安全性。同时它通过实施一个更强的一致性来减少需要考虑的状态的数量。从一个用户研究的结果可以证明,对于学生而言,Raft 算法比 Paxos 算法更加容易学习。Raft 算法还包括一个新的机制来允许集群成员的动态改变,它利用重叠的大多数来保证安全性。 一致性算法允许一组机器像一个整体一样工作,即使其中一些机器出现故障也能够继续工作下去。正因为如此,一致性算法在构建可信赖的大规模软件系统中扮演着重要的角色。在过去的 10 年里,Paxos 算法统治着一致性算法这一领域:绝大多数的实现都是基于 Paxos 或者受其影响。同时 Paxos 也成为了教学领域里讲解一致性问题时的示例。 但是不幸的是,尽管有很多工作都在尝试降低它的复杂性,但是 Paxos 算法依然十分难以理解。并且,Paxos 自身的算法结构需要进行大幅的修改才能够应用到实际的系统中。这些都导致了工业界和学术界都对 Paxos 算法感到十分头疼。 和 Paxos 算法进行过努力之后,我们开始寻找一种新的一致性算法,可以为构建实际的系统和教学提供更好的基础。我们的做法是不寻常的,我们的首要目标是可理解性:我们是否可以在实际系统中定义一个一致性算法,并且能够比 Paxos 算法以一种更加容易的方式来学习。此外,我们希望该算法方便系统构建者的直觉的发展。不仅一个算法能够工作很重要,而且能够显而易见的知道为什么能工作也很重要。 Raft 一致性算法就是这些工作的结果。在设计 Raft 算法的时候,我们使用一些特别的技巧来提升它的可理解性,包括算法分解(Raft 主要被分成了leader人选举,日志复制和安全三个模块)和减少状态机的状态(相对于 Paxos,Raft 减少了非确定性和服务器互相处于非一致性的方式)。一份针对两所大学 43 个学生的研究表明 Raft 明显比 Paxos 算法更加容易理解。在这些学生同时学习了这两种算法之后,和 Paxos 比起来,其中 33 个学生能够回答有关于 Raft 的问题。 Raft 算法在许多方面和现有的一致性算法都很相似(主要是 Oki 和 Liskov 的 Viewstamped Replication),但是它也有一些独特的特性: 强leader:和其他一致性算法相比,Raft 使用一种更强的leader能力形式。比如,日志条目只从leader发送给其他的服务器。这种方式简化了对复制日志的管理并且使得 Raft 算法更加易于理解。leader选举:Raft 算法使用一个随机计时器来选举leader。这种方式只是在任何一致性算法都必须实现的心跳机制上增加了一点机制。在解决冲突的时候会更加简单快捷。成员关系调整:Raft 使用一种共同一致的方法来处理集群成员变换的问

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧