[QA]接触到的一些专业名词

2019-07-17  本文已影响0人  yumiii_

1. RPC

RPC(Remote Procedure Call)即远程过程调用,允许一台计算机调用另一台计算机上的程序得到结果。理论上,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。RPC采用C/S模式,请求程序就是一个客户机,而服务提供程序就是一台服务器。RPC要解决的问题有两个:1⃣️在代码中的表现形式是:不需要做额外的编程,就像在本地调用一样,让调用者感知不到远程调用的逻辑。2⃣️分布式的应用可以借助RPC来完成机器之间的调用。
RPC框架中有三个角色:Provider(服务提供方)、Consumer(调用远程服务的服务消费方)和Registry(服务注册与发现的注册中心)

服务提供者启动后主动向注册中心注册机器ip、port以及提供的服务列表(服务列表一般会写到配置文件中)
服务消费者启动时向注册中心获取服务提供方地址列表,可实现软负载均衡和Failover

过程:client与server建立TCP连接——client将调用的方法和数据等序列化成字节流——server反序列化得到调用的方法等,并将结果返回给client
看这个过程,RPC就是把中间的细节封装起来了,让用户对这些细节透明。
分布式一个服务对应多个实例,调用的时候需要从注册中心获取服务提供方的实例地址列表。

Reference:如何给老婆解释什么是RPC

2. consul

看RPC的registry,我们了解到调用方会从配置文件中读取服务地址然后再进行调用。这种方式有什么缺点呢?
1⃣️如果服务部分实例故障,不能及时下掉,需要上线新的配置文件,并且需要所有调用方重启服务才能彻底消除影响。
2⃣️服务扩容,需要上线配置文件,并且重启所有服务调用方。
因此引入服务发现和服务注册的概念,(可以看服务发现 - consul 的介绍、部署和使用)提供一个专门用于存储服务地址信息的服务,实例启动的时候,将自身的名字和地址信息注册到该服务中,需要调用该服务的时候,从该服务中根据提供的名字查询对应服务的地址列表。当服务实例退出的时候,会自动删掉曾经注册的地址信息。开源的服务发现技术有zk,etcd,consul等。

上一篇 下一篇

猜你喜欢

热点阅读