分布式系统知识点总结

文章目录

  • 使用的资源汇总
  • 分布式系统定义
  • 计算机网络和分布式系统的区别
  • 使用分布式系统的原因
  • 在使用分布式系统时需要面对哪些问题
  • 并行系统和分布式系统的区别(parallel and distributed system)
  • 分布式系统举例
  • 分布式系统的一种定义是:一组独立的计算机,它们对外可以被视作单个系统,也就是说,即使有多台计算机,对用户也是完全隐藏的。给出一个例子,从这个角度来进行分析。
  • 中间件在分布式系统中的作用是什么
  • 解释(distribution) transparency 的含义,并举例说明不同类型的 transparency
  • 为什么在分布式系统中有时很难隐藏故障的发生和恢复
  • 可伸缩性(scalability)可以通过应用不同的技术来实现。对这些技术举个例子
  • 定义并简要解释下面的每个分布式系统挑战
  • 简述 C\S 架构和 P2P 架构的不同
  • 简述下面不同分布式系统的架构的不同,给出各自的优势和简要的解释
  • 如果客户机和服务器相距很远,我们可能会看到网络延迟主导了整体性能。我们如何解决这个问题
  • 垂直分布和水平分布的区别是什么
  • 问题15
  • 简要解释以下每个基本模型的目的,并解释每个模型的两个决定性因素
    • Interaction model
    • Failure model
      • Omission Failure
      • Arbitrary Failure
      • Timing Failure
      • Failure 的处理手段
    • Security Model
  • 解释同步协议和异步协议的区别
  • 简述 Socket 接口有关的三个方面(Briefly discuss three aspects of the socket interface)
  • 简述 UDP 协议在通信过程中可能出现的三种故障(Briefly explain three possible failures that can happen when using UDP for communication)
  • TCP 和 UDP 的比较和异同
  • 简要解释TCP解决UDP没有解决的问题的三个方面(Briefly explain three aspects of TCP that address issues not addressed by UDP)
  • 列出在客户端和服务器上建立TCP流所涉及的步骤(List the steps involved at the client and at the server to establish a TCP stream)
  • 简要讨论中间件提供的三个抽象(Briefly discuss three abstractions provided by middleware)
  • 解释为什么本地对象的指针通常不应该传递给远程进程
  • 解释如何使用Java RMI来构建分布式系统。讨论需要编译的内容和必须使用的系统的重要方面。
  • 解释下列调用语义
  • 给出两个为什么完全透明在中间件中并不总是可取的原因
  • RPC 和 RMI 有什么本质上的不同
  • 给出基于事件(event-based)的分布式系统的两个特征
  • 考虑下列操作是否是幂等的
  • 讨论使用多线程(multiple threads)与使用多个进程 (multiple process) 相比的潜在优点和缺点
  • 在什么情况下单线程服务器可能比多线程服务器更好?
  • 比较 worker pool 的 multi-threading 结构和 thread-per-request 结构
  • 为什么在同一主机上的进程之间通信时共享内存比消息传递快?为什么在同一主机上的进程之间进行通信时,共享内存不可取
  • *列出并简要解释在设计安全系统时的一些最坏情况假设。
  • 定义 encryption 并且描述两种主要的、用于加密算法的 key

使用的资源汇总

https://www.ejbtutorial.com/distributed-systems/introduction-to-distributed-systems
并发系统和分布式系统的区别
并发系统和分布式系统的区别(2)
分布式系统的透明性
分布式系统的问题和解答

分布式系统定义

  • 分布式系统对用户来讲,应该是一个逻辑上的整体系统,无论里面的分工如何,每个部分分别位于什么位置
  • 分布式系统的各个部分应该通过网络进行通信和协作

计算机网络和分布式系统的区别

  • 计算机网络是位于不同位置的计算机通过网络的形式进行连接,其目的是为了资源共享和信息传递
  • 而分布式系统是建立在计算机网络之上的软件系统,其目的是通过对计算机网络中的不同设备分工和协调以完成某个任务。
  • 因此我们可以认为计算机网络是分布式系统的网络基础;而分布式系统是计算机网络的一种高层应用。

使用分布式系统的原因

