Rpc远程调用框架的设计与实现(2)
接上:
2. 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
1.对象是一个无序的“‘名称/值’对”集合。一个对象以“{”开始,以“}”结束。每个“名称”后跟一个“:”,“‘名称/值’对”之间使用“,”分隔。
2.数组是值(value)的有序集合。一个数组以“[”开始,“]”结束。值之间使用“,”分隔。
3.值(value)可以是双引号括起来的字符串(String)、数值(number)、true、false、null、对象(object)或者数组(array)。这些结构可以嵌套。
4.字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜体转义。一个字符(character)即一个单独的字符串(characeter string)。
不同的语言对数据有着不同的描述与结构,如何在它们之间建立联系是实现Rpc的关键步骤之一。
3.2.2 利用Json建立JavaScript与Java数据类型的映射关系
在3.1里提到的Json的诸多优势和特性,使其非常适合作为两种编程语言的桥梁。下面是Java与JavaScript之间的数据类型映射表:
序号 |
Java |
JavaScript |
1 |
Integer |
数值,字符串,布尔 |
2 |
Double |
数值,字符串,布尔 |
3 |
Float |
数值,字符串,布尔 |
4 |
Boolean |
字符串,布尔 |
5 |
Date |
字符串 |
6 |
String |
字符串,Date |
7 |
Array, List,Set |
数组 |
8 |
JavaBean Obj,Map |
对象 |
表3-1 Java/JavaScript数据类型映射表
3.3 数据类型转换器
Rpc请求需要客户端->服务端->客户端的数据传递流程,数据转换大致需要进行以下几个步骤:
(1) 将JavaScript方法参数转化为Json字符串传递到服务端(客户端转化)
(2) 服务端解析Json串,并根据服务端方法参数类型将Json串所包含的数据转化为相应的类型(服务端转化)
(3) 执行方法,获取返回值,将返回值转化为Json串(服务端转化)
(4) 客户端接收Json串,并将其转化为Json格式的数据,供客户端访问。(客户端转化)
简单类型数据统一转化为字符串,比如数值,布尔转化为字符串都是非常容易的。
一个可用性高的框架在性能方面一定要有所考虑。要找出整个使用流程中的性能瓶颈,并有针对性的进行优化。
(1)优化数据转换算法,比如尽量在一次遍历中将所有事情做完,减少循环次数。循环长度一次性获取,不要每次都计算。尽量使用Api中的方法,很多Api是针对Jvm调优过的,性能比自己实现要好。
(2)对动态生成的脚本做缓存,这样可以避免每一次访问都重新生成脚本。
(3)Ajax同步时如遇网络阻塞可能会导致调用无法响应,提供设置异步回调方法的接口,在很多时候可以使用异步Ajax,避免了界面无响应。
Rpc远程调用框架的设计与实现(2)相关推荐
- Rpc远程调用框架的设计与实现(1)
Rpc远程调用框架的设计与实现 1 Rpc远程调用框架设计概述 1.1 研究背景 1.1.1传统的Web开发方式 在传统的Web应用程序中,一般都是采取请求→刷新→显示的模式.即每当用户通过单击 ...
- zookeeper 密码_「附源码」Dubbo+Zookeeper 的 RPC 远程调用框架
技术博文,及时送达 作者 | 码农云帆哥 链接 | blog.csdn.net/sinat_27933301 上一篇:从零搭建创业公司后台技术栈 这是一个基于Dubbo+Zookeeper 的 RPC ...
- RPC远程调用框架rsf和dubbo
1.rsf(Remote service framework)框架整体的架构 思考点: 1.注册中心使用的zookeeper,多机房部署,各注册中心要求数据一致,如何在一个节点发生异常情况下,不影响其 ...
- RCF--RPC(远程调用框架)
RPC(远程调用框架) 一. RPC定义 RPC(Remote Procedure Call Protocol)--远程过程调用协议,是一种通过网络从远程计算机请求服务,就像调用本地方法一样,不需要了 ...
- 徒手撸框架--实现 RPC 远程调用
微服务,已经是每个互联网开发者必须掌握的一项技术.而 RPC 框架,是构成微服务最重要的组成部分之一.趁最近有时间.又看了看 dubbo 的源码.dubbo 为了做到灵活和解耦,使用了大量的设计模式和 ...
- 从 0 到 1:全面理解 RPC 远程调用!
作者 | Python编程时光 责编 | 胡巍巍 什么是RPC呢?百度百科给出的解释是这样的:"RPC(Remote Procedure Call Protocol)--远程过程调用协议,它 ...
- python rpc调用_从0到1:全面理解 RPC 远程调用
上一篇关于 WSGI 的硬核长文,不知道有多少同学,能够从头看到尾的,不管你们有没有看得很过瘾,反正我是写得很爽,总有一种将一样知识吃透了的错觉. 今天我又给自己挖坑了,打算将 rpc 远程调用的知识 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(上篇)
一.序言 Hadoop是一个技术生态圈,zookeeper是hadoop生态圈里一个非常重要的技术,当我研究学习hadoop的相关技术时候,有两块知识曾经让我十分的困惑,一个是hbase,一个就是zo ...
- 远程过程调用失败_Java开发大型互联网RPC远程调用服务实现之问题处理方案
引言 RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些传输协议 ...
最新文章
- python利用列表计算斐波那契数列前30项_python斐波那契数列的计算方法
- 桌面Linux市场份额终于突破1%
- Visio studio 2015企业版,汉语版下载,安装,破解,搞定了
- C语言判断两个数组是否有相同元素
- 白光LED驱动方案的选择 TPS61043
- Oracle SQL存储过程结构、异常处理示例
- Hybrid App开发设计与实现
- python有什么用-我们为什么要选择学习python?学习python有什么用?
- wget下载命令使用说明
- 网站robots协议介绍及文件写法举例
- 教你win7关闭开机动画,大幅度加快开机时间
- 自制Json解析工具(易语言)
- python全栈开发工程师_老男孩Python高级全栈开发工程师三期完整无加密带课件(共104天)...
- 模拟京东快递单号查询框
- Line 第三方登录 后台
- python贪吃蛇游戏手把手教学 第一课
- 理解Windows操作系统的KMS与MAK密钥
- 转载:F28335 Ecap使用总结
- 叉乘点乘混合运算公式_运算定律和简便计算的说课稿
- 软件公司如何才能接到项目
热门文章
- 什么是张量(tensor)
- Coursera机器学习编程作业Python实现(Andrew Ng)—— 2.1 Logistic Regression
- ADF12C+GLASSFISH4.1配置数据源
- [转]计算机语言的种类总结
- 点击调试时提示MFC不包含调试信息
- HDU 2639(01背包求第K大值)
- HDU_oj_2046 骨牌铺方格
- SaltStack 模块学习之拷贝master服务器上文件和目录到minion服务器
- OpenSessionInViewFilter 的配置及作用
- php随笔11-Thinkphp常用系统配置大全