RPC为什么要在系统级

高级SRE工程师1267 | 加入我们 | 美团网无锡站
高级SRE工程师1267 北京
为了支撑海量用户快速、稳定地使用美团网服务,我们需要这样一群人,他们有扎实的大规模服务器集群运维功底,丰富的业务故障定位和处理经验,强烈的架构优化意愿,以及快速的学习能力。他们能让开发工程师在代码完成后安心喝咖啡,他们能让不同语言实现的分布式复杂系统完美运行,他们能让用户的访问速度体验提升到极致,他们能将运维成本控制在最佳水平。
工作职责深入理解业务架构和业务流程,分析业务架构风险点并改进,快速定位故障原因,保障业务高可用。
深入分析业务的性能瓶颈,通过容量规划、性能优化等手段提升系统整体性能。
总结、沉淀SRE服务框架及运维最佳实践,在不同的产品线共享经验。
职位要求良好的客户服务意识,强烈的责任心和使命感,执行力强,富有团队合作精神。
拥有Java业务开发经验者优先,对所负责业务的架构理解清晰,包括故障风险点、性能瓶颈点等,深入理解Java虚拟机。
熟悉网络通信机制及常用数据传输协议。
熟悉Linux操作系统故障分析和调优。
熟悉常用开源软件(如nginx,zk,redis,memcache,mq等)的使用和调优,熟悉监控、部署流程。
工作地点:北京
招聘人数:2 人
请将简历发送至:hr.,邮件标题为:"应聘高级SRE工程师1267-姓名"并随信附上:
你应聘美团网的理由;
你常上的3~5个网站(如方便请注明在所活跃的社区里的ID)、常用的开发工具;
你阅读过并推荐的3~5本技术类书籍;
你的技术博客和Github页面。
期待你的加入!PHP企业级应用之WebService续篇 - 网络编程 - 蓝色理想
您的位置:  &
& PHP企业级应用之WebService续篇
 PHP企业级应用之WebService续篇
