首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Apache MINA2 实现 Web 系统的消息中间件(1)

使用 Apache MINA2 实现 Web 系统的消息中间件(1)

项目背景介绍系统发展遇到的瓶颈问题目前主流网站都是由开源软件构建的。使用 Nginx 做为 Web 服务器,Tomcat/Resin 做 App 容器,Memcached 做通用 Cache,MySQL 做数据库,使用 Linux 操作系统。网站系统刚上线初期,用户数并不多,所有的模块都整合一个系统中,所有业务由一个应用提供,此时采取将全部的逻辑都放在一个应用的方式利于系统的维护和管理。但是,随着网站用户的不断增加,系统的访问压力越来越大,为了满足越来越多用户的需求,原有的系统需要增加新的功能进来,随着系统功能模块的增多,系统就会变得越来越难以维护和扩展,同时系统伸缩性和可用性也会受到影响。例如一个网站初期只有用户服务功能,随着网站发展,可能会需要用户信息中心、充值支付中心、商户服务中心等越来越多的子系统,如果把这些子系统都整合在原有的系统中,整个网站将会变得非常复杂,并且难以维护。另外,由于所有子系统都整合在一起,只要有一个模块出问题,那么所有的功能都会受影响,造成非常严重的后果。所以系统发展遇到的瓶颈就是随着系统的发展,如果所有模块都整合在一起,系统的可伸缩性和扩展性将受到影响。
如何解决系统发展遇到的瓶颈问题遇到以上瓶颈该如何解决呢?明智的办法就是系统拆分,将系统根据一定的标准,比如业务相关性等拆分为不同的子系统, 不同的子系统负责不同的业务功。拆分完成后,每个子系统单独进行扩展和维护,不会影响其他子系统,从而大大提高整个网站系统的扩展性和可维护性,同时系统的水平伸缩性也大大提升了。对于压力比较大的子系统可以再进行扩展而不影响其他子系统,如果某个子系统出现问题也不会影响其他服务。从而增强了整个网站系统的健壮性,更有利于保障核心业务。因此一个大型的互联网应用,肯定是要经过系统拆分的,因为只有进行拆分,系统的扩展性、维护性、伸缩性、可用性才会变得更好。但是拆分也会给系统带来问题,就是子系统之间如何通信。本文介绍 MINA2 就是用来充当消息中间件解决各子系统之间的通信问题
MINA2 的原理及主要功能MINA2 简介MINA2 是一个网络通信应用框架,它主要用于基于 TCP/IP、UDP/IP 协议栈的通信框架,也可以提供 Java 对象的序列化服务、虚拟机管道通信服务等。MINA2 可以帮助我们快速开发高性能、高扩展性的网络通信应用。MINA2 提供了事件驱动、异步(MINA2 的异步 IO 默认使用的是 Java NIO 作为底层支持)操作的编程模型。
MINA2 同时提供了网络通信的 Server 端、Client 端的封装,无论是哪端,MINA2 在整个网络通信结构中都处于如下的位置:
图 1.MINA2 在网络通信中的作用图可见 MINA2 的 API 将真正的网络通信与我们的应用程序隔离开来,你只需要关心你要发送、接收的数据以及你的业务逻辑即可。同样的,无论是哪端,MINA2 的执行流程如下所示:
图 2.MINA2 执行流程图
返回列表