集群_集群管理 - CSDN
集群 订阅
集群通信系统是一种用于集团调度指挥通信的移动通信系统,主要应用在专业移动通信领域。该系统具有的可用信道可为系统的全体用户共用,具有自动选择信道功能,它是共享资源、分担费用、共用信道设备及服务的多用途、高效能的无线调度通信系统。 展开全文
集群通信系统是一种用于集团调度指挥通信的移动通信系统,主要应用在专业移动通信领域。该系统具有的可用信道可为系统的全体用户共用,具有自动选择信道功能,它是共享资源、分担费用、共用信道设备及服务的多用途、高效能的无线调度通信系统。
信息
特    点
音通信采用PTT
类    型
移动通信系统
中文名
集群
功    能
共享资源、分担费用等
集群简介
集群通信的最大特点是话音通信采用PTT(Push To Talk),以一按即通的方式接续,被叫无需摘机即可接听,且接续速度较快,并能支持群组呼叫等功能,它的运作方式以单工、半双工为主,主要采用信道动态分配方式,并且用户具有不同的优先等级和特殊功能,通信时可以一呼百应。追溯到它的产生,集群的概念确实是从有线电话通信中的“中继”概念而来。1908年,E.C.Mo1ina发表的“中继”曲线的概念等级,证明了一群用户的若干中继线路的概率可以大大提高中继线的利用率。“集群”这一概念应用于无线电通信系统,把信道视为中继。“集群”的概念,还可从另一角度来认识,即与机电式(纵横制式)交换机类比,把有线的中继视为无线信道,把交换机的标志器视为集群系统的控制器,当中继为全利用度时,就可认为是集群的信道。集群系统控制器能把有限的信道动态地、自动地最佳分配给系统的所有用户,这实际上就是信道全利用度或我们经常使用的术语“信道共用”。
收起全文
  • 集群(1)---集群的概念

    千次阅读 2019-04-21 23:35:04
    1、什么是集群? 将同一个业务部署在多台服务器上,如果主机宕机了,其它服务器可以自动接替主机服务器工作,以实现持续性为客户提供服务,并且处理科研实验以及核处理等大型计算业务,单台大型计算机依然无法胜任,集群...

    1、什么是集群?

    将同一个业务部署在多台服务器上,如果主机宕机了,其它服务器可以自动接替主机服务器工作,以实现持续性为客户提供服务,并且处理科研实验以及核处理等大型计算业务,单台大型计算机依然无法胜任,集群可以将一个计算业务交给集群中的多台计算机进行处理。

    2、集群的特点?

    1)、可扩展性:集群的性能不限制于单一的服务实体,新的服务实体可以动态的添加到集群,从而增强了集群的性能。

    2)、高可用性:集群当其中一个节点发生故障时,这台节点上所运行的应用程序将在另一台节点被自动接管,消除单点故障对于增强数据可用性、可达性和可靠性是非常重要的。

     

    3、集群必须的2大能力

    1)、负载均衡:负载均衡将任务比较均匀的分布到集群环境下的计算和网络资源,以提高数据的吞吐量。

    2)、错误恢复:如果集群中的某一台服务器由于故障或者维护需要无法使用,资源和应用程序将转移到可以的集群节点上。

                                这种由于某个节点的资源不能工作,另一个可用节点中的资源能够透明的接管并继续完成任务的过程。

    负载均衡和错误恢复要求各服务实体中有执行同一任务的资源存在,而且对于同一任务的各个资源来说,执行任务所需的信息视图必须是相同的。

     

    4、集群和分布式的区别?

    相同点:分布式和集群都是需要有很多节点服务器通过网络协同工作完成整体的任务目标。

    不同点:分布式是指将业务系统进行拆分,即分布式的每一个节点都是实现不同的功能。

                   集群每个节点做的都是同一件事情。

     

    5、项目中常见的集群有哪些?

    1)、zookeeper集群

    2)、SolrCloud集群

    3)、Redis Cluster集群

     

    展开全文
  • PS:这篇文章算是笔记,仅部分文字是原创,相当内容只是收集、整理、提炼、总结别人写的。 没有标为原创 是出于对部分内容原作者的尊重和感谢... 但若你要转载还是请带上我家地址哦,毕竟这些内容都不是现成的哦 ~...

    PS:这篇文章算是笔记,仅部分文字是原创,相当内容只是收集、整理、提炼、总结别人写的。

    没有标为原创 是出于对部分内容原作者的尊重和感谢 ...

    但若你要转载还是请带上我家地址哦,毕竟这些内容都不是现成的哦 ~ ~ ~

     

    一、大白话解说,半分钟就懂,用生活中的例子来说明:

     

    小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。

    后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,两个厨师的关系是集群。

    为了让厨师专心炒菜,把菜做到极致,再请了个配菜师负责切菜,备菜,备料 ...  厨师和配菜师的关系是分布式。

     

    一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群。

    一个配菜师因故请假了,但是其余的配菜师还是该啥就干啥,只是没请假的配菜师任务均匀的加量了,但他们的任务和职责是不变的,这是集群。

     

    集群:多个人在一起作同样的事 。

    分布式 :多个人在一起作不同的事 。

     

     

    二、图解:

     

    以上内容转自:https://www.zhihu.com/question/20004877

     

    以下内容是个人整理的:

    三、区别联系 (其实上面的内容应该已经让你理解2者了)

     

    1)我记得在一本讲 tcp/ip 的书上有这样一句话:分布式是指 多个系统协同合作完成一个特定任务的系统。

    分布式是解决中心化管理的问题,把所有的任务叠加到一个节点处理,太慢了。

    所以把一个大的问题拆分为多个小的问题,并分别解决,最终协同合作。分布式的主要工作是分解任务,将职能拆解。

     

    2) 集群主要的使用场景是为了分担请求的压力,也就是在几个服务器上部署相同的应用程序,来分担客户端请求。

    当压力进一步增大的时候,可能在需要存储的部分,mysql 无法面对很多的写压力。因为在 mysql 做成集群之后,主要的写压力还是在 master 的机器上面,其他 slave 机器无法分担写压力,从而这个时候,也就引出来分布式。

    分布式的主要应用场景是单台机器已经无法满足这种性能的要求,必须要融合多个节点,并且节点之间是相关之间有交互的。相当于在写 mysql 的时候,每个节点存储部分数据,也就是分布式存储的由来。存储一些非结构化数据:静态文件、图片、pdf、小视频 ... 这些也就是分布式文件系统的由来。

     

    3)集群主要是简单加机器解决问题,对于问题本身不做任何分解;

    分布式处理里必然包含任务分解与答案归并。分布式中的某个子任务节点,可能由一个集群来代替;集群中任一节点,都是做一个完整的任务。

    集群和分布式都是由多个节点组成,但是集群之间的通信协调基本不需要;而分布式各个节点的通信协调必不可少。

     将一套系统拆分成不同子系统部署在不同服务器上(这叫分布式),

     然后部署多个相同的子系统在不同的服务器上(这叫集群),部署在不同服务器上的同一个子系统应做负载均衡。 

     

    分布式:一个业务拆分为多个子业务,部署在多个服务器上 。 

    集群:同一个业务,部署在多个服务器上 。

     

    参考:https://www.zhihu.com/question/20004877

     

    展开全文
  • 服务器集群

    千次阅读 2018-10-12 12:25:52
    计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。 集群系统中的单个计算机通常称为节点,通常通过...

    目录

    集群

    LVS

    LVS-NAT  

    LVS-DR 

    LVS-TUN

    LVS的调度算法


    集群

    计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。 集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。 集群计算机通常用来改进单个计算机的计算速度和可靠性。 集群就是一组独立的计算机,通过网络连接组合成一个组合来共同完一个任务。

    为什么要使用集群?

    • 高性能performance:一些需要很强的运算处理能力比如天气预报,核试验等。这就不是几台计算机能够搞定的。这需要上千台一起来完成这个工作的
    • 价格有效性:通常一套系统集群架构,只需要几台或数十台服务器主机即可,与动则上百万的专用超级计算机相比具有更高的性价比
    • 可伸缩性: 当服务器负载压力增长的时候,系统能够扩展来满足需求,且不降低服务质量 
    • 高可用性: 尽管部分硬件和软件发生故障,整个系统的服务必须是7*24小时运行的

    集群分类:

    • 负载均衡集群(Loadbalancingclusters)简称LBC 
    • 高可用性集群(High-availabilityclusters)简称HAC 
    • 高性能计算集群(High-perfomanceclusters)简称HPC 
    • 网格计算(Gridcomputing)

    负责均衡集群的作用:

    • 提供一种廉价、有效、透明的方法,来扩展网络设备和服务器的负载带宽、增加吞吐量,加强网络数据处理能力、提高网络的灵活性和可用性
    • 把单台计算机无法承受的大规模的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间,提升用户体验
    • 单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高
    • 7*24小时的服务保证,任意一个或多个设备节点设备宕机,不会影响到业务。在负载均衡集群中,所有计算机节点都应该提供相同的服务,集群负载均衡获取所有对该服务的如站请求

    负载均衡设备:

    • 常用的负载均衡开源软件有 Nginx、LVS、Haproxy
    • 商业的硬件负载均衡设备Cisco的 LocalDirector、F5 的 Big/IP 和  Alteon 的 ACEDirector

    LVS

    LVS (Linux Virtual Server) 即 Linux 虚拟服务器,将多台虚拟主机组织起来满足同一个需求。是一个虚拟的服务器集群系统。本项目在 1998 年 5 月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。 现在 LVS 已经是 Linux 内核标准的一部分。使用 LVS 可以达到的技术目标是:通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。 LVS 是一个实现负载均衡集群的开源软件项目,LVS架构从逻辑上可分为 调度层、Server集群层 和 共享存储。

    LVS的组成

    • ipvs(ip virtual server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码。
    • ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)

    LVS相关术语

    • DS:Director Server。指的是前端负载均衡器节点。
    • RS:Real Server。后端真实的工作服务器。
    • VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址。
    • DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
    • RIP:Real Server IP,后端服务器的IP地址。
    • CIP:Client IP,访问客户端的IP地址。

    LVS的工作原理

    LVS的工作模式

    • LVS/NAT模式(Network address translation)
    • LVS/TUN模式(tunneling)
    • LVS/ DR模式(Direct routing) 

    LVS-NAT  

    LVS-NAT原理和特点

    LVS-NAT模型的特性

    • RS应该使用私有地址,RS的网关必须指向DIP 
    • DIP和RIP必须在同一个网段内 
    • 请求和响应报文都需要经过Director Server,高负载场景中,Director Server易成为性能瓶颈 
    • 支持端口映射 
    • RS可以使用任意操作系统 
    • 缺陷:对Director Server压力会比较大,请求和响应都需经过director server 

    LVS-DR 

    LVS-DR的原理和特点

    LVS-DR的模型和特性

    • 保证前端路由将目标地址为VIP报文统统发给Director Server,而不是RS
    • RS可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对RIP进行直接访问
    • RS跟Director Server必须在同一个物理网络中
    • 所有的请求报文经由Director Server,但响应报文必须不能进过Director Server
    • 不支持地址转换,也不支持端口映射    
    • RS可以是大多数常见的操作系统
    • RS的网关绝不允许指向DIP(因为我们不允许他经过director)
    • RS上的lo接口配置VIP的IP地址
    • 缺陷:RS和DS必须在同一机房中 

    LVS-TUN

    LVS-TUN的原理和特点 

    LVS-TUN模型特性

    • RIP、VIP、DIP全是公网地址
    • RS的网关不会也不可能指向DIP
    • 所有的请求报文经由Director Server,但响应报文必须不能进过Director Server
    • 不支持端口映射
    • RS的系统必须支持隧道

    LVS的调度算法

    针对不同的网络服务需求和服务器配置,IPVS调度器实现了如下八种负载调度算法:
    1、轮叫(Round Robin)简称RR
    这种算法是最简单的,就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是简单。轮询算法假设所有的服务器处理请求的能力都是一样的,调度器会将所有的请求平均分配给每个真实服务器,不管后端 RS 配置和处理能力,非常均衡地分发下去
    2、加权轮叫(Weighted Round Robin) 简称WRR
    这种算法比 rr 的算法多了一个权重的概念,可以给 RS 设置权重,权重越高,那么分发的请求数越多,权重的取值范围 0 – 100。主要是对rr算法的一种优化和补充, LVS 会考虑每台服务器的性能,并给每台服务器添加要给权值,如果服务器A的权值为1,服务器B的权值为2,则调度到服务器B的请求会是服务器A的2倍。权值越高的服务器,处理的请求越多
    3、最少链接(Least Connections)简称LC
    这个算法会根据后端 RS 的连接数来决定把请求分发给谁,比如 RS1 连接数比 RS2 连接数少,那么请求就优先发给 RS1
    4、加权最少链接(Weighted Least Connections)简称WLC
    这个算法比 lc 多了一个权重的概念。
    5、基于局部性的最少链接(Locality-Based Least Connections)简称LBLC
    这个算法是请求数据包的目标 IP 地址的一种调度算法,该算法先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器
    6、带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)简称LBLCR
    记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标 IP 到一组服务器之间的映射关系,防止单点服务器负载过高。
    7、目标地址散列调度(Destination Hashing)简称DH
    该算法是根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器
    8、源地址散列调度(Source Hashing)简称SH
    与目标地址散列调度算法类似,但它是根据源地址散列算法进行静态分配固定的服务器资源

    展开全文
  • 什么是集群,集群的概念介绍

    万次阅读 2018-10-04 15:55:34
    集群术语须知 服务硬件:指提供计算服务的硬件,比如 PC 机、PC 服务器。 服务实体:服务实体通常指服务软体和服务硬体。 节点(node):运行 Heartbeat 进程的一个独立主机称为节点,节点是 HA 的核心组成部分,每...

    集群术语须知

    服务硬件:指提供计算服务的硬件,比如 PC 机、PC 服务器。

    服务实体:服务实体通常指服务软体和服务硬体。

    节点(node):运行 Heartbeat 进程的一个独立主机称为节点,节点是 HA 的核心组成部分,每个节点上运行着操作系统和Heartbeat 软件服务。

    资源(resource):资源是一个节点可以控制的实体,当节点发生故障时,这些资源能够被其他节点接管。如: 磁盘分区、文件系统、IP 地址、应用程序服务、共享存储

    事件(event):事件也就是集群中可能发生的事情,例如节点系统故障、网络连通故障、网卡故障和应用程序故障等。这些事件都会导致节点的资源发生转移,HA 的测试也是基于这些事件进行的。

    什么是集群

    集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源,这些单个的计算机系统就是集群的节点(node)。集群提供了以下关键的特性。

    (一) 可扩展性。集群的性能不限于单一的服务实体,新的服务实体可以动态的加入到集群,从而增强集群的性能。

    (二) 高可用性。集群通过服务实体冗余使客户端免于轻易遭遇到“out of service”警告。当一台节点服务器发生故障的时候,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管。消除单点故障对于增强数据可用性、可达性和可靠性是非常重要的。

    (三) 负载均衡。负载均衡能把任务比较均匀的分布到集群环境下的计算和网络资源,以便提高数据吞吐量。

    (四) 错误恢复。如果集群中的某一台服务器由于故障或者维护需要而无法使用,资源和应用程序将转移到可用的集群节点上。这种由于某个节点中的资源不能工作,另一个可用节点中的资源能够透明的接管并继续完成任务的过程叫做错误恢复。

    分布式与集群的联系与区别如下:

    (一) 分布式是指将不同的业务分布在不同的地方。

    (二) 而集群指的是将几台服务器集中在一起,实现同一业务。

    (三) 分布式的每一个节点,都可以做集群,而集群并不一定就是分布式的。而分布式,从狭义上理解,也与集群差不多,但是它的组织比较松散,不像集群,有一定组织性,一台服务器宕了,其他的服务器可以顶上来。分布式的每一个节点,都完成不同的业务,一个节点宕了,这个业务就不可访问了。

    集群主要分成三大类:

    HA:高可用集群(High Availability Cluster)。

    LBC:负载均衡集群/负载均衡系统(Load Balance Cluster)

    HPC:科学计算集群(High Performance Computing Cluster)/高性能计算(High Performance Computing)集群。

    为什么搭建数据库集群

    随着经济的高速发展,企业规模的迅猛扩张,企业用户的数量、数据量的爆炸式增长,对数据库提出了严峻的考验。对于所有的数据库而言,除了记录正确的处理结果之外,还面临着以下几方面的挑战。
    l 如何提高处理速度,实现数据库的均衡负载。l 如何保证数据库的可用性、数据安全性、以及如何实现数据集群可扩性。l 怎么综合解决这些问题成为众多企业关注的焦点。
    在数据库上,组建集群也是同样的道理,主要有以下几个原因:

    (一) 伴随着企业的成长,业务量提高,数据库的访问量和数据量快速增长,其处理能力和计算速度也相应增大,使得单一的设备根本无法承担。

    (二) 在以上情况下,若扔掉现有设备,做大量的硬件升级,势必造成现有资源的浪费,而且下一次业务量提升时,又将面临再一次硬件升级的高额投入。于是,人们希望通过几个中小型服务器组建集群,实现数据库的负载均衡及持续扩展;在需要更高数据库处理速度时,只要简单的增加数据库服务器就可以得到扩展。

    (三) 数据库作为信息系统的核心,起着非常重要的作用,单一设备根本无法保证系统的下持续运行,若发生系统故障,将严重影响系统的正常运行,甚至带来巨大的经济损失。于是,人们希望通过组建数据库集群,实现数据库的高可用,当某节点发生故障时,系统会自动检测并转移故障节点的应用,保证数据库的持续工作。

    (四) 企业的数据库保存着企业的重要信息,一些核心数据甚至关系着企业的命脉,单一设备根本无法保证数据库的安全性,一旦发生丢失,很难再找回来。于是,人们希望通过组建数据库集群,实现数据集的冗余,通过备份数据来保证安全性。

    数据库集群的分类

    数据库集群技术是将多台服务器联合起来组成集群来实现综合性能优于单个大型服务器的技术,这种技术不但能满足应用的需要,而且大幅度的节约了投资成本。数据库集群技术分属两类体系:基于数据库引擎的集群技术和基于数据库网关(中间件)的集群技术。在数据库集群产品方面,其中主要包括基于数据库引擎的集群技术的 Oracle RAC、Microsoft MSCS、IBM DB2UDB、Sybase ASE,以及基于数据库网关(中间件)的集群技术的 ICX-UDS 等产品。

    一般来讲,数据库集群软件侧重的方向和试图解决的问题划分为三大类:
    l 负载均衡集群(Load Balance Cluster,LBC)侧重于数据库的横向扩展,提升数据库的性能。l 高可用性集群(High Availability Cluster,HAC)侧重保证数据库应用持续不断。大部分的数据库集群侧重与此。l 高安全性集群(High Security Cluster,HSC)侧重于容灾。
    只有 Oracle RAC 能实现以上三方面

    可扩展的分布式数据库架构

    (一) Oracle RAC:

    其架构的最大特点是共享存储架构(Shared-storage),整个 RAC 集群是建立在一个共享的存储设备之上的,节点之间采用高速网络互联。OracleRAC 提供了非常好的高可用特性,比如负载均衡和应用透明切块(TAF),其最大的优势在于对应用完全透明,应用无需修改便可切换到RAC 集群。但是RAC 的可扩展能力有限,首先因为整个集群都依赖于底层的共享存储,所以共享存储的 I/O 能力和可用性决定了整个集群的可以提供的能力,对于 I/O 密集型的应用,这样的机制决定后续扩容只能是
    Scale up(向上扩展)类型,对于硬件成本、开发人员的要求、维护成本都相对比较高。Oracle显然也意识到了这个问题,在 Oracle 的 MAA(Maximum Availability Architecture)架构中,采用 ASM 来整合多个存储设备的能力,使得 RAC 底层的共享存储设备具备线性扩展的能力,整个集群不再依赖于大型存储的处理能力和可用性。

    RAC 的另外一个问题是,随着节点数的不断增加,节点间通信的成本也会随之增加,当到某个限度时,增加节点可能不会再带来性能上的提高,甚至可能造成性能下降。这个问题的主要原因是 Oracle RAC 对应用透明,应用可以连接集群中的任意节点进行处理,当不同节点上的应用争用资源时,RAC 节点间的通信开销会严重影响集群的处理能力。所以对于使用 ORACLE RAC 有以下两个建议:
    l 节点间通信使用高速互联网络;l 尽可能将不同的应用分布在不同的节点上。
    基于这个原因,Oracle RAC 通常在 DSS 环境(决策支持系统Decision Support System ,简称DSS)中可以做到很好的扩展性,因为 DSS 环境很容易将不同的任务分布在不同计算节点上,而对于 OLTP 应用(On-Line Transaction Processing联机事务处理系统),Oracle
    RAC 更多情况下用来提高可用性,而不是为了提高扩展性。

    (二) MySQL Cluster

    MySQL cluster 和 Oracle RAC 完全不同,它采用 无共享架构Shared nothing(shared nothing architecture)。整个集群由管理节点(ndb_mgmd),处理节点(mysqld)和存储节点(ndbd)组 成,不存在一个共享的存储设备。MySQL cluster 主要利用了 NDB 存储引擎来实现,NDB 存储引擎是一个内存式存储引擎,要求数据必须全部加载到内存之中。数据被自动分布在集群中的不同存 储节点上,每个存储节点只保存完整数据的一个分片(fragment)。同时,用户可以设置同一份数据保存在多个不同的存储节点上,以保证单点故障不会造
    成数据丢失。MySQL cluster 主要由 3 各部分组成:
    l SQL 服务器节点l NDB 数据存储节点l 监控和管理节点
    这样的分层也是与 MySQL 本身把 SQL 处理和存储分开的架构相关系的。MySQL cluster 的优点在于其是一个分布式的数据库集群,处理节点和存储节点都可以线性增加,整个集群没有单点故障,可用性和扩展性都可以做到很高,更适合 OLTP 应用。但是它的问题在于:
    l NDB(“NDB” 是一种“内存中”的存储引擎,它具有可用性高和数据一致性好的特点。)
    存储引擎必须要求数据全部加载到内存之中,限制比较大,但是目前 NDB 新版本对此做了改进,允许只在内存中加 载索引数据,数据可以保存在磁盘上。l 目前的 MySQL cluster 的性能还不理想,因为数据是按照主键 hash 分布到不同的存储节点上,如果应用不是通过主键去获取数据的话,必须在所有的存储节点上扫描, 返回结果到处理节点上去处理。而且,写操作需要同时写多份数据到不同的存储节点上,对节点间的网络要求很高。
    虽然 MySQL cluster 目前性能还不理想,但是 share nothing 的架构一定是未来的趋势,Oracle 接手 MySQL之后,也在大力发展 MySQL cluster,我对 MySQL cluster 的前景抱有很大的期待。

    (三) 分布式数据库架构

    MySQL 5 之后才有了数据表分区功能(Sharding), Sharding 不是一个某个特定数据库软件附属的功能,而是在具体技术细节之上的抽象处理,是水平扩展(Scale Out,亦或横向扩展、向外扩展)的解决方案,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。比如 Oracle 的 RAC 是采用共享存储机制,对于 I/O 密集型的应用,瓶颈很容易落在存储上,这样的机制决定后续扩容只能是 Scale Up(向上扩展) 类型,对于硬件成本、开发人员的要求、维护成本都相对比较高。Sharding
    基本上是针对开源数据库的扩展性解决方案,很少有听说商业数据库进行 Sharding 的。目前业界的趋势基本上是拥抱 Scale Out,逐渐从 Scale Up 中解放出来。

    Sharding 架构的优势在于,集群扩展能力很强,几乎可以做到线性扩展,而且整个集群的可用性也很高,部分节点故障,不会影响其他节点提供服务。Sharding 原理简单,容易实现,是一种非常好的解决数据库扩展性的方案。Sharding 并不是数据库扩展方案的银弹,也有其不适合的场景,比如处理事务型的应用它可能会造成应用架构复杂或者限制系统的功能,这也是它的缺陷所在。读写分离是架构分布式系统的一个重要思想。不少系统整体处理能力并不能同业务的增长保持同步,因此势必会带来瓶颈,单纯的升级硬件并不能一劳永逸。针对业务类型特点,需要从架构模式进行一系列的调整,比如业务模块的分割,数据库的拆分等等。集中式和分布式是两个对立的模式,不同行业的应用特点也决定了架构的思路。如互联网行业中一些门户站点,出于技术和成本等方面考虑,更多的采用开源的数据库产品(如 MYSQL),由于大部分是典型的读多写少的请求,因此为
    MYSQL 及其复制技术大行其道提供了条件。而相对一些传统密集交易型的行业,比如电信业、金融业等,考虑到单点处理能力和可靠性、稳定性等问题,可能更多的采用商用数据库,比如 DB2、Oracle 等。就数据库层面来讲,大部分传统行业核心库采用集中式的架构思路,采用高配的小型机做主机载体,因为数据库本身和主机强大的处理能力,数据库端一般能支撑业务的运转,因此,Oracle 读写分离式的架构相对MYSQL 来讲,相对会少。读写分离架构利用了数据库的复制技术,将读和 写分布在不同的处理节点上,从而达到提高可用性和扩展性的目的。最通常的做法是利用
    MySQL Replication 技术,Master DB 承担写操作,将数据变化复制到多台 Slave DB上,并承担读的操作。这种架构适合 read-intensive 类型的应用,通过增加 Slave DB 的数量,读的性能可以线性增长。为了避免 Master DB 的单点故障,集群一般都会采用两台 Master DB 做双机热备,所以整个集群的读和写的可用性都非常高。除了 MySQL,Oracle 从 11g 开始提供 Active Standby 的功能,也具备了实现读写分离架构的基础。读写分离架构的缺陷在于,不管是
    Master 还是 Slave,每个节点都必须保存完整的数据,如 果在数据量很大的情况下,集群的扩展能力还是受限于单个节点的存储能力,而且对于 Write-intensive 类型的应用,读写分离架构并不适合。

    采用 Oracle 读写分离的思路,Writer DB 和 Reader DB 采用日志复制软件实现实时同步; Writer DB 负责交易相关的实时查询和事务处理,Reader DB 负责只读接入,处理一些非实时的交易明细,报表类的汇总查询等。同时,为了满足高可用性和扩展性等要求,对读写端适当做外延,比如 Writer DB 采用 HA 或者 RAC 的架构模式,目前,除了数据库厂商的 集群产品以外,解决数据库扩展能力的方法主要有两个:数据分片和读写分离。数据分片(Sharding)的原理就是将数据做水平切分,类似于
    hash 分区 的原理,通过应用架构解决访问路由和Reader DB 可以采用多套,通过负载均衡或者业务分离的方式,有效分担读库的压力。

    对于 Shared-nothing 的数据库架构模式,核心的一个问题就是读写库的实时同步;另外,虽然 Reader DB只负责业务查询,但并不代表数据库在功能上是只读的。只读是从应用角度出发,为了保证数据一致和冲突考虑,因为查询业务模块可能需要涉及一些中间处理,如果需要在数据库里面处理(取决与应用需求和设计),所以Reader DB 在功能上仍然需要可写。下面谈一下数据同步的技术选型问题:

    能实现数据实时同步的技术很多,基于 OS 层(例如 VERITAS VVR),基于存储复制(中高端存储大多都支持),基于应用分发或者基于数据库层的技术。因为数据同步可能并不是单一的 DB 整库同步,会涉及到业务数据选择以及多源整合等问题,因此 OS 复制和存储复制多数情况并不适合做读写分离的技术首选。基于日志的 Oracle 复制技术,Oracle 自身组件可以实现,同时也有成熟的商业软件。选商业的独立产品还是 Oracle 自身的组件功能,这取决于多方面的因素。比如团队的相应技术运维能力、项目投入成本、业务系统的负载程度等。

    采用 Oracle 自身组件功能,无外乎 Logical Standby、Stream 以及 11g 的 Physical Standby(Active Data Guard),对比来说,Stream 最灵活,但最不稳定,11g Physical Standby 支持恢复与只读并行,但由于并不是日志的逻辑应用机制,在读写分离的场景中最为局限。如果技术团队对相关技术掌握足够充分,而选型方案的处理能力又能支撑数据同步的要求,采用 Oracle 自身的组件完全可行。选择商业化的产品,更多出于稳定性、处理能力等考虑。市面上成熟的
    Oracle 复制软件也无外乎几种,无论是老牌的 Shareplex,还是本土 DSG 公司的 RealSync 和九桥公司的 DDS,或是 Oracle 新贵 Goldengate,都是可供选择的目标。随着 GoldenGate 被 Oracle 收购和推广,个人认为 GoldenGate 在容灾、数据分发和同步方面将大行其道。当然,架构好一个可靠的分布式读写分离的系统,还需要应用上做大量设计,不在本文讨论范围内。

    (四) CAP 和 BASE 理论

    分布式领域 CAP 理论:
    l Consistency(一致性), 数据一致更新,所有数据变动都是同步的l Availability(可用性), 好的响应性能l Partition tolerance(分区容错性) 可靠性
    定理:任何分布式系统只可同时满足二点,没法三者兼顾。

    忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。

    关系数据库的 ACID 模型拥有 高一致性 + 可用性 很难进行分区:
    l Atomicity 原子性:一个事务中所有操作都必须全部完成,要么全部不完成。l Consistency 一致性. 在事务开始或结束时,数据库应该在一致状态。l Isolation 隔离层. 事务将假定只有它自己在操作数据库,彼此不知晓。l Durability. 一旦事务完成,就不能返回。
    (五) 跨数据库事务

    2PC (two-phase commit), 2PC is the anti-scalability pattern (Pat Helland) 是反可伸缩模式的,也就是说传统关系型数据库要想实现一个分布式数据库集群非常困难,关系型数据库的扩展能力十分有限。而近年来不断发展壮大的 NoSQL(非关系型的数据库)运动,就是通过牺牲强一致性,采用 BASE 模型,用最终一致性的思想来设计分布式系统,从而使得系统可以达到很高的可用性和扩展性。那么,有没有可能实现一套分布式数据库集群,既保证可用性和一致性,又可以提供很好的扩展能力呢?

    BASE 思想的主要实现有按功能划分数据库 sharding 碎片BASE 思想主要强调基本的可用性,如果你需要 High 可用性,也就是纯粹的高性能,那么就要以一致性或容错性为牺牲,BASE 思想的方案在性能上还是有潜力可挖的。
    l 共同点:都是关系数据库 SQL 以外的可选方案,逻辑随着数据分布,任何模型都可以自己持久化,将数据处理和数据存储分离,将读和写分离,存储可以是异步或同步,取决于对一致性的要求程度。l 不同点:NOSQL 之类的 Key-Value 存储产品是和关系数据库头碰头的产品 BOX,可以适合非 Java 如 PHP RUBY等领域,是一种可以拿来就用的产品,而领域模型 + 分布式缓存 + 存储是一种复杂的架构解决方案,不是产品,但这种方式更灵活,更应该是架构师必须掌握的。
    目前,已经有很多分布式数据库的产品,但是绝大部分是面向 DSS 类型的应用,因为相比较 OLTP 应用,DSS 应用更容易做到分布式扩展,比如基于 PostgreSQL 发展的 Greenplum,就很好的解决了可用性和扩展性的问题,并且提供了很强大的并行计算能力。对于 OLTP 应用,业务特点决定其要求:高可用性,一致性, 响应时间短,支持事务和 join 等等。数据库和 NoSQL当越来越多的 NoSQL 产品涌现出来,它们具备很多关系型数据库所不具备的特性,在可用性和扩展性方面都可以做到很好。

    第一,NoSQL 的应用场景非常局限,某个类型的 NoSQL 仅仅针对特定类型的应用场景而设计。而关系型数据库则要通用的多,使用 NoSQL 必须搞清楚自己的应用场景是否适合。

    第二,利用关系型数据库配合应用架构, 比如 Sharding 和读写分离技术,同样可以搭建出具备高可用和扩展性的分布式数据库集群。

    第三,关系型数据库厂商依然很强大,全世界有大量的 用户,需求必然会推动新的产品问世。

    第四,硬件的发展日新月异,比如闪存的技术的不断成熟,未来闪存可以作为磁盘与内存之间的 cache,或者完 全替代磁盘。而内存价格越来越低,容量越来越大,In-memory cache 或 database 的应用越来越广泛,可以给应用带来数量级的性能提升。数据库面临的 IO 问题将被极大改善。


    本文来自 不懂IT的人 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/sandy_hmily/article/details/77847542?utm_source=copy

    展开全文
  • 分布式与集群的区别

    万次阅读 2018-08-13 17:49:15
    一句话:分布式是并联工作的,集群是串联工作的。 1:分布式是指将不同的业务分布在不同的地方。 而集群指的是将几台服务器集中在一起,实现同一业务。  分布式中的每一个节点,都可以做集群。 而集群并不一定...
  • 分布式与集群概念

    万次阅读 2018-01-05 15:25:04
    集群:提高单位时间内执行任务数。 例如:一个任务由10个子任务组成,每个子任务单独执行需要1个小时,则在一台服务器上执行该任务需要10个小时。 分布式方案:提供10台服务器,每台服务器只处理一个子任务,不...
  • 集群解决方案

    千次阅读 2018-08-26 17:12:06
    集群概念 集群是一种计算机系统, 它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网...
  • 集群的概念

    千次阅读 2019-03-13 23:02:52
    以前经常听别人说部署集群的话至少需要3台机器,因为会存在选主的情况。但是有些项目的集群又不需3台可能两台就够了。这是为什么呢? RocketMQ的broker集群为什么可以只有两台节点? 答:其实集群分不同的种类,...
  • 集群架构及常见集群特性介绍

    千次阅读 2017-10-26 21:12:31
    计算机集群简称”集群”,是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常...
  • 什么是集群&集群的分类

    千次阅读 2019-06-13 09:19:38
    计算机集群简称集群,是一种计算机系统,它通过一组松散集成的计算机软件(和/或)硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常...
  • nginx与IIS服务器搭建集群实现负载均衡(三)

    万次阅读 多人点赞 2019-12-11 16:33:10
    在《架构之路:nginx与IIS服务器搭建集群实现负载均衡(二)》中提到有好多有趣的地方,接下来就为大家一块儿讲讲在深入研究过程中遇到那些有趣的事情。 ·实战之行——发现问题 ·探索之旅——寻出问题原因 ...
  • ES集群安装教程

    万次阅读 2020-07-28 14:13:18
    最近项目需要部署ES教程,所以至此记录安装过程,本教程使用的es版本为6.0.1,并且在同一台机器上搭建三个节点的伪集群。 ES 集群至少部署 3 个节点,确保至少存在两个主节点保证数据可靠性。部署完一个节点后,把...
  • zookeeper集群、kafka集群、Hadoop高可用

    万次阅读 2018-09-07 19:00:57
    一、zookeeper集群 1.1 zookeeper概述 1.1.1 什么是zookeeper ZooKeeper是一个分布式的协调服务 1.1.2 ZooKeeper能干什么 ZooKeeper是用来保证数据在集群间的事务性一致 1.1.3 zookeeper 应用...
  • Redis集群方案及实现

    万次阅读 多人点赞 2015-03-03 19:45:00
    之前做了一个Redis的集群方案,跑了小半年,线上运行的很稳定,还没出过大的状况差不多可以跟大家分享下经验,之前写了一篇文章 数据在线服务的一些探索经验,简单介绍了Reids在我们这边的应用应用我们的Redis集群...
  • redis集群搭建(非常详细,适合新手)

    万次阅读 多人点赞 2018-10-09 11:46:59
    redis集群搭建 在开始redis集群搭建之前,我们先简单回顾一下redis单机版的搭建过程 下载redis压缩包,然后解压压缩文件; 进入到解压缩后的redis文件目录(此时可以看到Makefile文件),编译redis源文件; 把编译...
  • ContextCaptureMaster/Smart3D 集群处理详解

    万次阅读 多人点赞 2019-08-19 11:23:57
    不管你是否需要集群处理,都建议按照集群的步骤来做 配置集群环境后,可以选择不集群处理 没有配置集群环境之后想集群就有点费劲,甚至可能导致任务莫名失败 · 相关概念 问:什么是集群? 答:不是一台电脑...
  • 使用docker搭建hadoop分布式集群

    万次阅读 多人点赞 2020-07-03 11:14:17
    使用docker搭建部署hadoop分布式集群 在网上找了很长时间都没有找到使用docker搭建hadoop分布式集群的文档,没办法,只能自己写一个了。 一:环境准备: 1:首先要有一个Centos7操作系统,可以在虚拟机中安装...
  • Hadoop集群搭建教程(详细)

    万次阅读 多人点赞 2018-05-26 10:19:39
    需要的安装包: 1.jdk压缩包 2.hadoop压缩包请前往我的github上下载相关安装包开始搭建hadoop集群一.使用VMvare创建两个虚拟机,我使用的是ubuntu16.04版本的因为默认的虚拟机主机名都是ubuntu,所以为了便于...
  • 非常详细的weblogic使用教程以及集群配置
  • 基于Docker搭建redis集群

    万次阅读 热门讨论 2019-03-15 09:45:07
    文章目录前言Redis集群原理准备工作Redis基础镜像创建创建Redis节点镜像配置集群集群操作说明启动镜像节点配置配置槽点主从高可用高可用测试读写测试 前言 最新在学习Docker,不由自主的深深爱上了它,同时在整理...
1 2 3 4 5 ... 20
收藏数 772,080
精华内容 308,832
关键字:

集群