作者: 时间:  文档类型:原创 来自:
Ping Service,博客程序提供一种通知机制,以便在第一时间将博客的更新信息发布到提供Ping Service服务的网站,写聚合的时候研究了一下
这是一个标准的Ping Service,用XMLRPC来传数据的,注释写的这么详细,代码说明就不需要了吧,PHP5开启XMLRPC方法
client.php
&?php$host& = 'zxsv';$port& = 80;$rpc_server = '/test/xmlrpc_server.php';$title = 'zxsv';$server = 'http://zxsv/test/';$rss = 'http://zxsv/test/rss.php';//weblogUpdates.Ping方法$Ping = xmlrpc_encode_request('weblogUpdates.Ping', array($title, $server ));//weblogUpdates.extendedPing方法$extendedPing = xmlrpc_encode_request('weblogUpdates.extendedPing', array($title, $server, $rss ));//调用rpc_client_call函数把所有请求发送给XML-RPC服务器端后获取信息$response = rpc_client_call($host, $port, $rpc_server, $Ping);$split = '&?xml version="1.0" encoding="iso-8859-1"?&';$xml =& explode($split, $response);$xml = $split . array_pop($xml);$response = xmlrpc_decode($xml);//输出从RPC服务器端获取的信息print_r($response);/*** 函数:提供给客户端进行连接XML-RPC服务器端的函数* 参数:* $host& 需要连接的主机* $port& 连接主机的端口* $rpc_server XML-RPC服务器端文件* $request& 封装的XML请求信息* 返回:连接成功成功返回由服务器端返回的XML信息,失败返回false*/function rpc_client_call($host, $port, $rpc_server, $request) {&& $fp = fsockopen($host, $port);&& $query = "POST $rpc_server HTTP/1.0\nUser_Agent: XML-RPC Client\nHost: ".$host."\nContent-Type: text/xml\nContent-Length: ".strlen($request)."\n\n".$request."\n";&& if (!fputs($fp, $query, strlen($query))) {&&&&&& $errstr = "Write error";&&&&&&&& }&& $contents = '';&& while (!feof($fp)){&&&&&& $contents .= fgets($fp);&& }&& fclose($fp);&& return $}?&
server.php
&?php/*** 函数:提供给RPC客户端调用的函数* 参数:* $method 客户端需要调用的函数* $params 客户端需要调用的函数的参数数组* 返回:返回指定调用结果*/function rpc_server_extendedping($method, $params) {&&& $title = $params[0];&&& $server = $params[1];&&& $rss = $params[2];&&&&&&& //中间的判断,成功返回$XML_RPC_String &&& $XML_RPC_String = array('flerror'=&false,'message'=&'Thanks for the ping.');& return $XML_RPC_S}function rpc_server_ping($method, $params) {&&& $title = $params[0];&&& $server = $params[1];&&&&&&& //中间的判断,成功返回$XML_RPC_String &&& $XML_RPC_String = array('flerror'=&false,'message'=&'Thanks for the ping.');& return $XML_RPC_S}//产生一个XML-RPC的服务器端$xmlrpc_server = xmlrpc_server_create();//注册一个服务器端调用的方法rpc_server,实际指向的是rpc_server_extendedping函数xmlrpc_server_register_method($xmlrpc_server, "weblogUpdates.extendedPing", "rpc_server_extendedping");xmlrpc_server_register_method($xmlrpc_server, "weblogUpdates.Ping", "rpc_server_ping");//接受客户端POST过来的XML数据$request = $HTTP_RAW_POST_DATA;//print_r($request);//执行调用客户端的XML请求后获取执行结果$xmlrpc_response = xmlrpc_server_call_method($xmlrpc_server, $request, null);//把函数处理后的结果XML进行输出header('Content-Type: text/xml');echo $xmlrpc_//销毁XML-RPC服务器端资源xmlrpc_server_destroy($xmlrpc_server); ?&
类写的,有BUG
&?phpclass Pings {&&& public $xmlrpc_&&& public $xmlrpc_&&& public $methodN&&& &&& public function __construct() {&&&&&&& //产生一个XML-RPC的服务器端&&&&&&& $this-&xmlrpc_server = xmlrpc_server_create ();&&&&&&& $this-&run ();&&& }&&& &&& //注册一个服务器端调用的方法rpc_server,实际指向的是ping函数&&& public function rpc_server() {&&&&&&& &&&&&&& $this-&methodName = !$this-&methodName ? 'weblogUpdates.extendedPing':'weblogUpdates.Ping';&&&&&&& &&&&&&& xmlrpc_server_register_method ( $this-&xmlrpc_server, $this-&methodName, array (__CLASS__, "ping"));&&&&&&& &&& }&&&&&&& /**&&&& * 函数:提供给RPC客户端调用的函数&&&& * 参数:&&&& * $method 客户端需要调用的函数&&&& * $params 客户端需要调用的函数的参数数组&&&& * 返回:返回指定调用结果&&&& */&&& &&& public function ping($method, $params) {&&&&&&& $this-&title = $params [0];&&&&&&& $this-&server = $params [1];&&&&&&& $this-&rss = $params [2];&&&&&&& $this-&tag = $params [3];&&&&&&& //$a& = $this-&title ? $this-&update():'';&&&&&&& $string = array ('flerror' =& false, 'message' =& 'Thanks for the ping.', 'legal' =& "You agree that use of the blueidea.com ping service is governed by the Terms of Use found at ." );&&&&&&& return $&&& }&&& &&& public function update(){&&&&&&& echo '这里放更新的一些条件';&&& }&&&&&&& &&& public function run() {&&& &&&&&&& $this-&rpc_server ();&&& &&&&&&& $request = isset ( $GLOBALS ["HTTP_RAW_POST_DATA"] ) ? file_get_contents ( "php://input" ) : $GLOBALS ["HTTP_RAW_POST_DATA"];&&&&&&& &&&&&&& $this-&xmlrpc_response = xmlrpc_server_call_method ( $this-&xmlrpc_server, $request, null );&&&&&&& //把函数处理后的结果XML进行输出&&&&&&& header ( 'Content-Type: text/xml' );&&&&&&& echo $this-&xmlrpc_&&& }&&& &&& //销毁XML-RPC服务器端资源&&& public function __destruct() {&&&&&&& xmlrpc_server_destroy ( $this-&xmlrpc_server );&&& }}$Obj = new Pings ( );?&
WebService的最常用的两种方法算是写齐了
经典论坛交流:
本文链接: 
责任编辑:
◎进入论坛版块参加讨论
蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。
转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。
特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们,我们将立即删除修改。
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用,以利文档及时修改。
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:?不良评论请用,以利管理员及时删除。?尊重网上道德,遵守中华人民共和国的各项有关法律法规?承担一切因您的行为而直接或间接导致的民事或刑事法律责任?本站评论管理人员有权保留或删除其管辖评论中的任意内容
?您在本站发表的作品,本站有权在网站内转载或引用 ?参与本评论即表明您已经阅读并接受上述条款
专业书推荐
& Blueidea.com. 版权所有百度题库旨在为考生提供高效的智能备考服务,全面覆盖中小学财会类、建筑工程、职业资格、医卫类、计算机类等领域。拥有优质丰富的学习资料和备考全阶段的高效服务,助您不断前行!
京ICP证号&&
京网文[3号&&
Copyright (C) 2017 Baidu

我要回帖

 

随机推荐