读书笔记:分布式系统系统与概念(图灵丛书)

分布式计算书籍整理 分布式系统概念与设计(原书第4版)分布式系统原理与范型(第2版) 阅读详情

书的第一章作者介绍了分布式系统的概念,分布在网络的不同组件并相互传递消息协调的系统,其特征是组件的并发性(这是说可以很多进程或线程可以同时运行,充分利用硬件资源)、缺乏全局时钟(网络上没有一个共有的时钟来同步不同节点上的操作)、故障的独立(故障具有隔离性)。然后讲了分布式系统的例子,以及趋势包括分布式计算和移动化(现在有很多不同的联网设备:pad、手机等等)、分布式多媒体(这几年兴起的视频、直播等)、云概念。最后再列出挑战。异构性(系统中存在不同的网络比如局域网、广域网、无线网,硬件,操作系统,编程语言,比如json、xml之类的统一数据交换格式就是解决异构系统通讯的),开放性(就是说网络复杂的不同异构组件直接能不能通过遵守统一个规约达到彼此兼容的目的,不然的话,一个组织生产的软件,另一个系统无法使用,因为没有约定的接口和规范,比如一个组织定义json的格式为标准格式,另外一个组织非要采用另外一种格式,那么a发过来的json数据b系统是无法解析的,这样就不能行使正常功能),安全性(这个不多说),可伸缩性(就是说我们可以随意增加或减少软硬件资源而由此带来的分布式程序修改的程度,程度低说明可伸缩性好),事故处理(比如缓存的雪崩和击穿,熔断和服务降级处理,冗余控制,调用链跟踪等),并发性和透明性。

第二章开始讨论系统模型,这里分为物理模型和体系结构,物理模型是什么呢?书中引出了基线物理模型,比如一个分布式系统由10台计算机构成,10个节点就是物理模型。那么体系结构是什么呢?它是一组抽象概念构成的集合,比如通信实体(进程)、组件(想想中间价)、web服务。这些元素之间需要通讯所以有了通讯范型的概念,包括进程间通讯(socket)、远程调用通讯(rpc、rmi)、间接通讯(分布式缓存、消息队列)。这些体系结构元素构筑了体系结构模式的概念,元素和体系结构模式又一起组成了不同的模型,比如交互模型(定义进程之间的通讯包括时钟同步和时序,异步和同步),故障模型(怎么处理故障,比如mq中的一个节点宕掉了),安全模型。

第三章开始介绍不同节点的之间的互联。包括进程间通讯、远程调用、间接通讯。介绍了网络类型、数据交换模式、协议、带宽和数据传输速率等概念。

第四章介绍了进程间通讯的概念,进程间通讯主要介绍了udp和tcp,这些消息成对交换模式在一个进程和一组进程通讯的场景下就不好使了,这时候就催生了ip组播通讯的模式(不提供消息传递保证和排序保证)。

第五章介绍了远程调用的概念,主要讲了rmi和rpc没什么新意略过。

第六章介绍了间接通讯的概念,包括发布订阅模式,消息队列和基于共享内存。也没什么新意,参考jms规约,active mq就可以了解发布订阅和消息队列,至于内存共享可以参考redis集群。

第七章介绍了操作系统对上层的支持,包含进程和线程,以及通讯和内核。

第八章介绍了分布式组件和对象,主要结合corba介绍了组件和对象的概念,略过。

第九章介绍了web服务,最初的web服务是通过请求-应答协议使用url定位并获取web中的资源,但是这种方式受应用程序范围的限制不能在客户和服务器之间提供更丰富的互操作性,为此产生了分布式服务即soa,早起的web服务是web service,它通过soap采用统一的xml数据交换格式定义了一组web服务规范。并结合java的webservice实现做了讲解,这些都是老概念,具体的可以参考jax-ws,xfire,cxf,axis等web service框架。

第十章介绍了对等系统,即p2p对等网络。传统的客户端-服务器应用系统需要web服务提供者提供并管理一定规模的服务器资源,而管理这些资源和故障恢复都要消耗大量的资源,这样旨在最大度利用网络中的资源尤其是边缘计算机资源使资源共享达到最大化的p2p对等网络便出现了。书中以音乐文件共享系统nasper为例讲解了对等网络中的路由、负载均衡、可靠性传输和容错等方面。

