RPC和Socket的区别

rpc是通过什么实现啊?socket

RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,出于一种类比的愿望,在一台机器上运行的主程序,可以调用另一台机器上准备好的子程序,就像LPC(本地过程调用).

    越底层,代码越复杂、灵活性越高、效率越高;越上层,抽象封装的越好、代码越简单、效率越差。Socket和RPC的区别再次说明了这点。

    

深入浅出 RPC – 浅出篇

本文来自本人独立博客,为获得更佳阅读体验,请点击 这里

----------------------------------------------------------------------------------------------------

 

近几年的项目中,服务化和微服务化渐渐成为中大型分布式系统架构的主流方式,而 RPC 在其中扮演着关键的作用。在平时的日常开发中我们都在隐式或显式的使用 RPC,一些刚入行的程序员会感觉 RPC 比较神秘,而一些有多年使用 RPC 经验的程序员虽然使用经验丰富,但有些对其原理也不甚了了。缺乏对原理层面的理解,往往也会造成开发中的一些误用。…

epoll的基本概念和C10K问题

epoll:Edge and Level Trigger Polling (epoll)

边缘触发(edge trigger)和条件触发(level trigger)

边缘触发是指每当状态变化时发生一个io事件,条件触发是只要满足条件就发
生一个io事件。举个读socket的例子,假定经过长时间的沉默后,现在来了100个字
节,这时无论边缘触发和条件触发都会产生一个read ready notification通知应用程 …

再谈select, iocp, epoll,kqueue及各种I/O复用机制

上篇文章太过幼稚,一派胡言,希望没有误导大家。。我也是菜鸟,学习本身就是一个不断追求真理的过程,希望能谅解:)首先感谢kasicass GG指出错误(已经指导我很多次了,非常感谢~~),然后我又查阅了一些资料,再次整理,more seriously and detailedly~

首先,介绍几种常见的I/O模型及其区别,如下:…

简单理解Socket

题外话

前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公司使用的一些控件的开发,浏览器兼容性搞死人;但主要是因为这段时间一直在看html5的东西,看到web socket时觉得很有意思,动手写几个demo,但web socket需要特定的服务器支持,由于标准制定工作还没完成,所以没有多少主流的服务器支持,自己在网上下载了几个实现,包括php的、C#的、甚至Node.js的,但一个是协议变化比较大,很多代码已经过时了,再就是有一些支持最新的标准,但是我想稍微改造一下,看人家源代码的时候云里雾里,看看别人的代码行数也不多,决定自己实现一个。

悲剧由此开始,虽然哥们儿国内非知名工科大学毕业,但好歹也是科班CS出身,但大学得过且过,什么TCP/IP协议,什么socket了都没概念。为了做出一个简单的支持广播的websocket server,在网上找了很多相关代码,左抄一句,右抄一句,弄了一个星期竟然还是漏洞百出,调试不起来,只好从头来过了,先补一些基本知识,然后再一步步根据原理实现,今天终于实现了绝大部分功能,由此真的感受到了,搞计算机必须得有理论指导实践,否则只能像个没头苍蝇到处乱撞。…

Linux Socket编程(不限Linux)

“一切皆Socket!”

话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。

——有感于实际编程和开源项目研究。

我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:…

主程的晋升攻略(4):TCP、消息分包和协议设计

在《主程的晋升攻略(3):IP、DNS和CDN》中,一次网络请求经过DNS解析知道了目的IP,现在就要发出网络包,这里我们说一说TCP的相关话题。

TCP是一种流式协议

讲网络编程的教科书一般都会对TCP的可靠传输,api用法做详细说明,但对于TCP是一种流式协议讲解的不多,但这背后隐藏着很重要的一个知识点。先做个名词定义方便交流,这里的“消息”是指应用层的一个完整的协议包。

流式协议的特点是什么?就像流水连续不断那样,消息之间没有边界。例如send了3条消息,分别是100字节、50字节、80字节,recv时可能收到的是230字节,就是说一次recv收到了3条消息,需要应用逻辑自己对recv到的数据进行分析,得出完整的消息。能一次recv到多个消息,也可能一次recv到一个半消息或半个消息,都是有可能的,这就是流式协议的特点。有的文章讲的粘包也是这个概念。…

    

定时任务,队列

1.出队,入队。
2异步tast,
3.消息队列。
4.Job | 任务 : 一个Job就是一个需要在后台完成的任务,比如本文举例的发送邮件,就可以抽象为一个Job。在Resque中一个Job就是一个Class。
Queue | 队列 : 也就是上文的消息队列,在Resque中,队列则是由Redis实现的。Resque还提供了一个简单的队列管理器,可以实现将Job插入/取出队列等功能。
Worker | 执行者 : 负责从队列中取出Job并执行,可以以守护进程的方式运行在后台。…