数据库系统中的几种架构及处理方式
来具体说说数据库集群吧
集群主要分成三大类 (高可用集群, 负载均衡集群,科学计算集群)
高可用集群( HighCluster)
负载均衡集群(Load Balance Cluster)
科学计算集群(High Performance Computing Cluster)
1、高可用集群(HighCluster)
常见的就是2个节点做成的HA集群,有很多通俗的不科学的名称,比如”双机热备”, “双机互备”, “双机”。高可用集群解决的是保障用户的应用程序持续对外提供服务的能力。 (请注意高可用集群既不是用来保护业务数据的,保护的是用户的业务程序对外不间断提供服务,把因软件/硬件/人为造成的故障对业务的影响降低到最小程度)。
2、负载均衡集群(Load Balance Cluster)
负载均衡系统:集群中所有的节点都处于活动状态,它们分摊系统的工作负载。一般Web服务器集群、数据库集群和应用服务器集群都属于这种类型。
负载均衡集群一般用于相应网络请求的网页服务器,数据库服务器。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器上。从检查其他服务器状态这一点上看,负载均衡和容错集群很接近,不同之处是数量上更多。
3、科学计算集群(High Performance Computing Cluster)
高性能计算(High Perfermance Computing)集群,简称HPC集群。这类集群致力于提供单个计算机所不能提供的强大的计算能力。
高性能计算分类:
31、高吞吐计算(High-throughput Computing)
有一类高性能计算,可以把它分成若干可以并行的子任务,而且各个子任务彼此间没有什么关联。象在家搜寻外星人( SETI@HOME _ Search forat Home )就是这一类型应用。
这一项目是利用Internet上的闲置的计算资源来搜寻外星人。SETI项目的服务器将一组数据和数据模式发给Internet上参加SETI的计算节点,计算节点在给定的数据上用给定的模式进行搜索,然后将搜索的结果发给服务器。服务器负责将从各个计算节点返回的数据汇集成完整的 数据。因为这种类型应用的一个共同特征是在海量数据上搜索某些模式,所以把这类计算称为高吞吐计算。
所谓的Internet计算都属于这一类。按照 Flynn的分类,高吞吐计算属于SIMD(Single Instruction/Multiple Data)的范畴。
32、分布计算(Distributed Computing)
另一类计算刚好和高吞吐计算相反,它们虽然可以给分成若干并行的子任务,但是子任务间联系很紧密,需要大量的数据交换。按照Flynn的分类,分布式的高性能计算属于MIMD(Multiple Instruction/Multiple Data)的范畴。
下面说说这几种集群的应用场景:
高可用集群这里不多作说明。
想Dubbo是比较偏向于负载均衡集群,用过的猿友应该知道(不知道的可以自行了解一下),Dubbo同一个服务是可以有多个提供者的,当一个消费者过来,它要消费那个提供者,这里是有负载均衡机制在里面的。
搜索引擎比较偏向于科学计算集群的分布计算。
而到这里,可能不少猿友都知道,集群的一些术语:集群容错、负载均衡。
我们以Dubbo为例:
集群容错(bboio/UserGuide-zhhtm#UserGuide-zh-%E9%9B%86%E7%BE%A4%E5%AE%B9%E9%94%99)
Dubbo提供了这些容错策略:
集群容错模式:
可以自行扩展集群容错策略,参见:集群扩展
Failover Cluster
失败自动切换,当出现失败,重试其它服务器。(缺省)
通常用于读操作,但重试会带来更长延迟。
可通过retries="2"来设置重试次数(不含第一次)。
Failfast Cluster
快速失败,只发起一次调用,失败立即报错。
通常用于非幂等性的写操作,比如新增记录。
Failsafe Cluster
失败安全,出现异常时,直接忽略。
通常用于写入审计日志等操作。
Failback Cluster
失败自动恢复,后台记录失败请求,定时重发。
通常用于消息通知操作。
Forking Cluster
并行调用多个服务器,只要一个成功即返回。
通常用于实时性要求较高的读操作,但需要浪费更多服务资源。
可通过forks="2"来设置最大并行数。
Broadcast Cluster
广播调用所有提供者,逐个调用,任意一台报错则报错。(210开始支持)
通常用于通知所有提供者更新缓存或日志等本地资源信息。
负载均衡(bboio/UserGuide-zhhtm#UserGuide-zh-%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1)
Dubbo提供了这些负载均衡策略:
Random LoadBalance
随机,按权重设置随机概率。
在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。
RoundRobin LoadBalance
轮循,按公约后的权重设置轮循比率。
存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。
LeastActive LoadBalance
最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。
使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。
LoadBalance
一致性Hash,相同参数的请求总是发到同一提供者。
当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。
算法参见:enwikipediaorg/wiki/Consistent_hashing。
缺省只对第一个参数Hash,如果要修改,请配置
缺省用160份虚拟节点,如果要修改,请配置
今天咱们来看看天河2号超级计算机怎么搭出来的。
天河二号由国防科技大学和浪潮合作研制,2013年至2014年蝉联全球超级计算机第一名。不过性能是拿钱堆出来的,造价25亿人民币,一天满负荷运转要耗电费40万元。看看下面的配置就知道为什么花这么多钱了。从这么多CPU看得出来,CPU厂商是多么喜欢超级计算机。不过美国政府对中国禁运高端CPU之后,Intel的销售估计都要哭死了。
怎么从一个个芯片组装成一台超级计算机?看下图。16000个计算节点,其实就是主板,汇集成32个Frame,再组成4个Rack,最后组成了超算系统。
超级计算机的基础节点包括三种:16000个计算节点,4096个管理节点,256个IO节点和64个存储服务器。
先看看最小的组件:计算节点。2 个Intel Ivy Bridge CPU + 3个 Intel Xeon Phi 。CPU之间用QPI总线互联,一般NUMA架构是这么做的。每个CPU有自己的DIMM内存,一共64GB。还通过PCIex16连到内部高速互联网络,GDDR5内存。GDDR5内存有一个专门的CPU管理。两个万兆网卡估计是管理用的。这样一个节点计算性能最高可以到3432Tflops,
计算节点物理上坐落于计算刀片服务器。如下图,蓝色的是Xeon Phi处理器,黑色的估计就是Ivy Bridge CPU,所以一个刀片服务器包含了两个节点。
再来看看用国产飞腾CPU搭建的管理节点,性能是144GFlops。飞腾CPU是国防科大研制的,目前有几种型号,天河2号采用的FT-1500基于 Sparc V9架构。为了便于商业化推广,飞腾还推出了兼容ARM64位指令集的FT-1500A系列。FT-1500A目前包括4核和16核两款产品。其中4核处理器芯片主要面向桌面终端和轻量级服务器应用领域,面向服务器应用领域的是16核处理器芯片。据称,FT-1500A系列处理器与Intel 2010年的处理器性能相当 。
来看看这颗基于Sparc架构的FT-1500架构。采用40nm工艺,18GHz,16核,功耗约65瓦。计算架构采用了SIMD(Single Instruction Multiple Data),一条指令可以同步让多组数据执行。如下图,一个CPU有四个DDR3接口,IO带宽很高。
天河2号有256个IO节点和64个存储服务器,总共存储容量124PB。既然是超级计算机,自然要使用高性能的固态硬盘SSD,每个IO节点有2TB的SSD,IO带宽达到5GB/s,从下图可以看出1个2TB SSD由5个400GB 小SSD组成,那估计每个的带宽是1GB/s。IO节点对外有两种接口:高速互联接口和Infiniband QDR存储网络接口。阿呆猜想高速互联网络是用来输出数据给计算节点,IB接口是IO节点之间数据共享用的。采用了Hybrid hierarchy file system,H2FS,数据保存在每个节点本地,但是相互之间也能共享。
这么多节点怎么组成超级计算机呢?下面就是组网图。关键的设备是中间的13个交换机,每个交换机有576个端口!
更加难能可贵的是,高速互联芯片都是纯国产。包括网络路由芯片NRC和网络接口芯片NIC。
NRC采用90nm工艺,大小为1716mm1716mm,2577个管脚,带宽为256 Tbps。这么多管脚估计也是为了增加端口数。
NIC也是90nm工艺,大小1075mm1076mm,675个管脚。
说到超算,就不得不提制冷系统,这么一台庞大的机器,没有有效的制冷,估计就着火了。天河2号采用了紧耦合水冷系统,整台机器功耗176MW,加上制冷系统就是24MW。制冷用了27%的电。
天河有自己的软件架构,如下图。对用户来说,最重要的是用户的编程接口,有些用户为了搞个研究,写这个程序就得花上几年。很多时候政府推动的项目硬件给很多经费,设备都很不错,但是领导舍不得给软件投钱,毕竟展示效果没那么壮观,所以软件往往是短板,用户使用不便,先进设备的利用率就不高。
天河支持下列编程语言。值得一提的是OpenMC语言,比CUDA和OpenCL的抽象级别更高,在CPU等各种资源之上有一个统一的逻辑层。各种计算任务异步执行,同时分配到不同的设备上。
对管理者来说,这么多节点的资源调度和监控也是很重要的。如下图,每台机器安装了国产麒麟Linux操作系统,其实也是国防科大主导的。
我们搞存储的最关心的就是存储软件架构了。数据分为本地存储和共享存储,共享存储使用了超算流行的Lustre分布式文件系统,这种文件系统对于大文件访问性能不错。用户使用POSIX接口读写文件。不过数据密集型应用用Layout接口和Policy接口访问数据。
总结一下,一台超级计算机其实就是很多小计算机的集合,当然难点在大家的高速互联和同步。
1 kill
作用:根据进程号杀死进程 用法: kill [信号代码] 进程ID举例:
[root@localhost ~]# ps auxf |grep httpd root 4939 00 00 5160 708 pts/3 S+ 13:10 0:00 _ grep httpd root 4830 01 13 24232 10272 Ss 13:02 0:00 /usr/sbin/httpd apache 4833 00 06 24364 4932 S 13:02 0:00 _ /usr/sbin/httpd apache 4834 00 06 24364 4928 S 13:02 0:00 _ /usr/sbin/httpd apache 4835 00 06 24364 4928 S 13:02 0:00 _ /usr/sbin/httpd apache 4836 00 06 24364 4928 S 13:02 0:00 _ /usr/sbin/httpd apache 4840 00 06 24364 4928 S 13:02 0:00 _ /usr/sbin/httpd
注意:kill -9 来强制终止退出
举例
[root@localhost ~]# ps aux |grep gaim beinan 5031 90 23 104996 17484 S 13:23 0:01 gaim root 5036 00 00 5160 724 pts/3 S+ 13:24 0:00 grep gaim
或者
[root@localhost ~]# pgrep -l gaim 5031 gaim
5031 gaim
[root@localhost ~]# kill -9 5031
特殊用法:
kill -STOP [pid]
发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。
kill -CONT [pid]
发送SIGCONT (19,18,25)重新开始一个停止的进程。
kill -KILL [pid]
发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。
kill -9 -1
终止你拥有的全部进程。
2 killall
作用:通过程序的名字,直接杀死所有进程
用法:killall 正在运行的程序名
举例:
[root@localhost beinan]# pgrep -l gaim 2979 gaim [root@localhost beinan]# killall gaim
注意:该命令可以使用 -9 参数来强制杀死进程
3 pkill
作用:通过程序的名字,直接杀死所有进程
用法:#pkill 正在运行的程序名
举例:
[root@localhost beinan]# pgrep -l gaim 2979 gaim [root@localhost beinan]# pkill gaim
4 xkill
作用:杀死桌面图形界面的程序。
应用情形实例:Firefox出现崩溃不能退出时,点鼠标就能杀死firefox 。
当xkill运行时出来和个人脑骨的图标,哪个图形程序崩溃一点就OK了。
如果您想终止xkill ,就按右键取消;
调用方法:
[root@localhost ~]# xkill
当然是在云服务器的硬盘里!
云服务器是云计算服务的重要组成部分,是面向各类互联网用户提供综合业务能力的服务平台。平台整合了传统意义上的互联网应用三大核心要素:计算、存储、网络,面向用户提供公用化的互联网基础设施服务。
云服务器服务包括两个核心产品:
面向中小企业用户与高端用户的云服务器租用服务;
面向大中型互联网用户的弹性计算平台服务。
云服务器平台的每个集群节点被部署在互联网的骨干数据中心,可独立提供计算、存储、在线备份、托管、带宽等互联网基础设施服务。集群节点由以下硬件构成:
管理服务器:采取双机热备的方式,对整个节点的所有计算服务器、共享存储、网络进行管理,同时对外提供管理整个节点的API。管理服务器上提供:
管理服务(管理节点的计算服务器,对外提供管理接口)、DHCP 服务(为计算服务器的网络启动分配管理网段的IP)、tftp 服务(为计算服务器的网络启动提供远程启动映象)、nbd 服务(为计算服务器提供网络块设备服务)。管理服务器上还会运行一个数据采集程序,他定时将各种性能数据采集下来并发送到中央的数据采集服务器上存储服务器群:存储服务器可以是ISCSI 或内置存储容量比较大的x86 服务器,通过 集群文件系统组成一个统一的存储池,为节点内的虚拟机提供逻辑磁盘存储、非结构数据存储以及整合备份服务。
计算服务器群:计算服务器是高配置的八核以上服务器,计算服务器无需安装操作系统,但必须具备网络引导功能,其上运行一个Linux微内核、云计算机软件、一个与管理服务器进行通讯的Agent
交换机:按不同功能和节点性能要求配备多个三层交换机,分别负责管理网段、公网交换网段、内部交换网段、存储网段等
分布式存储
技术原理:分布式存储用于将大量服务器整合为一台超级计算机,提供海量的数据存储和处理服务。分布式文件系统、分布式数据库允许访问共同存储资源,实现应用数据文件的IO共享。易迈云的云存储系统同时兼顾数据安全与IO问题。个别服务商保存3份数据以牺牲IO速度为代价,只有极低的IO速度,其他国内云厂商一般采用本机阵列存储,虽然IO快但是可靠性不高,本机硬件或存储损坏的情况下,业务中断时间较长。易迈互联创造性地解决了这个问题,通过高速的万M网络和极优的算法,既保证了数据安全也提供极优的磁盘读写速度。
资源调度
虚拟机可以突破单个物理机的限制,动态的资源调整与分配消除服务器及存储设备的单点故障,实现高可用性。当一个计算节点的主机需要维护时,可以将其上运行的虚拟机通过热迁移技术在不停机的情况下迁移至其他空闲节点,用户会毫无感觉。在计算节点物理损坏的情况也,也可以在3分钟左右将其业务迁移至其他节点运行,具有十分高的可靠性。
存储介质肯定还是硬盘了,2TB或者3TB的SATA硬盘目前还是主流。不过现在也有部分存储硬件提供商采用固态硬盘构建全闪存阵列,可以提供非常高的传输速度和非常高的随机I/O
0条评论