分布式知识结构

来源:互联网 发布:java外卖cms 编辑:程序博客网 时间:2024/06/06 05:38

分布式计算就是通过计算机网络将计算工作分布到多台主机上,多个主机一起协同完成工作。 

我试着列一下相关知识吧。

1、   网络通讯,网络是分布式的基础,对分布式的理解建立在对网络的理解上,包括:

1)        OSI模型的7层

2)        TCP/IP,DNS,NAT

3)        HTTP,SPDY/HTTP2

4)        Telnet

2、   网络编程,是通过程序在多个主机之间通信。包括:

1)        Socket

2)        多线程

3)        非阻塞IO

4)        网络框架

a)        Netty

b)        Mina

c)        ZeroMQ

3、   操作系统的网络部分

4、   RPC,Socket使用不是很方便,很多分布式应用是基于RPC的,包括:

1)        同步RPC

2)        异步RPC

3)        主要的一些RPC协议

a)        RMI

b)        Rest API

c)        Thrift

5、   集群,分布式计算离不开集群。集群就是多台主机被当作一个系统

1)        集群类型

a)        高可用,如主机备机切换,冷备,热备,双活

b)        伸缩性,如Web服务器集群,数据库服务器的Sharding

c)        并行计算,如网格,大数据

2)        集群相关技术,包括:

a)        高可用性,保证服务一直能够被访问,延长MTBF,缩短MTTR

l  冗余的设备

l  多副本,为了避免单点失效

b)        负载均衡,如何将大量工作负载分配到多个主机上,最大化吞吐量,最小化平均响应时间,最大化资源利用率。

c)        伸缩性(横向),能够添加计算机和设备来应对增长的计算压力

d)        分片(Sharding),把数据分成多个数据集,由多个服务器来分别处理。

l  自动分片

e)        容错性,当硬件或软件发生故障,能够继续运转

f)         故障检测,以及故障预测

l  心跳包

l  告警

l  性能预警

g)        故障转移,当出现错误,如何解决,为了高可用性和容错性

h)        分布式一致性,在分布式环境中如何维持状态的一致性,严格一致性,还是最终一致性

i)          集群状态协调,如Zookeeper,etcd等。

l  分布式锁,在分布式环境中如何进行加锁

l  选主,当Master宕机,如何选择出新的Master,协议如Raft

j)          一致性哈希,如何将数据分布到集群中的多个主机。

k)        分布式事务,保证在多台服务器上完成的操作符合事务的ACID属性。

3)        安全,网络通常需要保证安全。

a)        身份认证,如何验证人或机器是他们声明的身份

l  基于用户名/口令

l  基于数字证书

b)        私密性,如何防止窃听和嗅探

l  对称加密

l  非对称加密

c)        完整性,如何保证数据不被篡改

l  安全散列

l  消息认证码(MAC)

d)        不可否认性

l  基于数字证书的数字签名和验签

l  基于密钥的散列,如HMAC

4)        互联网站的基本架构

页面缓存

负载均衡器,如HAProxy,Nginx

分布式缓存,如Memcache,Redis

消息队列,如ActiveMQ,Kafka

5)        分布式框架

a)        关系型数据库(Sharding,主从同步)

b)        NoSQL

HBase,基于HDFS和Zookeeper的NoSQL

Cassandra,无主集群

c)        大数据

HDFS,分布式文件系统

MapReduce,将数据处理任务拆分为多个工作,通过集群来完成。

Spark,提供分布式的数据集抽象


原创粉丝点击