分布式系统知识点总结_第1张图片

  • 经济性: 微处理器集合提供比大型机更好的价格/性能
  • 速度: 一个分布式系统可能比一个大型机有更多的总计算能力。通过 负载分配 提高性能。
  • 固有分布: 一些应用程序天生就是分布式的。连锁超市。
  • 可靠性:如果一台机器崩溃了,系统作为一个整体仍然可以生存。更高的可用性和更高的可靠性
  • 增量增长:计算能力可以以很小的增量增加。模块化的可扩展性
  • 数据共享:允许许多用户访问公共数据库
  • 资源共享:昂贵的外设,如彩色打印机

在使用分布式系统时需要面对哪些问题

  • 并发性问题:分布式系统需要每个节点都是一个独立的角色,每个部分都只在必要的时候才进行资源的共享,其他的时候应该是各自解决自己的问题;而且分布式系统应该可以通过增加新的资源到网络中来实现网络的拓展
  • 没有全局时钟问题:分布式系统要面对没有全局时钟的问题,毕竟不同机器进行合作的时候进行信息交流需要依赖时钟,但是其实没有办法对所有的部分的时钟进行统一,总是会有细微的差别
  • 独立的故障问题:分布式系统还要面对故障问题,毕竟每个部分都有可能发生错误,因此设计者需要对故障进行考虑
  • 异质性问题(heterogeneity):不同的平台和操作系统可能会存在不兼容的问题,这也是设计分布式系统的时候要面对的问题
    分布式系统知识点总结_第2张图片

并行系统和分布式系统的区别(parallel and distributed system)

  • 最大的区别就是,并行系统虽然也是有多个处理单元组成,但是这些处理单元之间的通信是通过 共享内存 实现的;
  • 分布式系统包含的多个处理器之间的通信是通过 网络进行
  • 从广义上来说,分布式系统也属于并行系统的一种,只是很多个处理单元可能位于不同的位置,他们之间的通信方式是通过网络进行的。
    分布式系统知识点总结_第3张图片

分布式系统举例

分布式系统知识点总结_第4张图片

分布式系统的一种定义是:一组独立的计算机,它们对外可以被视作单个系统,也就是说,即使有多台计算机,对用户也是完全隐藏的。给出一个例子,从这个角度来进行分析。

  • 一个大型的服务,例如支付宝,每次支付的时候其实他身后的分布式系统需要进行一系列的分布式操作,但是对用户的感受来说,就只是一个付款的过程;根本不需要关注系统中的详细调度问题

中间件在分布式系统中的作用是什么

分布式系统知识点总结_第5张图片

  • 中间件是为应用提供通用服务和功能的软件。
  • 中间件一种软件层,其目的是掩盖分布式系统中的异构性,并为应用程序开发人员提供方便的编程模型。
  • 中间件在分布式系统中的作用为每个应用程序提供了相同的接口。数据管理、应用服务、消息传递、身份验证和 API 管理通常都要通过中间件。中间件可以帮助开发人员更有效地构建应用。它就如同是应用、数据与用户之间的纽带。

解释(distribution) transparency 的含义,并举例说明不同类型的 transparency

  • 分布式数据库系统必须要满足的一个重要特征就是,内部是分布的多个数据库结合起来,而外部的用户不需要意识到分布的多个站点,只当成一个完整系统来用,这叫做分布透过性(distributed transparency).
    分布式系统知识点总结_第6张图片

为什么在分布式系统中有时很难隐藏故障的发生和恢复

分布式系统知识点总结_第7张图片

可伸缩性(scalability)可以通过应用不同的技术来实现。对这些技术举个例子

分布式系统知识点总结_第8张图片

  • 按照这个定义,如果对数据进行备份和 distribution, 那么就可以降低延迟和提高吞吐量。
    分布式系统知识点总结_第9张图片

定义并简要解释下面的每个分布式系统挑战

分布式系统的挑战
分布式系统知识点总结_第10张图片

  • 异质性:构建分布式系统的时候,会涉及到很多部分和计算机的合作,这些计算机可能使用不同的操作系统和编程语言,在这种情况下,需要解决分布式系统的异质性的挑战
  • 开放性:计算机系统的开放性是决定系统能否以各种方式扩展和重新实现的特征。分布式系统的开放性主要是由添加新的资源共享服务的程度决定的,这些服务可以被各种客户程序使用。如果发布了系统的定义良好的接口,开发人员在将来添加新特性或替换子系统就会更容易。例如:Twitter和Facebook的API允许开发者以交互方式开发他们自己的软件。
  • 安全性:分布式系统主要通过网络在不同的机器之间进行访问和协作,因此由网络安全导致的分布式系统的安全性问题是一个重要的挑战
  • 错误处理:分布式系统虽然单点故障的概率较低,但是由于节点众多,错误的概率也随之而增大;因此需要对于不同节点采用错误监测的手段,保证在某个或者某些节点故障的时候不影响到整个系统的使用
  • 并发问题:服务和应用程序都提供可由分布式系统中的客户端共享的资源。因此,有可能多个客户机同时尝试访问共享资源。例如,记录拍卖出价的数据结构在接近截止时间时可能会被频繁访问。为了使对象在并发环境中是安全的,必须以其数据保持一致的方式同步其操作。这可以通过在大多数操作系统中使用的信号量等标准技术来实现

