好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

phprpc通讯框架 php通信协议

很多站长朋友们都不太清楚phprpc通讯框架,今天小编就来给大家整理phprpc通讯框架,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 当前主流的RPC框架有哪些 2、 主流的RPC框架有哪些? 3、 php rpc好用吗,有什么优缺点?php rpc框架哪个好? 当前主流的RPC框架有哪些

Thrift 是由 Facebook 开源的一个 RPC 框架,现在已经挂在 apache.org 下了。主要的几个好处:

1. 支持非常多语言,包括在 WEB 开发中很常用的 PHP,以及最重要的 C++/Python/Java 等 WEB后端常用语言,当然,还包括很 cool 的 Ruby、Erlang。

2. 完整的 RPC 框架实现,用脚本生成通讯相关的框架代码,开发者只需要集中精力处理好 业务逻辑。比如搭建一个 Hello World Service 只需要几分钟。

3.拥有被 Facebook、Last.fm 等不少大规模互联网应用验证过的性能和可用性。

Hessian是一款基于HTTP协议的RPC框架,采用的是二进制RPC协议,非常轻量级 ,且速度较快。

当然,还有Hetty,它是一款构建于Netty和Hessian基础上的高性能的RPC框架

主流的RPC框架有哪些?

RPC是远程过程调用的简称,广泛应用在大规模分布式应用中,作用是有助于系统的垂直拆分,使系统更易拓展。Java中的RPC框架比较多,各有特色,广泛使用的有RMI、Hessian、Dubbo等。RPC还有一个特点就是能够跨语言。

1、RMI(远程方法调用)

JAVA自带的远程方法调用工具,不过有一定的局限性,毕竟是JAVA语言最开始时的设计,后来很多框架的原理都基于RMI,RMI的使用如下:

对外接口

<span style="font-size:12px;">public interface IService extends Remote {  

  

    public String queryName(String no) throws RemoteException;  

  

}</span>

服务实现

import java.rmi.RemoteException;  

import java.rmi.server.UnicastRemoteObject;  

  

// 服务实现  

public class ServiceImpl extends UnicastRemoteObject implements IService {  

  

    /** 

     */  

    private static final long serialVersionUID = 682805210518738166L;  

  

    /** 

     * @throws RemoteException 

     */  

    protected ServiceImpl() throws RemoteException {  

        super();  

    }  

  

    /* (non-Javadoc) 

     * @see com.suning.ebuy.wd.web.IService#queryName(java.lang.String) 

     */  

    @Override  

    public String queryName(String no) throws RemoteException {  

        // 方法的具体实现  

        System.out.println("hello" + no);  

        return String.valueOf(System.currentTimeMillis());  

    }  

      

}  

RMI客户端

[java] view plain copy

import java.rmi.AccessException;  

import java.rmi.NotBoundException;  

import java.rmi.RemoteException;  

import java.rmi.registry.LocateRegistry;  

import java.rmi.registry.Registry;  

  

// RMI客户端  

public class Client {  

  

    public static void main(String[] args) {  

        // 注册管理器  

        Registry registry = null;  

        try {  

            // 获取服务注册管理器  

            registry = LocateRegistry.getRegistry("127.0.0.1",8088);  

            // 列出所有注册的服务  

            String[] list = registry.list();  

            for(String s : list){  

                System.out.println(s);  

            }  

        } catch (RemoteException e) {  

              

        }  

        try {  

            // 根据命名获取服务  

            IService server = (IService) registry.lookup("vince");  

            // 调用远程方法  

            String result = server.queryName("ha ha ha ha");  

            // 输出调用结果  

            System.out.println("result from remote : " + result);  

        } catch (AccessException e) {  

              

        } catch (RemoteException e) {  

              

        } catch (NotBoundException e) {  

              

        }  

    }  

}  

RMI服务端

[java] view plain copy

import java.rmi.RemoteException;  

import java.rmi.registry.LocateRegistry;  

import java.rmi.registry.Registry;  

  

// RMI服务端  

public class Server {  

  

    public static void main(String[] args) {  

        // 注册管理器  

        Registry registry = null;  

        try {  

            // 创建一个服务注册管理器  

            registry = LocateRegistry.createRegistry(8088);  

  

        } catch (RemoteException e) {  

              

        }  

        try {  

            // 创建一个服务  

            ServiceImpl server = new ServiceImpl();  

            // 将服务绑定命名  

            registry.rebind("vince", server);  

              

            System.out.println("bind server");  

        } catch (RemoteException e) {  

              

        }  

    }  

}

2、Hessian(基于HTTP的远程方法调用)

基于HTTP协议传输,在性能方面还不够完美,负载均衡和失效转移依赖于应用的负载均衡器,Hessian的使用则与RMI类似,区别在于淡化了Registry的角色,通过显示的地址调用,利用HessianProxyFactory根据配置的地址create一个代理对象,另外还要引入Hessian的Jar包。

