Hyperf从入门到精通(6)

11 篇文章 24 订阅
本文详细介绍了在Hyperf框架中实现RPC服务的步骤,包括服务提供者和服务消费者的配置,以及如何利用Consul作为注册中心进行服务发现。通过RPC,可以实现分布式微服务的透明调用,提升系统的灵活性和扩展性。
摘要由CSDN通过智能技术生成

简介

本节将讲述在 Hyperf 里如何搭建一个 JSONRPC 协议的服务提供者和服务消费者,包括直接指定对端节点信息消费服务,和通过将服务提供者注册到 Consul 并由服务消费者从 Consul 拉取健康的服务节点信息完成 RPC 请求。

RPC

概念

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务。也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。

原理

RPC的设计由Client,Client stub,Network ,Server stub,Server构成。 其中Client就是用来调用服务的,Cient stub是用来把调用的方法和参数序列化的(因为要在网络中传输,必须要把对象转变成字节),Network用来传输这些信息到Server stub, Server stub用来把这些信息反序列化的,Server就是服务的提供者,最终调用的就是Server提供的方法。

在这里插入图片描述

  1. Client像调用本地服务似的调用远程服务;
  2. Client stub接收到调用后,将方法、参数序列化
  3. 客户端通过sockets将消息发送到服务端
  4. Server stub 收到消息后进行解码(将消息对象反序列化)
  5. Server stub 根据解码结果调用本地的服务
  6. 本地服务执行(对于服务端来说是本地执行)并将结果返回给Server stub
  7. Server stub将返回结果打包成消息(将结果消息对象序列化)
  8. 服务端通过sockets将消息发送到客户端
  9. Client stub接收到结果消息,并进行解码(将结果消息发序列化)
  10. 客户端得到最终结果。

作用

  • 可以做到分布式,现代化的微服务
  • 部署灵活
  • 解耦服务
  • 扩展性强

RPC的目的是让你在本地调用远程的方法,而对你来说这个调用是透明的,你并不知道这个调用的方法是部署哪里。通过RPC能解耦服务,这才是使用RPC的真正目的。

服务提供者

服务接口

在这里插入图片描述

接口实现类

在这里插入图片描述

配置

在这里插入图片描述

服务消费者

服务接口

在这里插入图片描述
此处服务接口与服务提供者接口相同,将来统一抽离。

配置

在这里插入图片描述

调用

在这里插入图片描述

Consul注册中心

启动consul

 ./consul agent -dev

生成consul配置文件

php hyperf.php vendor:publish
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

shang443

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

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

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

打赏作者

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

抵扣说明:

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

余额充值