漫谈分布式系统
系统为了获取更大存储、更大计算量比如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
扫描二维码关注:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?