3、Dubbo(淘宝开源的基于TCP的RPC框架)

基于Netty的高性能RPC框架,是阿里巴巴开源的,总体原理如下:

php rpc好用吗,有什么优缺点?php rpc框架哪个好?

什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call)那什么是远程调用?通常我们调用一个php中的方法,比如这样一个函数方法: localAdd(10, 20),localAdd方法的具体实现要么是用户自己定义的,要么是php库函数中自带的,也就说在localAdd方法的代码实现在本地,它是一个本地调用!远程调用意思就是:被调用方法的具体实现不在程序运行本地,而是在别的某个远程地方。

远程调用原理

比如 A (client) 调用 B (server) 提供的remoteAdd方法:

首先A与B之间建立一个TCP连接;

然后A把需要调用的方法名(这里是remoteAdd)以及方法参数(10, 20)序列化成字节流发送出去;

B接受A发送过来的字节流,然后反序列化得到目标方法名,方法参数,接着执行相应的方法调用(可能是localAdd)并把结果30返回;

A接受远程调用结果,输出30。

RPC框架就是把我刚才说的这几点些细节给封装起来,给用户暴露简单友好的API使用。

远程调用的好处

解耦:当server需要对方法内实现修改时,client完全感知不到,不用做任何变更;这种方式在跨部门,跨公司合作的时候经常用到,并且方法的提供者我们通常称为:服务的暴露。

RPC与Socket有什么区别?

通过上面的简单阐述,好像RPC与Socket 好像啊。都是调用远程的方法,都是client/server模式,我之前也写了一篇文章: 细说socket 那他们有啥区别呢?

RPC(远程过程调用)采用客户机/服务器模式实现两个进程之间相互通信。socket是RPC经常采用的通信手段之一,RPC是在Socket的基础上实现的,它比socket需要更多的网络和系统资源。除了Socket,RPC还有其他的通信方法,比如:http、操作系统自带的管道等技术来实现对于远程程序的调用。微软的Windows系统中,RPC就是采用命名管道进行通信。

RPC与REST有什么区别?

通过了解RPC后,我们知道是RPC是client/server模式的,调用远程的方法,REST也是我们熟悉的一套API调用协议方法,它也是基于client/server模式的,调用远程的方法的,那他俩又有啥区别呢?

REST API 和 RPC 都是在 Server端 把一个个函数封装成接口暴露出去,以供 Client端 调用,不过 REST API 是基于HTTP协议的,REST致力于通过http协议中的POST/GET/PUT/DELETE等方法和一个可读性强的URL来提供一个http请求。而 RPC 则可以不基于 HTTP协议 

因此,如果是后端两种语言互相调用,用 RPC 可以获得更好的性能(省去了 HTTP 报头等一系列东西),应该也更容易配置。如果是前端通过 AJAX 调用后端,那么用 REST API 的形式比较好(因为无论如何也避不开 HTTP 这道坎)。

php中流行的rpc框架有哪些

既然php是世界上最好的语言,那php中流行的RPC框架有哪些呢?

先列举下: phprpc,yar, thrift, gRPC, swoole, hprose

因为时间和精力有限,不可能一个一个的去学习和使用,我选几个世面上用的最多的几个用下吧。因为RPC原理是一样的,都是Client/Server模式,只是每个框架的使用方式不一样而已。

关于phprpc通讯框架的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于phprpc通讯框架 php通信协议的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did211306
更新时间:2023-05-03   阅读:17次

上一篇: php商品属性教程 php类的属性和方法

下一篇:php怎么把字体放大 php怎么改字体

最新资料更新

  • 1.网页识别不了php文件 php网页无法显示
  • 2.网页php查看源代码 php怎么看源码
  • 3.phpping测速 测试php性能工具
  • 4.php怎么开发xml php处理xml数据
  • 5.杭州php前景如何 杭州php培训学校
  • 6.包含php7.0.10的词条
  • 7.php7性能tu Php性能
  • 8.php拼音模糊查询 php模糊搜索功能
  • 9.php网站后台demo php后端模板
  • 10.腾讯php招聘 招聘 腾讯
  • 11.php移动gps定位 functionsphp位置
  • 12.PHP中嵌入script php嵌入html有哪几种方法
  • 13.php汉字搜索 php 搜索字符串
  • 14.phppngjpeg的简单介绍
  • 15.php登录注册论文 php写注册登录
  • 16.php怎么操作树 php tree
  • 17.phphtml补全 html自动补全代码
  • 18.php页面加ico php嵌入网页
  • 19.php旋转图片保存 php转jpg
  • 20.php生成缓存图片 php缓存机制有哪些

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]