发表于: 2017-11-25 23:10:27
1 698
今天完成的事情:
1. 准备小课堂
2. 尝试解决服务器上不能连通的问题
明天计划的事情
1. 提交任务9
遇到的问题:
无
收获:
1. 心血来潮看了下rmi 和 dubbo的区别,dubbo基于RPC
为RPC和rmi的区别
1)方法是如何被调用的
对RMI来说,如果一个方法在服务器上执行,但是没有相匹配被添加到这个远程接口上,那么这个新方法就不能被RMI客户方所调用。
而在RPC中,当一个请求到达RPC服务器时,请求包含一个参数集和一个文本值,通常为“classname.methodname”形式。
这表明,请求的方法在“classname”类中,名叫“methodname”。
然后,RPC服务器就去搜索与之相匹配的类和方法,并把它作为那种方法参数类型的输入。
这里的参数类型是与RPC请求中的类型匹配的。 一旦匹配成功,方法就被调用了,其结果被编码后返回客户方。
2)对传递信息的限制
RMI 调用远程对象方法,允许方法返回 Java 对象以及基本数据类型。
而RPC不允许传递对象,RPC服务的消息由外部数据表示语言来表示。
3)采用的协议不同
RPC不支持对象,采用http协议。RMI支持传输对象,采用TCP/IP协议
4)RIM只限于Java语言,而RPC跨语言
2.
1、dubbo协议
Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。
缺省协议,使用基于mina1.1.7+hessian3.2.1的tbremoting交互。
连接个数:单连接
连接方式:长连接
传输协议:TCP
传输方式:NIO异步传输
序列化:Hessian二进制序列化
适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串。
适用场景:常规远程服务方法调用
2、RMI
RMI协议采用JDK标准的java.rmi.*实现,采用阻塞式短连接和JDK标准序列化方式
Java标准的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:TCP
传输方式:同步传输
序列化:Java标准二进制序列化
适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件。
适用场景:常规远程服务方法调用,与原生RMI服务互操作
参考:
https://www.cnblogs.com/yangzhilong/p/6121551.html
进度:
任务开始时间:11.18
预计完成时间:11.21
第一次延期到:11.23
第二次延期到:11.24
第二次延期到:11.26
最后一次延期了
禅道:http://task.ptteng.com/zentao/project-task-264.htm
评论