第十一章和十二章介绍的安全性和分布式文件系统(单机文件系统的分布式扩展)都没什么新东西,略过不表。

第十三章讲解了分布式统一命名服务,可以参考java的jndi。

第十四章讲解时间和全局状态,分布式系统为了协调不同节点之间事件的同步交互便需要一个统一的时钟作为同步的基准。如果没有统一的时钟,比如我们需要保证消息消费的有序性是无法实现的。还比如在本地系统中连续调用的两个服务(时延可以忽略)放在分布式环境中第二个服务的调用时钟就是第一个服务的时钟+时延。

第十五章讲解了分布式系统中的一致性问题,可以参考分布式锁机制、拜占庭将军算法、paxos协议、raft协议、zab协议。

第十六、十七章讲解分布式事务,首先介绍了事务(保证分布式数据一致性)的概念,介绍了其特性(原子性、一致性、隔离性、持久性即acid原则),以及事务对临界资源的并发访问的控制(实际上就是并发访问的串行化)。第十七章引入分布式场景,详细介绍了2pc(确认阶段、提交阶段)和3pc(多了一个预提交提交阶段),这两种方式都是以牺牲系统性能为代价的。在2pc中一个事务中有a、b两个操作分别操作a1、b1两个远程节点,如果第一阶段a1挂掉或者b1挂掉就可以执行本地事务恢复操作,如果a1挂掉b1正常也可以恢复;如果第二阶段a失败b就不会执行,直接恢复操作,如果a成功b失败则会出现问题。在3pc中能解决2pc的问题,因为如果a成功b失败,在预提交阶段就会出现,但此阶段是加提交,所以可以回滚完成事务恢复。如果预提交阶段成功了,提交阶段b1出问题这时也会出现问题,但这种几率较少,可以忽略,如果对这方面有强制要求可以通过事务补偿ji zhi

第十八章讲解不同节点的数据复制(维护数据一致性),参考mysql replication机制,redis replication机制。

第十九章讲解移动和计算,略过

第二十章讲解分布式多媒体系统以及二十一章的google分布式系统,搜索(爬虫、索引、pagerank)、大数据(mapreduce、bigtable、gfs),略过。

【kindle已破解】《分布式实时处理系统 原理、架构与实现》 已破解,如不能阅读,请邮件softchar@sina.com 立即下载

相关推荐

Designing Distributed Systems(设计分布式系统).epub

Designing Distributed Systems.epub 设计分布式系统 建议只用edge浏览器进行阅读

荐书:《分布式服务架构:原理、设计与实战》

荐书:《分布式服务架构:原理、设计与实战》 全面介绍分布式服务架构的原理与设计 给出保障线上服务健康、可靠的至佳方案   自互联网诞生以来,其简单、敏捷的微服务架构开发理念和实践逐渐成为主流,在逐渐发展的环境下和技术演化的过程中,迅速突破互联网行业并波及软件行业的各个领域。然而,这种突飞猛进的表面下却是龙鱼混杂、泥沙俱下。一方面,很多人在这个信息

huangshulang1234的博客 8180

分布式系统:概念与设计(第5版)

分布式系统:概念与设计(第5版),带目录标签的完整版本。

linux后台开发需要的知识

《微服务设计》      注:  有点意思 《自己动手写Java虚拟机》   注:  用go实现一个java虚拟机,收获不少 2016年读书笔记: 《网络游戏核心技术与实战》 《图解网络硬件》 《Go并发编程实战》 《Docker进阶与实战》 《深入理解ElasticSearch》 《Linux多线程服务端编程;使用muduo C++网络

fishmai的专栏 1732

新手必看:5分钟搞定Unitree Go1机器狗Gazebo仿真运动控制(附按键图解)

本文为新手提供了Unitree Go1机器狗在Gazebo仿真环境中实现运动控制的快速指南。通过5分钟极简配置和按键图解,帮助开发者快速掌握宇树科技明星产品的基础操作,包括环境搭建、仿真启动和运动控制技巧,适合零基础用户快速上手。

weixin_42550597的博客 300

