漫谈分布式系统

       系统为了获取更大存储、更大计算量比如Google、百度等搜索引擎、共享资源(共享打印机)、移动

通信我们现在每时每刻都离不开的手机,都需要用到分布式系统。

       分布式系统是一个涵盖硬件、网络、算法、分布式计算,一个宽广而且有意思领域。分布式系统是

复杂系统,但设计出来给用户使用,要简单明了,易于在实际中进行使用。

       分布式系统设计透明性:例如分布式文件系统HDFS,整个文件系统暴露给用户与单机系统没有差别,

提供给用户接口是读、写、复制、删除,路径创建、删除、路径下文件列表,与本地文件系统没有差别,

将内部复杂状态一致性、节点问题、节点不可用、数据一致性、存储位置,全部对用户透明。

       分布式系统高可用:分布式系统由许多硬件构成,众多硬件必然会有不可用比如机器硬件出问题,系

统设计要将硬件失效作为设计一个提前考量。MapReduce计算时,机器出问题后,能将任务重定向,继续

进行计算,而不是整个程序重新进行计算。

       分布式系统中一致性:分布式系统中节点数据保持一致,例如分布式缓存系统,数据有多个副本,这

时存在一个缓存更新问题,当需要更新缓存时,需要将所有节点缓存更新成功。

       分布式时钟同步,数据复制,数据一致性,任务执行很多都依赖于系统时钟,分布式系统,系统时钟

不一致,会导致很多操作很难进行。

       分布式事务,对于交易或者涉及人身以及生命财产安全系统,需要分布式相关操作是事务。比如网银

转账、或者网上购物,钱花出去了,对方却没收到,这是完全无法接受的。

       分布式系统存储,有分布式文件系统比如GFS,主要用于存储文件,计算主要面向离线。百度开源分

布式数据库Tera是面向实时计算。以及支持实时存取数据,本身实现对内存、SSD、SATA进行相应优化,

读取能保证到10ms以内,进行相应设置甚至能到1ms,技术水平还是相当之高的。

       分布式计算,因数据规模达到数T甚至P级别,单机计算已经不能满足系统需求,分布式计算是分布式

系统重要应用,google、百度搜索引擎对于网页排序,今日头条、电子商务系统中个性化推荐系统排序,

都离不开分布式计算,离线比如MapReduce计算框架,实时比如Storm等计算框架。

       分布式通信rpc,分布式系统当数据与计算不在一起时需要移动数据,当多个节点多个任务需要进行

通信时,当需要知道机器状况时都需要进行通信,机器间通信少不了rpc,rpc不只是作为微服务,本身也

是分布式系统重要组成部分。

       分布式协调服务,比如Zookeeper,可用于主从选取、分布式事务、消息队列、配置管理等多个领域。

       分布式消息队列,比如Kafka,用于消息传递,消息队列好处是多个业务系统之间解耦。并且消息队

列也是IM系统核心,IM类应用可以借鉴开源消息队列并扩展以保证消息不丢失不重复,海量消息存储以及

发送接收。

       分布式缓存redis,JD 基于redis开发自己缓存数据库jimdb,线上很多服务直接将所有数据存储在缓

存中,奢侈但性能确实刚,c语言开发,大部分情况下核心是时间复杂度为O(1)Hash结构,get操作基本是

1ms,并且redis能同时支持超大量写以及读qps,为线上服务性能保驾护航。

       AI时代,深度学习计算一是计算量大一是处理数据量大,本身都离不开分布式系统,分布式系统是工

业界基石,是搜索引擎、推荐系统、广告系统、人工智能、AI背后英雄。是一个值得花时间去探索领域,

是一个价值极大领域,对分布式系统感兴趣同学可以去研究,越深入价值越大。

微信搜索:debugme123

        扫描二维码关注:

 

posted @ 2017-11-25 08:19  杉枫  阅读(998)  评论(2编辑  收藏  举报