简述 C\S 架构和 P2P 架构的不同

https://techdifferences.com/difference-between-client-server-and-peer-to-peer-network.html

  • 在Client-Server网络中,采用集中式服务器来存储数据。而在点对点网络中,每个点都有自己的数据. …在客户机-服务器网络中,服务器响应客户机请求的服务。而在对等网络中,每个节点都可以对服务进行请求和响应。

简述下面不同分布式系统的架构的不同,给出各自的优势和简要的解释

分布式系统知识点总结_第11张图片

  • 多服务器架构:多台服务器的内容相同,他们之间可以进行通信,可以分布在不同的地理位置为 client 提供更加统一的服务;同时降低了单台服务器上的访问压力
  • 代理服务器和缓存架构:通过代理可以一定程度上保护服务器和client 的安全性;而且缓存的存在可以方便搜索已经查找过的数据,降低了服务器的负载压力
  • 移动端的编码和代理:将网络资源下载到本地,降低了和服务器的通信开销,但是会带来一些安全性问题,例如执行了不受信任方提供的代码;而且异构性也是一个挑战
  • 计算机网络:
  • 瘦客户端:把主要的大部分功能放在服务器进行执行,客户端保持轻量,但是服务器的压力很大
  • 多层级架构:将服务器的服务分成多个层级,每层执行的功能不同,一方面使得服务器具有不同的功能,另外一方面保护数据的安全

如果客户机和服务器相距很远,我们可能会看到网络延迟主导了整体性能。我们如何解决这个问题

It really depends on how the client is organized. It may be possible to dividethe client-side code into smaller parts that can run separately. In that case,when one part is waiting for the server to respond, we can schedule anotherpart. Alternatively, we may be able to rearrange the client so that it can doother work after having sent a request to the server. This last solutioneffectively replaces the synchronous client-server communication withasynchronous one-way communication
可以将客户端代码分成可以单独运行的更小的部分。在这种情况下,当一个部分在等待服务器响应时,我们可以调度另一个部分。或者,我们可以重新安排客户端,以便它可以在向服务器发送请求后做其他工作。最后一种解决方案有效地将同步客户机-服务器通信替换为异步单向通信

垂直分布和水平分布的区别是什么

https://www.scribd.com/document/87383219/Assignemnt-3-Distributed-System#download
分布式系统知识点总结_第12张图片

问题15

分布式系统知识点总结_第13张图片

简要解释以下每个基本模型的目的,并解释每个模型的两个决定性因素

https://danielw.cn/network-failure-models
分布式系统知识点总结_第14张图片

Interaction model

  • 分布式系统各个部分之间需要进行网络通信来交换信息和进行协作,因此对于通信模型的研究是非常有必要的,决定分布式系统通信的模型两个重要方面:
    • 通信信道的质量(communication performance of channel)
      通信的 channel 可以分为两种:

      • 流 stream
      • 简单的 message

      衡量通信的指标有:

      • 网络延迟(latency)
      • 网络带宽(bandwidth)
      • 网络抖动(jitter)
        分布式系统知识点总结_第15张图片
    • 时钟和计时事件(global clock and timing events)
      分布式系统知识点总结_第16张图片

  • interaction model 有两大类,一种是同步模型,一种是异步模型
    分布式系统知识点总结_第17张图片

Failure model

分布式系统知识点总结_第18张图片

  • 正是由于在分布式系统中,每个部分的进程处理事务过程中都可能失败;并且不同部分进行沟通的信道也可能发生 failure ,因此才需要对不同的 failure 情况进行研究、分类和应对

分布式系统知识点总结_第19张图片

Omission Failure

  • omission 故障通常 发生在信道传输的过程中;可能由于 buffer 满了而导致接受的信息丢失,也有可能是其他的原因导致的丢失
    分布式系统知识点总结_第20张图片
  • omission failure 也可以发生在进程中
    http://www.inf.ed.ac.uk/teaching/courses/ds/handouts/handout12.pdf
    分布式系统知识点总结_第21张图片