Materials Studio与LAMMPS联合作战:如何用msi2lmp.exe完美转换聚合物模型(含PCFF力场配置)

本文详细解析了如何利用msi2lmp.exe工具将Materials Studio中的聚合物模型高效、准确地转换为LAMMPS可识别的data文件,并重点配置PCFF力场。文章提供了从MS模型构建、文件导出到命令行转换、参数调整及转换后验证的全流程实战指南与避坑技巧,旨在帮助研究者解决模型转换中的常见问题,实现跨平台分子动力学模拟的无缝衔接。

weixin_29228781的博客 519

大规模分布式系统架构与设计实战 (大数据技术丛书) - 电子书下载(高清版PDF格式+EPUB格式)...

大规模分布式系统架构与设计实战 (大数据技术丛书)-彭渊在线阅读百度网盘下载(vyf6)书名:大规模分布式系统架构与设计实战 (大数据技术丛书)作者:彭渊格式:EPUB, HTMLZ, PDF路径:点击打开出版:机械工业出版社排序作者:彭渊排序书名:大规模分布式系统架构与设计实战 (大数据技术丛书)日期:08 12月 2018uui...

938

基于ESP32与PCM5102的WiFi无损音频传输系统设计与实现

本文详细介绍基于ESP32与PCM5102的WiFi无损音频传输系统设计与实现。通过I2S接口直接传输PCM数据,避免SRC重采样,实现真正的HIFI级音质。涵盖硬件连接、软件架构、网络传输优化及实际音质对比,为音频爱好者提供高性价比的无损无线音频解决方案。

rnn9storyteller的博客 948

究竟啥才是互联网架构“高并发”

为什么80%的码农都做不了架构师?>>> ...

weixin_33835103的博客 4742

车载诊断架构 --- 车载ECU开发中DTC数量与芯片存储能力的关系及应对策略

本文探讨了汽车电子系统中ECU存储DTC故障码的容量问题及解决方案。作者作为汽车电子工程师,针对台架测试中遇到的DTC存储超限案例展开分析,指出随着汽车智能化发展,ECU需处理的DTC数量激增与芯片存储能力有限的矛盾。文章详细介绍了DTC的存储需求、ECU支持数量与芯片容量的关系,并提出应对策略,通过实际案例验证了方案的可行性。最后强调在ECU开发中需合理分配存储资源,确保关键故障信息不丢失。

Soly_kun的博客 87

如何绘制电气绝缘图(GB9706.1-2007和GB9706.1-2020差异)

是用来描述要考虑设备的绝缘状况和它们的值 ,从而便于和相关部门交流和沟通,如权威机构和检测实验室等。本文为绝缘图的实例, 包括所有相关的绝缘路径以及介电强度,爬电距离和电气间隙的值。

学海无涯的专栏 1万+

终于有一本可以让初学者全面了解分布式系统设计的书啦

今天,对于在IT行业从事技术工作的人,无论是工程师、架构师还是管理者,也无论从事的工作是否与分布式相关,都应该了解分布式技术,因为总有一天,你会遇到它、接触它、使用它、理解它、完善它。 然而,分布式技术涉及的方面(存储、计算、框架、中间件等)是如此之多,且迄今为止尚未见到一本书对其进行概括和梳理,要想对分布式技术有全面的了解,特别是对初学者而言,何其难哉! 如今初学者再不用学习分布式技术而发愁...

人邮异步社区 4532

【MERRA-2数据集】M2I1NXASM (5.12.4) 和 M2I1NXINT (5.12.4)概述

M2I1NXASM (5.12.4) 和 M2I1NXINT (5.12.4)概述

WW、forever的博客 680

Dubbo源码分析(二):Dubbo之消费端(Consumer)

通观全部Dubbo代码,有两个很重要的对象就是Invoker和Exporter,Dubbo会根据用户配置的协议调用不同协议的Invoker,再通过ReferenceFonfig将Invoker用Exporter包装后暴露在网络上。当用户调用一个Service接口的一个方法后由于Dubbo使用javassist动态代理,会调用Invoker的Invoke方法从而初始化一个RPC调用访问请求访问服务端

flashflight的专栏 4万+

LangGraph 实战教程:搭建一个智能办公多Agent协作平台

