基础架构、协议、通信整理

目录

    • I. BS vs. CS架构
        • CS Architecture
        • BS Architecture
    • II. HTTP
    • III. TCP/IP (Internet Protocol Suite)
        • TCP
        • UDP
        • IP
        • TCP与IP
    • IV. REST
        • 资源
        • URI as identifier
        • 统一资源接口
        • 无状态通信原则
        • HyperMedia as the engine for state transfer
        • 其它名词
    • V. MQ(消息队列)
        • 优势
        • RabbitMQ
          • Consumer Delivery Acknowledgement
          • Exchange Type
    • VI. RPC

I. BS vs. CS架构

CS Architecture

基础架构、协议、通信整理_第1张图片
Clients和servers通过request-respond传递信息的网络架构。其中server通过HTTP协议向client完成高效超文本传递。

BS Architecture

基础架构、协议、通信整理_第2张图片
CS架构改进版,由web browser作为client,web server作为server.
优势:
1. 轻量: 不用安装任何软件,只要有接网的电脑就可以使用
2. 维护成本低: client是web browser,无需维护;只维护server即可

II. HTTP

使用CS Model,是从web server传送超文本到web browser的网络协议。
stateless: 客户端的请求不会被跟踪。即,如果同一个client接连打开了网页A和网页B,server不会知道A和B的caller是相同的。

III. TCP/IP (Internet Protocol Suite)

连网计算机之间的通信协议。

TCP

应用程序之间的通信。可靠性强,速度慢。通过反复发送消息,直到destination host接收的方式保证消息被完整传递。
Connection: Prior communication is required to set up a new data path,需占用两台计算机的通信线路。

UDP

与TCP类似,但发送的是datagram且不需连接(connectionless)。速度快,但可靠性差。
datagram: 包括headerpayload

IP

计算机之间的通信。信息被分成packets,根据packet header中的IP地址进行传输。
packet: 包括control information(存储于packet header,包括IP地址)和user data。

TCP与IP

TCP将数据分割成packets传送给IP,由IP进行传递,最后在数据返回时再由TCP将它们组合起来。

IV. REST

一种支持跨语言、跨平台的web设计架构。重要原则如下:

资源

网络上的一切事物都被抽象为资源。

URI as identifier

URI是网络中资源的名称,是识别资源的方式。
URI和URL的区别: 一般情况下URL是URI的一种;除了能够识别资源外,URL还提供了资源的位置信息。(例:如果资源是小明的话,小明作为名字可以算作URI,小明的住址是URL。)

统一资源接口

使用标准的HTTP方法,主要包括GET, POST, PUT, DELETE。对资源的操作不会改变URI。

无状态通信原则

客户端存储应用状态,服务端存储资源状态。无状态(stateless)的意思是,server无须保留应用状态,只有在接受到请求时才会关注应用状态。每一次请求应包含处理该请求的全部信息。
优势: 独立性 (多次请求中同一客户端无须依赖同一服务器)

HyperMedia as the engine for state transfer

Server利用HyperMedia将下一步可能的状态传递给client,完成应用状态转移。cleint(即web browser)只需要知道如何处理server返回的结果即可,而不用知道URI的结构。
例如,用户利用URL进入某网站主页,可以点击server返回的HTML文件中的链接进入该主页下的一个分页;在此过程中,client不需要知道主页-分页的结构。

其它名词

  • CURD: 数据处理的基本原子操作,包括Create, Update, Retrieve, Delete
  • HyperMedia: 将HyperText的概念从纯文本延伸至多媒体
  • ROA(Resource Oriented Architecture): 一种利用REST接口搭建软件的软件设计架构,包括一系列原则。
  • 幂等性: 多次访问得到的response相同
  • 安全性: 访问不会修改server上资源的状态

V. MQ(消息队列)

一种异步通信方式,适用于无服务器和微服务架构,为分布式程序提供通信与协调。
基础架构、协议、通信整理_第3张图片

优势

  • 速度提升: sending application无须等待receiver的回复,因为消息可以被确保成功传输
  • 可扩展性
  • 消除组件之间的依赖关系

RabbitMQ

基础架构、协议、通信整理_第4张图片
RabbitMQ是一个实现消息队列的中间件。
Exchange相当于一个中转站,可以选择如何将message发送到queue上。

Consumer Delivery Acknowledgement

防止因consumer死亡而丢失信息的安全措施。
信息接收并处理完毕后,consumer会向RabbitMQ发送一个acknowledgement,通知它这条信息可以被删除。如果一个consumer在没有发回ack的情况下死掉了,RabbitMQ就会知道这条信息尚未被处理,会再次发送这条信息。

Exchange Type

binding 指exchange和queue之间的关系。
Exchange type 决定了exchange处理消息的方式,一共有四种:
1. Fanout Exchange
Broadcase (publish) the message so that all consumers can view it.
2. direct exchange
A message goes to the queues whose binding key excatly matches the message’s routing key.
3. topic exchange
Binding keys and routing keys can contain multiple words, separated by .(dot). A queue can subsribe to multiple topics. * 表示一个单词;#表示零个及零个以上单词。
4. Headers exchange
类似topic exchange,只不过topic的表达方式从binding keys变成了headers。

VI. RPC

一种通过网络达到远程调用服务目的的通信方式。由于local call和remote call的代码是一样的,RPC可以使构建分布式系统更容易。
然而,因为local call和remote call的处理速度相差很大,仍需要关注二者的区别。
基础架构、协议、通信整理_第5张图片
其中,User-stub可以被细分为RPC proxy和RPC invoker;server-stub可以被细分为RPC processor和RPC invoker。
RabbitMQ Tutorial 第六课有关于如何用RabbitMQ构建RPC的详细介绍:使用RabbitMQ构建RPC

你可能感兴趣的:(Web,Application)