分布式机器学习 分布式计算需要学什么
原创
©著作权归作者所有:来自51CTO博客作者桃太郎的原创作品,请联系作者获取转载授权,否则将追究法律责任
- 网络通讯,网络是分布式的基础,对分布式的理解建立在对网络的理解上,包括:
- OSI模型的7层
- TCP/IP,DNS,NAT
- HTTP,SPDY/HTTP2
- Telnet
- 操作系统的网络部分
- RPC,Socket使用不是很方便,很多分布式应用是基于RPC的,包括:
- 集群,分布式计算离不开集群。集群就是多台主机被当作一个系统
- 高可用,如主机备机切换,冷备,热备,双活
- 伸缩性,如Web服务器集群,数据库服务器的Sharding
- 并行计算,如网格,大数据
- 高可用性,保证服务一直能够被访问,延长MTBF,缩短MTTR
- 负载均衡,如何将大量工作负载分配到多个主机上,最大化吞吐量,最小化平均响应时间,最大化资源利用率。
- 伸缩性(横向),能够添加计算机和设备来应对增长的计算压力
- 分片(Sharding),把数据分成多个数据集,由多个服务器来分别处理。
- 容错性,当硬件或软件发生故障,能够继续运转
- 故障检测,以及故障预测
- 故障转移,当出现错误,如何解决,为了高可用性和容错性
- 分布式一致性,在分布式环境中如何维持状态的一致性,严格一致性,还是最终一致性
- 集群状态协调,如Zookeeper,etcd等。
- 分布式锁,在分布式环境中如何进行加锁
- 选主,当Master宕机,如何选择出新的Master,协议如Raft
- 一致性哈希,如何将数据分布到集群中的多个主机。
- 分布式事务,保证在多台服务器上完成的操作符合事务的ACID属性。
- 基于数字证书的数字签名和验签
- 基于密钥的散列,如HMAC
- 页面缓存
- 负载均衡器,如HAProxy,Nginx
- 分布式缓存,如Memcache,Redis
- 消息队列,如ActiveMQ,Kafka
- 关系型数据库(Sharding,主从同步)
- NoSQL
- HBase,基于HDFS和Zookeeper的NoSQL
- Cassandra,无主集群
- HDFS,分布式文件系统
- MapReduce,将数据处理任务拆分为多个工作,通过集群来完成。
- Spark,提供分布式的数据集抽象
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。