Arbitrary Failure

  • 进程中的 arbitrary Failure 是难以检测的
  • 信道中的 随机错误 对于一般的协议来说都是有检测方法的。
    分布式系统知识点总结_第22张图片

Timing Failure

分布式系统知识点总结_第23张图片

  • timeout 可以用来检测 timing 的问题;而且在异步系统中, timeout 只能表明某个进程没有及时进行回复 response 而不能证明有故障发生

分布式系统知识点总结_第24张图片

Failure 的处理手段

  • fail-stop:发现错误进程终止,直到错误被解决
  • graceful failure:错误发生不会终止程序,但会使得体验和性能下降,比如视频中的丢包错误,会让视频变得清晰度降低或者卡顿
  • tolerating fault:程序的用户需要容忍一部分的系统错误,例如校园网络在大量访问的情况下宕机,用户会收到 “请稍后再试” 的信息并且等待校园网恢复而不是注销账户
  • failure masking(错误隐藏):对一些非致命的错误,系统会尝试重复请求或者其他的操作,这个过程对用户来说要尽可能地透明,让用户感知不到,例如视频加载有问题的时候会播放广告吸引用户的注意力
  • failure recovery:故障恢复-在某些情况下,需要从故障中恢复,因为分布式系统的状态已经受到故障的影响,例如数据丢失,或者系统的状态不再有效
    • 可以通过冗余备份来帮助恢复数据
    • 可以通过设置检查点来恢复系统丢失数据之前的状态

Security Model

在这里插入图片描述

DS的安全性可以通过保护在其交互中使用的进程和通道,以及保护它们封装的对象免遭未经授权的访问来实现

可能的安全隐患:

  • 源地址可能是假的
  • 敌人可以复制、修改或注入传递的信息
  • 拒绝服务攻击:使服务器超载或以其他方式触发服务的过度延迟
  • 移动代码:以任意方式执行破坏服务器或服务的操作

解决隐患的方式

  • 密码学和共享秘密: 加密是对信息进行打乱的过程。
  • 认证:提供用户的身份信息。
  • 安全通道:使用加密和身份验证来构建安全通道,作为现有通信通道之上的服务层。安全通道是代表其原则连接一对进程的通信通道。
    分布式系统知识点总结_第25张图片

解释同步协议和异步协议的区别

As mentioned in the Asynchronous communication vs Synchronous communication page, asynchronous protocol uses start and stop bits in the individual character transmission, while synchronous protocol uses 2 or more SYN characters at the beginning of the transmission.
The example of the asynchronous protocol is Xmodem protocol and the example of synchronous protocol is IBM’s Bisync protocol.
正如在异步通信与同步通信页面中提到的,异步协议在单个字符传输中使用开始和停止位,而同步协议在传输开始时使用2个或更多SYN字符。异步协议的例子是Xmodem协议,同步协议的例子是IBM的Bisync协议

简述 Socket 接口有关的三个方面(Briefly discuss three aspects of the socket interface)

  • socket 接口是计算机之间进行通信的一种约定或一种方式;通过 socket 这种约定,计算机可以接受其他计算机的数据,也可以向其他计算机发送数据
  • socket 是应用层与 TCP / IP 协议族通信的中间的 软件抽象层,他是一组接口;socket 采用了 facade 模式中的类似操作,把复杂的 TCP / IP 协议族隐藏在 socket 接口的背后,对用户来说只可见一个简单的接口;从这个角度上来说 Socket 也是一种广义上的中间件
  • Socket 起源于 UNIX, 遵循一切皆文件的哲学,因此都可以用 打开 ->读写 -> 关闭 的模式来操作。
  • socket 使用 IP地址 + 协议 + 端口的方式来标志网络进程,网络中的进程可以通过这个标志与其他进程进行通信

简述 UDP 协议在通信过程中可能出现的三种故障(Briefly explain three possible failures that can happen when using UDP for communication)

https://www.cryptologie.net/article/449/problems-that-udp-and-only-udp-has/

  • 首先 UDP 不进行握手连接,而是直接发包(datagrams),因此可能导致数据丢失
  • UDP 发送数据是 out-of-order 的,因此在解包的过程中可能出现顺序问题
  • UDP 发送的数据报可能会导致 “粘包现象” 导致数据的黏连和边界不清楚造成数据的错误

