
Distributed意味着将业务划分为不同的子业务,并分布在不同的计算机上执行. 集群意味着将多个服务器聚集在一起以实现同一业务,这可以看作是一台计算机和一个云计算平台,用于通过一组软件系统集中调度和使用分布式部署资源. 为了应付大并发并实现高可用性,您既需要分发又需要群集.
Distributed: 是指将业务拆分为不同的子业务并在不同的计算机上执行.
常用的分布式方法是在负载平衡服务器之后添加一堆Web服务器,然后在顶部构建一个缓存服务器以保存临时状态,并在以后共享,
如图所示:

只有在这种环境中真正分布的Web服务器,并且Web服务器之间没有连接,因此结构和实现非常简单.
集群: 是指将多个服务器聚集在一起以实现同一业务,可以视为一台计算机.
由多个服务器组成的一组计算机作为一个整体存在,并为用户提供一组网络资源. 这些单个服务器是群集的节点.
可扩展性: 集群中的服务节点可以动态添加计算机,以增加集群的处理能力.

高可用性: 如果集群中的某个节点发生故障,则该节点上运行的服务可以被其他服务节点接管,从而增强了集群的高可用性.
常用的群集分类
1. 高可用性群集(High Availability Cluster)
高可用性群集,普通的两节点双机热备份,多节点HA群集.
2. 负载均衡集群(Load Balance Cluster)
Nginx通常用于将请求分发到后端的不同Web服务器以及群集,而负载平衡是为了确保服务器的高可用性和高并发性.
3. 高性能计算集群
称为HPC群集. 这种类型的群集专用于提供强大的计算能力,而这是单台计算机无法提供的.
负载平衡: 负载平衡可以将任务平均分配到群集环境中的计算和网络资源中.
集群容错: 在我们的系统中使用集群环境时,由于各种原因导致集群调用失败时,集群容错起着至关重要的作用.

例如,Dubbo的群集容错能力:
故障转移群集
故障自动切换. 发生故障时,请重试通常用于读取操作的其他服务器,但是重试会带来更长的延迟.
故障转移群集
快速失败,仅启动一个呼叫,失败后立即报告错误. 通常用于非等幂写入操作,例如添加新记录.
故障回复群集
自动恢复故障,记录后台故障请求,并定期重新传输,通常用于消息通知操作.
叉形集群
并行调用多台服务器,并在成功后立即返回. 通常用于需要较高实时性能的读取操作,但它需要浪费更多的服务资源.
从狭义上讲,分布式也类似于集群,但是其组织相对松散. 与集群不同,它具有一定的组织. 一台服务器关闭,其他服务器可以排在第一位.

分发中的每个节点完成一项不同的业务. 如果节点出现故障,则无法访问该业务.
1. 分布式意味着将业务划分为不同的子业务,并在不同的计算机上进行分布和执行.
2. 集群意味着将多个服务器聚集在一起以实现同一服务,这可以看作一台计算机.
每个分布式节点都可以用作群集. 而且群集不一定是分布式的.
云计算平台将通过一组软件系统集中调度和使用分布式资源. 为了应付大并发并实现高可用性,您既需要分发又需要群集.
例如,负载平衡,如果它只是一台服务器,则当它关闭时,该服务器将消失.
分布式的困难在于许多机器需要依赖项来执行不同的任务. 这些任务所需的资源和时间可能非常不同. 一些机器也可能会罢工. 我们如何协调和实现效率?最高,消耗最少,没有错误.
我通常会接触多种分布式系统,例如分布式文件系统,分布式,分布式WebServices,分布式计算等,它们面对不同的场景,但是分布式思想是否相同?<
假设我们有一台服务器,它每秒可以处理一百万个请求. 可以通过http访问此请求以下载网页,通过tcp下载文件,jdbc执行sql,RPC调用接口...,现在我们有了一个数据,该请求为每秒200万. 显然,服务器无法容纳它,它将拒绝访问,甚至崩溃和崩溃. 我该怎么办?
一台机器无法解决的问题,然后是两台机器无法解决. 因此,我们添加一台机器,每台负担一百万. 如果请求数量继续增加,并且两个请求不能解决问题云计算分布式,那么三个请求就会大声呼喊.

此方法称为水平扩展. 如何实现请求的平均分配是负载平衡.
另一个栗子,我们现在有两个数据请求,数据1 900,000,数据2 800,000,以上机器无法容纳云计算分布式,我们添加了一台机器来进行负载平衡,每台机器处理450,000数据1和400,000数据2,但拆分太麻烦了,最好处理数据1和数据2,这也可以解决问题. 这样我们称之为垂直分割.
水平扩展和垂直拆分是分布式体系结构的两个思想,但这不是选择的问题,更多的是并购. 下面描述实际情况. 这也是许多互联网公司的想法.
我目前工作的公司的计算机系统非常大,它自然是一个整个分布式系统. 等等,每个部门都有自己的Web服务器集群,服务器集群,通过同一网站访问的链接可能来自不同的服务器和,对该网站的访问以及将基础分配给不同的服务器集群,这是典型的垂直拆分根据业务. 当各部门的服务器无法容纳时,将进行灵活的扩展,即水平扩展.
在层,某些表非常大,数据量处于数亿个级别. 如果仅是水平扩展,则不一定是最佳扩展. 例如,如果拆分表,则可以按用户ID水平拆分表. id模的模式将用户分为多个表,这些表也可以位于不同的服务器上. 业务垂直拆卸和用户水平拆卸是分布式中的常见解决方案.
例如,Mycat开源分布式中间件mycat.io /
在分布式系统中,解决了负载平衡问题后,另一个问题是数据的一致性. 这需要通过同步来保证. 根据不同的情况和需求,同步方法也是选择性的.
在分布式文件系统(例如产品页面的图片)中,如果进行了修改,则即使延迟几秒钟甚至几分钟是可以接受的,同步要求也不高,因为通常不会造成有损影响,因此,您可以只使用文件修改的时间戳,并在特定时间进行扫描和同步,这会牺牲一致性以提高效率.
但是银行中的分布式不一样. 一点点的同步是不可接受的. 您甚至可以通过牺牲锁定等性能来保证完全一致性.
Paxos算法被认为是共识算法中最好的算法,而Chubby和ZooKeeper中的Paxos是其一致性的核心. 该算法相对难以理解,而且我还没有弄清楚,因此在此不再赘述.
weixin.qq.com/r/0UwmPsnEJJRbrY1d9xnD
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-165331-1.html