【学习总结】分布式系统理论、分布式、集群、微服务的区别、远程过程调用(RPC)

1 分布式系统理论

1.1 什么是分布式系统

在《分布式系统概念与设计》一书中,对分布式系统做了如下定义:分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。简单来说就是一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样。

1.2 分布式、集群、微服务的区别

  • 分布式: 一个业务拆分成多个子业务模块,部署在不同的服务器上。分布式系统内的各个子系统之间通过网络进行通信和协调,如异步消息或者RPC/HTTP请求调用等(关于远程过程调用RPC,后文将做详细介绍)。

  • 集群: 同一个业务,部署在多个服务器上。多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。

  • 微服务对比分布式:微服务是架构设计方式,分布式是系统部署方式,微服务相比分布式服务来说,它的粒度更小(小到只完成一个功能,这个服务可以单独部署运行),服务之间耦合度更低,由于每个微服务都由独立的小团队负责,因此它敏捷性更高,分布式服务最后都会向微服务架构演化,这是一种趋势, 不过服务微服务化后带来的挑战也是显而易见的,例如服务粒度小,数量大,后期运维将会很难。(此处参考

1.3 分布式系统的目标

用大量廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是将服务拆分部署,利用更多的机器,处理更多的数据提升系统的整体性能和吞吐量

1.4 需要注意的问题

  • 尽量保证分布式系统的容错性。
  • 只有当单个节点的处理能力无法满足日益增长的计算、存储任务的时候,且硬件的提升(加内存、加磁盘、使用更好的CPU)高昂到得不偿失的时候,应用程序也不能进一步优化的时候,我们才需要考虑分布式系统。
  • 分布式系统由于多节点、通过网络通信的拓扑结构,会引入很多单机系统没有的问题,为了解决这些问题又会引入更多的机制、协议,带来更多的问题
  • 分布式环境可能会出现多种问题,如通信异常、网络分区相关问题、三态问题、节点故障、性能和可靠性过分依赖于网络、安全保密性问题。

1.5 具体应用

阿里的飞天洛神

2 远程过程调用(RPC)

2.1 什么是RPC

远程过程(函数)调用RPC(Remote Procedure Call),是一个通信协议,用于通过网络连接的系统,该协议允许运行于一台主机(本地)系统上的进程调用另一台主机(远程)系统上的进程,如果涉及的软件采用面向对象编程(如Java编写的软件),那么远程过程调用也可成为远程方法调用。

(注:RPC在《计算机操作系统(第四版)》(汤小丹…)这一教材中的第75、76页中有详细介绍,此处部分内容也参考的此处)

2.2 基本原理

在本地主机中包括:
(1)一个本地客户进程,为守护进程,负责与远程主机的相应进程进行网络间的消息传递,同时与本地存根交互信息,此进程处于阻塞状态,等待消息。
(2)一个客户存根(client stub),本地进程调用远程过程实际就是调用该过程关联的存根。

在远程服务器中包括:
(1)一个远程服务器进程,为守护进程,负责与客户主机的相应进程进行网络间的消息传递,同时与本地存根交互信息,此进程处于阻塞状态,等待消息。
(2)一个远程服务器存根(server stub),进程调用远程过程实际就是调用该过程关联的存根。

在Java中的实现,则涉及对象的序列化与反序列化的处理,基本原理图如下图所示:
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超周到的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值