TCP 和 UDP 的比较和异同

https://www.lifesize.com/en/blog/tcp-vs-udp/
分布式系统知识点总结_第26张图片
分布式系统知识点总结_第27张图片

简要解释TCP解决UDP没有解决的问题的三个方面(Briefly explain three aspects of TCP that address issues not addressed by UDP)

  • TCP 采用握手来解决连接问题
  • TCP 采用数据序列化来保证数据的顺序传输
  • TCP 通过 retransmission 来解决丢包问题
  • TCP 通过实现额外的错误检查和确认机制来确保数据的安全和完整

列出在客户端和服务器上建立TCP流所涉及的步骤(List the steps involved at the client and at the server to establish a TCP stream)

https://hit-alibaba.github.io/interview/basic/network/TCP.html
分布式系统知识点总结_第28张图片

分布式系统知识点总结_第29张图片

简要讨论中间件提供的三个抽象(Briefly discuss three abstractions provided by middleware)

解释为什么本地对象的指针通常不应该传递给远程进程

https://www.cnblogs.com/feifeicui/p/10431529.html

  • 因为远程进程和当前进程不存在于一个进程空间,传递指针也不可能使得远程的进程能够调用本地方法,因此,应该通过传递方法的 id,远程再通过查找需要调用的方法来进行调用。

解释如何使用Java RMI来构建分布式系统。讨论需要编译的内容和必须使用的系统的重要方面。

什么是RPC
https://blog.csdn.net/zolalad/article/details/25186131
视频资源
分布式系统知识点总结_第30张图片

  • 定义远程接口类,此类继承自 java.rmi.Remote 类,
  • 创建远程类实现远程接口,
  • 使用 rmic 编译器生成实现类的 stub 和 skeleton
  • 创建服务器程序,创建客户端程序
  • 启动 RMI 注册服务程序 rmiregistry
  • 启动服务端程序
  • 启动客户端程序
    分布式系统知识点总结_第31张图片
    分布式系统知识点总结_第32张图片

解释下列调用语义

分布式系统知识点总结_第33张图片
分布式系统知识点总结_第34张图片

  • maybe : 远程过程调用可能执行一次,也可能根本不执行。除非调用者收到一个结果,否则就不知道是否调用了远程过程
  • at least once : 远程过程至少执行一次,调用者收到响应,或者调用者收到一个异常,表明远程过程根本没有执行。
  • at most once: 远程过程调用要么只执行一次,在这种情况下调用者接收到响应,要么根本没有执行,调用者接收到异常。
  • Java RMI支持 at most once 调用。RPC支持 at least once 语义。

给出两个为什么完全透明在中间件中并不总是可取的原因

在这里插入图片描述

RPC 和 RMI 有什么本质上的不同

https://blog.csdn.net/qq_35642036/article/details/83049802
https://www.jianshu.com/p/91d9671db0bf

  • RMI 是 Java 的一种框架,而 RPC 不针对某一种语言或者操作系统
  • 调用的方式不同, RMI 是通过 对象的 id 来进行注册,通过 stub 和 skeleton 的写作来完成在本地调用远程的对象方法,使得远程的调用和本地调用同样的方便;
  • RPC 则不同,他是通过将要调用的方法所在的类的类名和方法名通过网络传输到 server 端,然后server 端进行反序列化后根据指定的类和方法去进行调用,并把调用的结果传回 client 端
    分布式系统知识点总结_第35张图片
    分布式系统知识点总结_第36张图片

给出基于事件(event-based)的分布式系统的两个特征

https://link.springer.com/chapter/10.1007/978-3-642-19724-6_2
http://www.360doc.com/content/17/0903/21/16915_684409417.shtml

  • 事件(event)是整个系统架构设计的核心
  • 松耦合的方式发出或者处理事件
    分布式系统知识点总结_第37张图片

考虑下列操作是否是幂等的

分布式系统知识点总结_第38张图片

  • 因此按电梯的按键操作是幂等的
  • 向文件中写入数据不是幂等的(如果每次写入都会覆盖数据,那么就是幂等的)
  • 向文件中添加数据也不是幂等的
    分布式系统知识点总结_第39张图片

讨论使用多线程(multiple threads)与使用多个进程 (multiple process) 相比的潜在优点和缺点

https://www.guru99.com/difference-between-multiprocessing-and-multithreading.html
多进程和多线程的区别

  • 多进程是两个及两个处理器参与,而多线程则是一种程序技术,它允许多段代码并发的执行
    分布式系统知识点总结_第40张图片

