Harpc GitHub add:https://github.com/baifendian/harpc
问题:harpc原理?怎么加上php支持?
rpc的全称是remote procedure call,翻译过来就是远程过程调用。远程调用的意思就是程序调用的方法实现不是在程序所在的本地,而是在远程的某个地方。远程调用的好处就是解耦。当server需要对方法内实现修改时,client完全感知不到,不用做任何变更;方法的提供者我们通常称为:服务的暴露。
远程过程调用的原理
比如 A (client) 调用 B (server) 提供的remoteAdd方法:
首先A与B之间建立一个TCP连接;
然后A把需要调用的方法名(这里是remoteAdd)以及方法参数(10,11)序列化成字节流发送出去;
B接受A发送过来的字节流,然后反序列化得到目标方法名,方法参数,接着执行相应的方法调用(可能是localAdd,这个要看服务器的借口函数是怎么写的)并把结果30返回;
A接受远程调用结果,输出21。
RPC框架就是把我刚才说的这几点些细节给封装起来,给用户暴露简单友好的API使用。
RPC框架就是把上面这几点细节给封装起来,对用户暴露出简单友好的API使用。
harpc是什么
HARPC(High Availability RPC)是基于thrift的跨语言、 高可用的RPC框架。
thrift是什么
thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Go,Python, PHP, JavaScript, Node.js这些编程语言间无缝结合的、高效的服务。
harpc底层使用thrift,而thrift又能于Php无缝结合,可以使用php和harpc结合
harpc解决的问题?
问题1:不同语言之间的通信问题
– 实际场景中服务端和客户端往往使用不同的编程语言
问题2:负载均衡和容灾处理
– 如何实现任务的分布式处理?
– 如何实现水平扩展,自动发现新的服务节点? – 如何处理节点的异常down机?
问题3:服务维护成本高
– 服务进程还在吗?
– 服务请求量和性能怎么样? – 我们的服务有谁在调用?
基于thrift开发的方案,底层通信使用thrift来保证高性能和跨语言,然后HARPC来保证高可用和可视化,并且尽量保持简单,来达到轻量级的需求。
harpc的整体架构
官方提供了两种方式:看到直连方式
适用于第三方的thrift服务或没有集成HARPC的服务
但是该方法有个缺点:该方式不支持自动发现新的服务节点
因此,我们可以通过自己定制thrift服务,使用harpc进行远程通信。
由于现在要出去面试,暂时先研究这些。
http://diwakergupta.github.io/thrift-missing-guide/ thrift guide
http://www.myexception.cn/software-architecture-design/2020212.html