内容简介:第 83 篇文章这是关于 Swoole 学习的第七篇文章:Swoole RPC 的实现。有位读者说 “上篇文章,下载代码后直接运行成功,代码简洁明了,简直是 Swoole 入门最好的 Demo ”。
第 83 篇文章
这是关于 Swoole 学习的第七篇文章:Swoole RPC 的实现。
概述
有位读者说 “上篇文章,下载代码后直接运行成功,代码简洁明了,简直是 Swoole 入门最好的 Demo ”。
“哈哈哈...”
还有读者说 “有一起学习的组织群吗,可以在里面进行疑难答疑?”
这个还真没有,总觉得维护一个微信群不容易,因为自己本身就不爱在群里说话,另外,自己也在很多微信群中,开始氛围挺好的,大家都聊聊技术,后来技术聊的少了改成聊八卦啦,再后来慢慢就安静了,还有在群里起冲突的...
当然我也知道维护一个微信群的好处是非常大的,如果有这方面经验的同学,咱们一起交流交流 ~
还有出版社找我写书的.
他们也真是放心,我自己肚子里几滴墨水还是知道的,目前肯定是不行,以后嘛,再说。
还有一些大佬加了微信,可能是出于对晚辈的提携吧,偷偷告诉你,从大佬的朋友圈能学到很多东西。
我真诚的建议,做技术的应该自己多总结总结,将自己会的东西写出来分享给大家,先不说给别人带来太多的价值,反正对自己的帮助是非常非常大的,这方面想交流的同学,可以加我,我可以给你无私分享。
可能都会说时间少,时间只要挤,总会有的,每个人都 24 小时,时间对每个人是最公平的。说到这推荐大家读一下《暗时间》这本书,这是我这本书的读书笔记,大家可以瞅瞅。
开始今天的文章吧,这篇文章实现了一个简单的 RPC 远程调用,在实现之前需要先了解什么是 RPC,不清楚的可以看下之前发的这篇文章《我眼中的 RPC》。
下面的演示代码主要使用了 Swoole 的 Task 任务池,通过 OnRequest/OnReceive 获得信息交给 Task 去处理。
举个工作中的例子吧,在电商系统中的两个模块,个人中心模块和订单管理模块,这两个模块是独立部署的,可能不在一个机房,可能不是一个域名,现在个人中心需要通过 用户ID 和 订单类型 获取订单数据。
实现效果
客户端
HTTP 请求
TPC 请求
请求方式
-
SW 单个请求,等待结果
发出请求后,分配给 Task ,并等待 Task 执行完成后,再返回。
-
SN 单个请求,不等待结果
发出请求后,分配给 Task 之后,就直接返回。
发送数据
-
type 同步/异步设置
-
token 可进行权限验证
-
class 请求的类名
-
method 请求的方法名
-
uid 参数一
-
type 参数二
返回数据
-
request_method 请求方式
-
request_time 请求开始时间
-
response_time 请求结束时间
-
code 标识
-
msg 标识值
-
data 约定数据
-
query 请求参数
代码
OnRequest.php
OnReceive.php
小结
Demo 代码仅供参考,里面有很多不严谨的地方!
服务的调用方与提供方中间需要有一个服务注册中心,很显然上面的代码中没有,需要自己去实现。
服务注册中心,负责管理 IP、Port 信息,提供给调用方使用,还要能负载均衡和故障切换。
根据自己的情况,服务注册中心实现可容易可复杂,用 Redis 也行,用 Zookeeper、Consul 也行。
感兴趣的也可以了解下网关 Kong ,包括 身份认证、权限认证、流量控制、监控预警...
再推荐一个 Swoole RPC 框架 Hprose,支持多语言。
就到这了,上面的 Demo 需要源码的,加我微信。(菜单-> 加我微信-> 扫我)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- php如何实现session,自己实现session,laravel如何实现session
- AOP如何实现及实现原理
- webpack 实现 HMR 及其实现原理
- Docker实现原理之 - OverlayFS实现原理
- 为什么实现 .NET 的 ICollection 集合时需要实现 SyncRoot 属性?如何正确实现这个属性?
- 自己实现集合框架(十):顺序栈的实现
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。