RPC
RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用服务器上应用提供的函数/方法,由于不在一个内存空间不能直接调用,需要通过 网络来表达调用的语句和传达调用的数据
咱们先来看一下本地的函数调用流程
int Multiply(int l, int r) {
2 int y = l * r;
3 return y;
4 }
5
6 int lvalue = 10;
7 int rvalue = 20;
8 int l_times_r = Multiply(lvalue, rvalue);
代码执行到第8行的时候,已经执行了以下操作
1.将两个参数压入栈(内存栈)
2.进去函数内部,取出栈内的变量
3.执行函数操作,
4.将最终结果压入栈,从函数返回
5.从栈内取出返回值
这就是大概的流程,只是原理,真实可能比这个快,或者什么的,
远程调用的话
1.Call ID 映射,如果本机,编译器会自动帮我们调用函数对应的函数指针,但是远程调用就不行了,地址空间不同,所以需要有一个自己的函数ID,来确定整个函数,确定一个函数ID对应表(远程表ID要相同),当需要调用时查一下远程的函数ID,远程也通过需要调用的函数,执行方法,
2.序列化,反序列化,本机变量名是放在栈内的,函数自己寻找,远程调用需要将参数值发送到远程,需要将数据参数转化成一个字节流,传到远程,远程再转换成为自己能够读取的格式,等到远程返回的时候 也需要这样做,
3.网络协议,远程调用往往用在网络上,双方需要通过网络传输,使用TCP协议或者UDP。都行
名词解释
响应时间(RT)
是指系统对请求做出响应的时间,直观上看,这个指标是人对软件性能的主管感受是非常一致的,因为它完整的记录了整个计算机系统处理请求的时间,人们往往判断功能的平时时间,或者最大响应时间
不过整个响应时间的高低,还是看用户的接受程度,比如游戏响应时间需要几百毫秒,23秒就不行,但是对于编译系统,一个比较大的系统可能需要几十分钟
吞吐率
指的是系统再单位时间内处理请求的数量
并发用户数
系统可以同时承载的正常使用系统功能的用户的数量
QPS每秒查询率
是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,再因特网上,作为域名系统服务器的机器的性能,经常用每秒查询率来衡量,也即最大吞吐能力
ip与https
不能够https+IP访问,因为https申请的证书是跟域名绑定的,用ip会校验失败,无法访问服务
php使用对象
$data= new stdclass();
$data->list['1'] = 'one';
LInux进程
接口json
出接口的时候,入参如果是from-data 就是数组传过来,用$_post 接收,如果用json的类型入参需要用
file_get_contents(‘php://input’); 来获取参数,json_decode($data,true); 转换一下就可以使用了
curl
通过浏览器调取接口,如果需要验证生成sessio 的话,浏览器会存储一个sessionid,存储在浏览器的cookie中,每次调取接口,都会默认带上,这样两次请求,服务器就会认为是一个用户,验证session,通过
通过curl调取接口,session验证,每次都不同,都是一个新的请求用户,需要在curl中传递sessionid,来表明身份,来验证session,加参数
curl_setopt($curl, CURLOPT_COOKIE, “zentaosid=l1oefnbjosm4jh4967hgq4eqj2”);
需要传递json 的数据的话,curl需要在请求头中表明数据类型,这样写才行,单独赋值的不行好像
$headers=array(
"API-RemoteIP: " . $_SERVER['REMOTE_ADDR'],
"Content-Type: application/json"
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$argv-命令行参数
命令行执行文件时,后面跟着参数,可以直接空格输入,空格是数组,可以保存在 $argv 变量中,直接使用就行
php函数
//字符串参数,转为数组
parse_str("name=Bill&age=60");
echo $name."<br>";
echo $age;