只存储必要的信息:不要把所有的原始数据都存储在状态中,比如销售数据可以存储在数据库或向量数据库中,状态中只存储数据的 ID 或摘要。使用类型提示:避免类型错误,提高代码的可维护性。支持增量更新:LangGraph 默认支持状态的增量更新(通过reduce函数),比如messages列表可以通过追加新消息的方式更新,而不是每次都重新创建整个列表。Normal Edge 的定义非常简单,只需要在StateGraph对象(稍后会详细讲解)上调用add_edge# 创建一个 StateGraph 对象。

SuperAGI2025 221

滴滴数据分析80道面试题及参考答案

常见的模型评价指标有准确率、召回率、F1 值、均方误差、均方根误差、R 方等。准确率是指模型预测正确的样本数占总样本数的比例,它反映了模型预测的准确性。召回率是指模型预测为正例的样本中实际为正例的比例,它衡量了模型对正例的捕捉能力。F1 值是准确率和召回率的调和平均数,综合考虑了两者的平衡。均方误差是预测值与真实值之差的平方的平均值,它衡量了模型预测值与真实值的平均偏离程度。均方根误差是均方误差的平方根,与均方误差类似,但更直观地反映了误差的大小。

大模型大数据攻城狮的专栏 1695

Dubbo源码分析(三):Dubbo之服务端(Service)

如上图所示的Dubbo的暴露服务的过程,不难看出它也和消费者端很像,也需要一个像reference的对象来维护service关联的所有对象及其属性,这里的reference就是provider。由于ServiceBean实现了  InitializingBean接口,所有在Spring实例化这个bean后会调用接口方法afterPropertiesSet: public void aft

flashflight的专栏 3万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Dubbo源码分析(一):概览

是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,是阿里巴巴的一个开源项目。

flashflight的专栏 2万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Mybatis3源码分析(三):解析mapper的xml配置文件

这一章我们来看看mybaits是怎么读取mapper的xml配置文件并解析其中的sql语句。     我们还记得是这样配置sqlSessionFactory的:     这里配置了一个mapperLocations属性,它是一个表达式,sqlSessionFactory会根据这个表达式读取包com.xxx.mybai

flashflight的专栏 2万+

ActiveMQ源码解析(一):聊聊broker

一、Broker     消息队列核心,相当于一个控制中心,负责路由消息、保存订阅和连接、消息确认和控制事务 1.Broker接口     定义了一些获取broker本身相关信息,添加connection、destination、session、消息生产者、控制事务的接口 1.1 CompositeDestinationBroker     多目的地Broker,Pr

flashflight的专栏 1万+

数据库中间件Mycat源码解析(三):Mycat的SQL解析和路由

mycat对sql的解析分为两部分,一个是普通sql,另一个是PreparedStatment。 首先解析普通sql,sql从客户端发过来后server接收后会调用FrontendCommandHandler的handle方法,这个方法会调用FrontendConnection的query方法,接着query方法会调用ServerQueryHandler的query方法,接着调用ServerCo

flashflight的专栏 1万+

缓存key生成策略的一些思考

首选说说策略设计目标: 1、唯一性保证 2、方便获取 3、高效性 MD5码等编码策略: 效率太低,

flashflight的专栏 1万+

Mybatis3源码分析(二):扫描Mapper关联到spring IOC容器

首先讲讲mapper是怎么从配置到对象的。         实现了basePackage下所有实现了markerInterface指明的类的接口都会被扫描解析到。MapperScannerConfigurer实现了BeanDefinitionRegistryPostProcessor(BeanDefinitionRegistry后置

flashflight的专栏 9559

ActiveMQ源码解析(四):聊聊消息的可靠传输机制和事务控制

在消息传递的过程中,某些情况下比如网络闪断、丢包等会导致消息永久性丢失,这时消费者是接收不到消息的,这样就会造成数据不一致的问题。那么我们怎么才能保证消息一定能发送给消费者呢?怎么才能避免数据不一致呢?

flashflight的专栏 9420
上一篇: 《微服务架构与实践》读书笔记
下一篇: 微服务架构二三事:总论
闲庭细步
博客等级 码龄18年 304粉丝 86原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值