• netty


    1.Netty只是网络通信框架,把Java Socket的API又封装了一次,使得你可以用最少的代码来完成网络通信这一任务。

    我们可以推断演进一下
    ====
    1. A B 两个进程之间需要进行数据交换。
    2.于是我们想出来在某个内存区域划出一个空间,然后向该空间中写入和读取数据。(共享文件也可以)(常见的socket就是这一共享内存的抽象,只是现在大多指网络通路)
    3.A B 通信完成。
    ====
    4.A B需要完成更复杂的交互
    5.于是我们指定一个协议,A B 根据该协议对数据的进行编码解码,根据协议内容做出决策。
    ====
    6.发现协议过于复杂(比如 编号1代表调用 a函数,编号2代表b函数)
    7.试图优化协议,将函数参数和调用的函数名称作为协议的一部分,函数返回值类似
    8.RPC达成
    =====

    1. Netty只是网络通信框架,目的是让你用最少的代码构建出足够支撑网络通信的功能。

    2.完成RPC 需要两个协议: 对象序列化协议 和 调用控制协议

    常见例子举例:

    1.zeroC ICE,拥有自己的网络通信框架 + ICE 调用控制协议和对象序列化协议,同时也涵盖了服务组件的抽象部署等功能。

    2.thrift,有自己的网络通信框架+thrift 对象序列化协议+thrift 调用控制协议

    3.probuff,只是 对象序列化协议

    4.XMLRPC ,jsonRPC,常见的语境是利用HTTP协议作为调用控制协议,XML 和 JSON 作为对象序列化之后的格式。

    5.其他的大概也差不多了。


    作者:肖继潮
    链接:https://www.zhihu.com/question/25536695/answer/31046384
    来源:知乎
    著作权归作者所有,转载请联系作者获得授权。

    早期单机时代,一台电脑上运行多个进程,大家各干各的,老死不相往来。假如A进程需要一个画图的功能,B进程也需要一个画图的功能,程序员就必须为两个进程都写一个画图的功能。这不是整人么?于是就出现了IPC(Inter-process communication,单机中运行的进程之间的相互通信)。OK,现在A既然有了画图的功能,B就调用A进程上的画图功能好了,程序员终于可以偷下懒了。


    到了网络时代,大家的电脑都连起来了。以前程序只能调用自己电脑上的进程,能不能调用其他机器上的进程呢?于是就程序员就把IPC扩展到网络上,这就是RPC(远程过程调用)了。现在不仅单机上的进程可以相互通信,多机器中的进程也可以相互通信了。

    要知道实现RPC很麻烦呀,什么多线程、什么Socket、什么I/O,都是让咱们普通程序员很头疼的事情。于是就有牛人开发出RPC框架(比如,CORBA、RMI、Web Services、RESTful Web Services等等)。

    OK,现在可以定义RPC框架的概念了。简单点讲,RPC框架就是可以让程序员来调用远程进程上的代码一套工具。有了RPC框架,咱程序员就轻松很多了,终于可以逃离多线程、Socket、I/O的苦海了。

    至于最近Java中流行的Netty,没玩过。但是大致了解过,Netty、Mina是游戏行业做服务器开发的Java程序员用的比较多的PRC框架(我们学生主要是Java方向的,有不少人毕业后从事游戏开发)。据说互联网公司用的也比较多。这两行业都有高并发量的、长连接、分布式、异步通讯、大数据量等特点。Netty这种RPC框架封装和优化了Java NIO和异步网络编程的一些繁琐的细节,一方面可以让开发者专注于业务逻辑的实现,一方面只需要调用Netty封装的API就可以很快编写出高性能的服务器。
  • 相关阅读:
    require笔札
    zepto_core
    2016年规划
    说说Q.js中的promise的历史
    jQuery.extend
    jQuery.core_02
    javascript之this指针
    javascript之闭包
    javascript之作用域链
    jvavascript之变量对象
  • 原文地址:https://www.cnblogs.com/panxuejun/p/5993390.html
Copyright © 2020-2023  润新知