mina

PHP实现简单RPC

谁都会走 提交于 2020-03-26 10:11:18
3 月,跳不动了?>>> 1.什么是rpc RPC全称为Remote Procedure Call,翻译过来为“远程过程调用”。目前,主流的平台中都支持各种远程调用技术,以满足分布式系统架构中不同的系统之间的远程通信和相互调用。远程调用的应用场景极其广泛,实现的方式也各式各样。 2.从通信协议的层面 基于HTTP协议的(例如基于文本的SOAP(XML)、Rest(JSON),基于二进制Hessian(Binary)) 基于TCP协议的(通常会借助Mina、Netty等高性能网络框架) 3.从不同的开发语言和平台层面 单种语言或平台特定支持的通信技术(例如Java平台的RMI、.NET平台Remoting) 支持跨平台通信的技术(例如HTTP Rest、Thrift等) 4.从调用过程来看 同步通信调用(同步RPC) 异步通信调用(MQ、异步RPC) 5.常见的几种通信方式 远程数据共享(例如:共享远程文件,共享数据库等实现不同系统通信) 消息队列 RPC(远程过程调用) 6.php实现简单的rpc 目录结构 rpc服务端 <?php /** * User: yuzhao * CreateTime: 2018/11/15 下午11:46 * Description: Rpc服务端 */ class RpcServer { /** * User: yuzhao * CreateTime

Java?NIO框架Mina、Netty、Grizzly介绍与对比

a 夏天 提交于 2020-03-23 07:18:12
Mina: Mina(Multipurpose Infrastructure for Network Applications) 是 Apache组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 Mina 版本2.04支持基于 JavaNIO 技术的 TCP/UDP 应用程序开发、串口通讯程序,Mina 所支持的功能也在进一步的扩展中。目前,正在使用Mina的应用包括:Apache Directory Project、AsyncWeb、AMQP(Advanced MessageQueuing Protocol)、RED5 Server(Macromedia? FlashMedia RTMP)、ObjectRADIUS、 Openfire等等。 Netty: Netty是一款异步的事件驱动的网络应用框架和工具,用于快速开发可维护的高性能、高扩展性协议服务器和客户端。也就是说,Netty是一个NIO客户端/服务器框架,支持快速、简单地开发网络应用,如协议服务器和客户端。它极大简化了网络编程,如TCP和UDP套接字服务器。 Grizzly: Grizzly是一种应用程序框架,专门解决编写成千上万用户访问服务器时候产生的各种问题。使用JAVANIO作为基础,并隐藏其编程的复杂性。容易使用的高性能的API。带来非阻塞socketd到协议处理层

java ftpserver

▼魔方 西西 提交于 2020-03-21 20:14:44
3 月,跳不动了?>>> Welcome to Apache FtpServer Overview The Apache FtpServer is a 100% pure Java FTP server. It’s designed to be a complete and portable FTP server engine solution based on currently available open protocols. FtpServer can be run standalone as a Windows service or Unix/Linux daemon, or embedded into a Java application. We also provide support for integration within Spring applications and provide our releases as OSGi bundles. The default network support is based on Apache MINA , a high performance asynchronous IO library. Using MINA, FtpServer can scale to a large number of

Java NIO框架Mina、Netty、Grizzly介绍与对比

亡梦爱人 提交于 2020-03-16 17:27:44
Mina: Mina(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 Mina 版本2.04支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序,Mina 所支持的功能也在进一步的扩展中。目前,正在使用 Mina的应用包括:Apache Directory Project、AsyncWeb、AMQP(Advanced Message Queuing Protocol)、RED5 Server(Macromedia Flash Media RTMP)、ObjectRADIUS、 Openfire等等。 Netty: Netty是一款异步的事件驱动的网络应用框架和工具,用于快速开发可维护的高性能、高扩展性协议服务器和客户端。也就是说,Netty是一个NIO客户端/服务器框架,支持快速、简单地开发网络应用,如协议服务器和客户端。它极大简化了网络编程,如TCP和UDP套接字服务器。 Grizzly: Grizzly是一种应用程序框架,专门解决编写成千上万用户访问服务器时候产生的各种问题。使用JAVA NIO作为基础,并隐藏其编程的复杂性。容易使用的高性能的API

dubbo源码分析系列(4)dubbo通信设计

非 Y 不嫁゛ 提交于 2020-03-12 22:28:12
#1 系列目录 dubbo源码分析系列(1)扩展机制的实现 dubbo源码分析系列(2)服务的发布 dubbo源码分析系列(3)服务的引用 dubbo源码分析系列(4)dubbo通信设计 #2 NIO通信层的抽象 目前dubbo已经集成的有netty、mina、grizzly。先来通过案例简单了解下netty、mina编程(grizzly没有了解过) ##2.1 netty和mina的简单案例 netty原本是jboss开发的,后来单独出来了,所以会有两种版本就是org.jboss.netty和io.netty两种包类型的,而dubbo内置的是前者。目前还不是很熟悉,可能稍有差别,但是整体大概都是一样的。 我们先来看下io.netty的案例: public static void main(String[] args){ EventLoopGroup bossGroup=new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap serverBootstrap=new ServerBootstrap(); serverBootstrap.group(bossGroup,workerGroup) .channel

【进展】NetVinace项目的C/S架构通讯基础确定

烂漫一生 提交于 2020-03-09 21:35:09
今天用 MINA Server开发,实现了对象传输,定义了网络传输对象结构(命令字结构)作为NetVinace项目的C/S架构通讯基础。下一步会着重开发 NetVinace 的 C/S模式下的协议部分。这可是最精彩的哦。。哈哈。关于MINA SERVER对象传输,关键在于过滤器选用。MINA 已经为我们封装好一切,我们只管调用就好。详细可以看看代码分享的链接,有不明白的,可以在评论中发问。 代码分享: http://www.oschina.net/code/snippet_225293_21827 来源: oschina 链接: https://my.oschina.net/u/225293/blog/135169

关于mina的setSendBufferSize体验

此生再无相见时 提交于 2020-03-09 21:01:09
先说说事件回放 某天客户端要求说tcp包要小点,这样他开的buffer就小点 那我就找到acceptor.getSessionConfig().setSendBufferSize(int);这个方法设置发送byte buffer的大小,但我把他设置成1,让他每个包都即时发送 mina的setSendBufferSize方法是一个接口,他会调用java.net.Socket.setSendBufferSize文件 jdk的描述是这样的 将此 Socket 的 SO_SNDBUF 选项设置为指定的值。平台的网络连接代码将 SO_SNDBUF 选项用作设置底层网络 I/O 缓存的大小的提示。 由于 SO_SNDBUF 是一种提示,想要验证缓冲区设置大小的应用程序应该调用 getSendBufferSize() 。 意思就是发送buffer吧 用工具在客户端捉包的结果显示最大包 还是1460,但tcp包id的数量不同了 举个例子: SendBufferSize为1024时(15:55:45.225中的225就是包id号)捉取的数据包如下 时间(.包id) 包长 数据长度 具体数据 15:55:45.225 63 9 xxxxxxxx(具体数据) 15:55:45.225 63 19 xxxxxxxx(具体数据) 15:55:45.225 63 39 xxxxxxxx(具体数据) 15:55

Nio 中的方法

陌路散爱 提交于 2020-03-02 22:24:15
原文 MINA nio 基本用法 ​​​​​​​java.nio.file.Files; ​​​​​​​ ​​​​​​​createDirectory - 创建目录 示例 public void init() { try { Path rootLocation = Paths.get("/tmp"); Files.createDirectory(rootLocation); } catch (IOException e) { throw new StorageException("Could not initialize storage", e); } } copy - 复制文件到指定路径 示例 public void store(MultipartFile file) { try { if (file.isEmpty()) { throw new StorageException("Failed to store empty file " + file.getOriginalFilename()); } Files.copy(file.getInputStream(), this.rootLocation.resolve(file.getOriginalFilename())); } catch (IOException e) { throw new

通信(Netty、Mina2)【通信粘包的处理】、【数据协议】、【网络系统的安全性】

假装没事ソ 提交于 2020-02-29 08:05:17
Netty、Mina2是非常优秀的javaNIO+ThreadPool线程池通信框架 http://www.cnblogs.com/51cto/archive/2010/09/06/1819361.html 提到通信就得面临两个问题,一是通信协议的选择,二是数据协议的定义。通信协议耳熟能详的就有好几种,TCP,UDP,HTTP,FTP等等。数据协议是一种数据交换的格式,像jason,xml,amf3,google protocol都可以用作数据协议,你也可以自己根据通信的效率,安全等因素来定义自己的数据协议。   通信系统的开发是一项很复杂的工作,不要以为往发服务端发一个Hello World!就认为完全掌握了通信系统的开发。概括来说要开发一个健壮的通信系统,必须从这几个方面来着手。   一,通信粘包的处理   这里包的概念是逻辑上的数据包,也就是我们发送的一个完整业务消息包,粘包情况有两种,一种是粘在一起的包都是完整的数据包,另一种情况是粘在一起的包有不完整的包。不是所有的粘包现象都需要处理,若传输的数据为不带结构的连续流数据(如文件传输),则不必把粘连的包分开(简称分包)。但在实际工程应用中,传输的数据一般为带结构的数据,这时就需要做分包处理。   为了避免粘包现象,可采取以下几种措施。一是对于发送方引起的粘包现象,用户可通过编程设置来避免