分布式系统-第1课

第一题:
分类PPT最后一页的软件到下面的列表:

名称 所属组织 类型 性质 开发语言 你的理解
Hadoop Apache 文件/计算/基础设施 开源 Java 并行分布式计算框架,把一个大的任务切分为很多小份,由多台机器并行执行,然后再把所有机器执行的结果合并起来作为整个任务的结果。适合处理批处理任务,如统计日志分析。
Hive Apache 计算 开源 Python 一种能执行MapReduce作业的类SQL编程接口,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 适合数据仓库的统计分析。
Storm Twitter 文件/计算/基础设施 开源 Clojure 实时分布式计算框架,集成了消息队列,持续的实时处理大量消息流。适合连续处理大量数据,如对大数据量做连续查询。
SparkSQL UC Berkeley AMP lab 内存/计算/基础设施 开源 Scala 并行分布式计算框架,引进了内存集群计算的概念,可在内存集群计算中将数据集缓存在内存中,以缩短访问延迟。相对于 Hadoop 效率更高。
Mycat Apache 基础设施 开源 Java 分布式数据库中间件,通过灵活的分片和整合能力解决单台数据库存储瓶颈问题。实现了Mysql数据库的所有通讯协议,客户端可以无缝切换。
Openstack NASA和Rackspace 平台 开源 Python 云计算管理平台,解决硬件虚拟化和虚拟化管理的问题。
Zookeeper Apache 基础设施 开源 Java和C 基于观察者模式实现分布式集群管理,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
ZeroC ICE ZeroC 消息/基础设施 开源 C++ 面向对象的消息中间件,处理所有底层的网络接口编程,包括打开网络连接、网络数据传输的序列化与反序列化、连接失败的尝试次数等。适合用于构建分布式应用程序。
Thrift Facebook 消息/基础设施 开源 go 采用接口描述语言定义并创建服务,支持可扩展的跨语言服务开发,所包含的代码生成引擎可以在多种语言中创建高效的、无缝的服务,其传输数据采用二进制格式,相对 XML 和 JSON 体积更小,对于高并发、大数据量和多语言的环境更有优势。
RabbitMQ Lshift 消息/基础设施 开源 erlang 基于AMQP协议的消息中间件,语言中立。它实现了代理架构,消息在发送到客户端之前可以在中央节点上排队。此特性使得RabbitMQ易于使用和部署,适宜于很多场景如路由、负载均衡或消息持久化等,用消息队列只需几行代码即可搞定。
ZeroMQ iMatix 消息/基础设施 开源 C 基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。以库的形式存在,由应用程序加载、运行即可。仅提供非持久性的消息队列,相对同类产品,性能卓越。
Hazelcast hazelcast 内存/基础设施 开源 Java 分布式缓存组件,支持点对点模式下的分布式哈希表,点对点模式下原子操作确保数据的一致性。
Kafka Apache 消息/基础设施 开源 scala 分布式消息系统,通过降低可靠性来提高性能,同时通过构建分布式的集群,允许消息在系统中累积。
GlusterFS Z RESEARCH 文件/基础设施 开源 C 分布式文件系统,使用了弹性哈希算法来定位文件存储的位置。 由于使用了弹性哈希算法,GlusterFS不需要专门的Meta-Data Server来保存元数据,因此可以避免因为元数据服务器宕机导致的整个集群不可用。也正是因为不需要元数据服务器,所以GlusterFS在多个挂载点同时进行数据读写的时候,其整体性能很突出。
Ceph Inktank 文件/基础设施 开源 c++ 分布式文件系统,数据的定位是通过CRUSH算法来实现的,元数据服务器可以提供集群metadata server 服务。


第二题:
NUMA在哪些CPU上支持?目前有哪些服务器配置了这类CPU?Linux中关于NUMA的命令有哪些,如何开启NUMA?
英特尔Nehalem和Tukwila系列之后的处理器、Xeon、至强处理器 E5-2690 

HP的Superdome、SGI的Altix 3000、IBM的p690和x440、NEC的TX7、AMD的Opteron等


numastat
numactl --show

numactl --hardware


a) BIOS中开启NUMA
b) 在操作系统中开启,可以直接在/etc/grub.conf的kernel行最后添加numa=on
c) 启动进程的时候开启NUMA特性:numactl --localalloc mysqld



第三题:
JAVA中关于NUMA的参数及其含义?
-XX:+UseNUMA 为NUMA多CPU系统启用并行化的垃圾回收



第四题:
NUMA用于MySQL调优的时候,有哪些关键配置项,需要注意什么
numactl --interleave=all mysqld
NUMA的CPU分配策略有cpunodebind、physcpubind。cpunodebind规定进程运行在某几个node之上,而physcpubind可以更加精细地规定运行在哪些核上。
NUMA的内存分配策略有localalloc、preferred、membind、interleave。localalloc规定进程从当前node上请求分配内存;而preferred比较宽松地指定了一个推荐的node来获取内存,如果被推荐的node上没有足够内存,进程可以尝试别的node。membind可以指定若干个node,进程只能从这些指定的node上请求分配内存。interleave规定进程从指定的若干个node上以RR算法交织地请求分配内存。



第五题:
RDMA 技术需要怎样的硬件,寻找一篇RDMA用于数据库或者Java的文章,对其性能和用法做简单的阐述
RDMA专用网卡(RNIC),通过在网卡上将可靠传输协议固化于硬件,以及支持零复制网络技术和内核内存旁路技术这两种途径使一台计算机直接将信息放入另一台计算机的内存中。
使用基于InfiniBand网络的高性能Java集群通信库,可以突破Java不能直接使用InfiniBand网络的限制,为Java应用直接利用InfiniBand网络的RDMA机制提供支持,使Java应用集群系统可以充分利用InfiniBand网络的通信能力和性能优势,提高Java应用集群系统的通信性能,解决I/O性能制约Java应用集群不能在通信密集型应用环境中有效发挥作用的问题。



第六题:
IO性能度量的几个指标,Linux中怎么查看这几个指标,结合当前主流的服务器的IO性能,给出Linux中磁盘达到瓶颈时的IO性能阀值(80%的极限性能)
全SSD硬盘的IO阀值
1万转机械磁盘的IO阀值
给出你的分析思路

IOPS,IO系统每秒所执行IO操作的次数
吞吐率,磁盘在实际使用的时候从磁盘系统总线上流过的数据量
IO响应时间,从操作系统内核发出的一个读或者写的IO命令到操作系统内核接收到IO回应的时间

iostat

IOPS = 1/IO Time = 1/(Seek Time + 60 sec/Rotational Speed/2 + IO Chunk Size/Transfer Rate)
SSD硬盘传输速率取500M/S
0.1ms + 0 + 4K/500MB = 0.1 + 0 + 0.008 = 0.108
IOPS = 1/0.108 ms = 9259 IOPS
吞吐率 = 9259 * 4K = 37M / 500M = 7.4%
1万转机械磁盘传输速率取200M/S
5ms + (60sec/10000RPM/2) + 4K/200MB = 5 + 3 + 0.02 = 8.02
IOPS = 1/8.02s ms = 125 IOPS
吞吐率 = 125 * 4K = 500K / 200M = 0.25%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值