52

漫谈分布式系统

 6 years ago
source link: http://mp.weixin.qq.com/s/0iAigW9Pmg3qp4TkTdTTNQ
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

漫谈分布式系统

Original 杉枫 探索互联网 2017-11-23 14:17 Posted on

T002R90x90M000002L00ug2SFMBD.jpg         系统为了获取更大存储、更大计算量比如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背后英雄。是一个值得花时间去探索领域,是一个价值极大领域,对分布式系统感兴趣同学可以去研究,越深入价值越大。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK