分布式计算就是通过计算机网络将计算工作分布到多台主机上,多个主机一起协同完成工作。
我试着列一下相关知识吧。
-
网络通讯,网络是分布式的基础,对分布式的理解建立在对网络的理解上,包括:
-
OSI模型的7层
-
TCP/IP,DNS,NAT
-
HTTP,SPDY/HTTP2
-
Telnet
-
网络编程,是通过程序在多个主机之间通信。包括:
-
Socket
-
多线程
-
非阻塞IO
-
网络框架
-
Netty
-
Mina
-
ZeroMQ
-
操作系统的网络部分
-
RPC,Socket使用不是很方便,很多分布式应用是基于RPC的,包括:
-
同步RPC
-
异步RPC
-
主要的一些RPC协议
-
RMI
-
Rest API
-
Thrift
-
集群,分布式计算离不开集群。集群就是多台主机被当作一个系统
-
集群类型
-
高可用,如主机备机切换,冷备,热备,双活
-
伸缩性,如Web服务器集群,数据库服务器的Sharding
-
并行计算,如网格,大数据
-
集群相关技术,包括:
-
高可用性,保证服务一直能够被访问,延长MTBF,缩短MTTR
-
冗余的设备
-
多副本,为了避免单点失效
-
负载均衡,如何将大量工作负载分配到多个主机上,最大化吞吐量,最小化平均响应时间,最大化资源利用率。
-
伸缩性(横向),能够添加计算机和设备来应对增长的计算压力
-
分片(Sharding),把数据分成多个数据集,由多个服务器来分别处理。
-
自动分片
-
容错性,当硬件或软件发生故障,能够继续运转
-
故障检测,以及故障预测
-
心跳包
-
告警
-
性能预警
-
故障转移,当出现错误,如何解决,为了高可用性和容错性
-
分布式一致性,在分布式环境中如何维持状态的一致性,严格一致性,还是最终一致性
-
集群状态协调,如Zookeeper,etcd等。
-
分布式锁,在分布式环境中如何进行加锁
-
选主,当Master宕机,如何选择出新的Master,协议如Raft
-
一致性哈希,如何将数据分布到集群中的多个主机。
-
分布式事务,保证在多台服务器上完成的操作符合事务的ACID属性。
-
安全,网络通常需要保证安全。
-
身份认证,如何验证人或机器是他们声明的身份
-
基于用户名/口令
-
基于数字证书
-
私密性,如何防止窃听和嗅探
-
对称加密
-
非对称加密
-
完整性,如何保证数据不被篡改
-
安全散列
-
消息认证码(MAC)
-
不可否认性
-
基于数字证书的数字签名和验签
-
基于密钥的散列,如HMAC
-
互联网站的基本架构
-
页面缓存
-
负载均衡器,如HAProxy,Nginx
-
分布式缓存,如Memcache,Redis
-
消息队列,如ActiveMQ,Kafka
-
分布式框架
-
关系型数据库(Sharding,主从同步)
-
NoSQL
-
HBase,基于HDFS和Zookeeper的NoSQL
-
Cassandra,无主集群
-
大数据
-
HDFS,分布式文件系统
-
MapReduce,将数据处理任务拆分为多个工作,通过集群来完成。
-
Spark,提供分布式的数据集抽象
【转】原地址
java分布式都有哪些知识点 - CSDN博客
blog.csdn.net