Mina分享

  


  1. Apache Mina是什么?

    Apache MINA is a network application framework which helps users develop high performance and high scalability network applications 

    Apache Mina是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。


  2. 我们公司使用Apache Mina 做什么?

    在结算系统、交易系统作为核心网络基础组件。(快的打车,游戏,物联网,金融领域)                                                                                                                                                        

  3. Mina 作者简介 、项目简介

                       

3.1 Mina作者背景

             Trustin Lee  工作经验:韩国延世大学2003年计算机本科毕业。2004年发布netty2.1.0版本,同年,加入apache,期间主要负责mina工作。 之后,redhatappletwitter 工作,期间负责项目为netty.  现在韩国line公司工作,主要工作armeria .                    

             3.2   项目简单介绍  mina netty armeria
          
       开源项目1:    apache  mina  :     http://mina.apache.org/
         


开源项目2:Netty: http://netty.io/

Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients.






开源项目3:Armeria: http://line.github.io/armeria

Armeria is an open-source asynchronous RPC/API client/server library built on top of Java 8Netty 4.1HTTP/2, and Thrift

类似:Dubbo(阿里)   Motan(新浪)   finagle(Twitter)  thrift(facebook )  Grpc(google)


4、操作系统网络模型以及Java网络编程历史发展


4.1操作系统网络模型简单介绍

Unix网络编程》总结了网络编程的5中模型。




4.2 Java 编程世界中网络编程发展(JDK中提供bionioaio的发展)


4.2-1   BIO 阶段

    CC++编程阶段占据服务器端巨大部分市场。因为可以充分利用操行系统提供的IO功能

4.2-2   NIO 阶段

2002226日,J2SE1.4发布Java平台提供NIO功能。

使用select  epoll等操作系统api .

 

4.2-3   AIO 阶段

2011-07-28  Java SE 7.0发布,Java平台提供AIO功能。

使用windows  IOCP完全端口系统api  linux使用AIO系统api



5Mina架构与源代码剖析(重点)

5-1 SEDA架构

 

SEDA(Staged Event-Driven Architecture)的核心思想是把一个请求处理过程分成几个Stage,不同资源消耗的Stage使用不同数量的线程来处理,Stage间使用事件驱动、队列连接。





5-2  SEDA架构优点:





5-3  Apache  Mina  、Netty 对SEDA 架构理论实践




5-4  Apache  Mina  :   Acceptor 线程、IoProcessor 线程



   1bind事件,registerQueue(ConcurrentLinkedQueue)队列,Acceptor单线程,建立本地监听。

 

 

   2accept事件,newSessions(ConcurrentLinkedQueue) 列队,IoProcessor线程池,创建IoSession,执行readwriteclose事件。

      默认线程池数量:Runtime.getRuntime().availableProcessors() + 1;

      平摊原则: pool[Math.abs((int) session.getId()) % pool.length]

 

 

   3write事件,flushingSessions->WriteRequestQueue

 

   4read事件



5-5  Netty   Boss 线程、Work线程


6Netty4.x 继往开来

 

 

   Netty已经成为Java编程世界中网络库事实标准。




7、结束



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值