多进程的优势和劣势 vs 多线程的优势和劣势

  • 多进程提高了系统的可靠性,而在多线程进程中,每个线程都是并行运行的,而并行运行就可能出现并发问题或者是多个代码块执行的顺序出现问题
  • 多个进程是真正地提高了系统处理器的数量和资源,而多线程只是 CPU 在不同的线程之间进行调度,通过增加计算线程的数量来提高系统性能。
  • 但是多进程在创建进程的过程中是缓慢的,而且是依赖于特定资源的;从这个角度上来说 多线程 是节省资源的
    分布式系统知识点总结_第41张图片
    分布式系统知识点总结_第42张图片
    分布式系统知识点总结_第43张图片

在什么情况下单线程服务器可能比多线程服务器更好?

https://www.rune-server.ee/runescape-development/rs2-server/279675-single-threaded-vs-multi-threaded-server-designs.html
https://blog.csdn.net/u013568373/article/details/93488554

  • 如果一个服务器只需要执行一个任务:例如只需要读取文件中的数据,那么这个服务器设计成单线程会更快

  • 首先使用多线程的原因是:

    • 如果程序中某个代码块涉及到阻塞的操作,那么整个程序可能就阻塞了,避免这个问题采用多线程来并发处理多个代码块
    • 此外,如果有多块 CPU,如果能够编写合适的代码可以提高整体系统的性能;而且可以不用设计 基于周期(cycle-based)应用,而专注于 “需求”(on-demand based)
    • 但是多线程要涉及到 cpu 的上下文切换和线程创建,这些都是需要时间耗费的
  • 因此如果不涉及上述情况,服务器的行为比较单一而且不会阻塞,那么采用单线程服务器是更好的选择

比较 worker pool 的 multi-threading 结构和 thread-per-request 结构

在这里插入图片描述
首先,多线程服务器(multi-thread server) 会采用下列几种不同的架构来创建多线程
分布式系统知识点总结_第44张图片

  • worker pool 的多线程架构 就是:预先创建多个线程存在线程池中,客户端连接的时候直接从线程池中分配合适的线程来完成任务;线程池中的线程在完成任务后不会销毁,而是会等待下一个任务。
  • Thread-per-request 则是:当用户连接服务器之后,发出一个请求服务器就创建一个新的线程;而任务完成后对应的线程会被销毁;往往在高并发的时候,这种操作导致的大量的创建和销毁线程会是整个服务器的主要开销。

为什么在同一主机上的进程之间通信时共享内存比消息传递快?为什么在同一主机上的进程之间进行通信时,共享内存不可取

https://newbedev.com/what-s-the-difference-between-the-message-passing-and-shared-memory-concurrency-models

  • 共享内存比消息传递更快,因为消息传递系统通常是使用系统调用(system calls)实现的,因此需要更耗时的内核干预任务. …共享内存模型通过读写共享内存块进行通信,共享内存块是由信号量或类似的东西保护的
  • 因为共享内存涉及到多个 worker 操作同一片内存,这样的话很容易出现并发问题,因此需要通过信号量或类似的操作进行并发控制
  • Shared memory is faster than message passing, as message-passing systems are typically implemented using system calls and thus require the more time-consuming task of kernel intervention. … Shared memory models communicate by reading/writing to shared memory blocks, which are protected by semaphores or similar.
  • 不可取的原因就是可能出现并发问题,尤其是很多个部分同时修改共享的内存数据

*列出并简要解释在设计安全系统时的一些最坏情况假设。

分布式系统知识点总结_第45张图片

  • 接口暴露
  • 网络非安全
  • 算法和代码暴露给黑客
  • 破坏者有权限访问重要的资源

定义 encryption 并且描述两种主要的、用于加密算法的 key

  • 加密 encryption 是对消息进行编码以隐藏其内容的过程。

  • 常用的两种 key:

    • 共享的秘钥:shared secret key 这种秘钥只有发送方和接收方双方持有,发送方通过秘钥进行加密,接收方通过秘钥进行解密
    • 公钥 / 私钥 Public - private key 加密方通过公钥进行加密,私钥则只有解密方持有。
  • 除了使用 key,还可以采用 身份认证 authentication 和电子签名 digital signatures 来保证安全性

你可能感兴趣的:(Distributed,System,分布式系统,网络,java,开发语言)