Xcafe:Netty实现兼容SpringMVC的Web容器

1.0 前言

  Netty是一个非常优秀的java nio框架,这已无需多言。国庆时逛StackOverFlow,发现有人问如何用netty来支持Spring MVC,逛了一圈github并没有找到有价值的分享。
  正好,我一直都想自己实现一个web容器,于是本着重复造轮子的精神,写了一个Xcafe。

2.0 概览

2.1 已实现功能:

  ⑴ 使用SpringMVC处理http请求
  ⑵ 静态资源缓存和直接返回数据
  ⑶ 本机session生成和缓存
  ⑷ 支持直接返回对象
  ⑸ 支持文件上传下载(MultipartFile)
  ⑹ 支持ServletOutPutStream写返回数据

2.2 待实现功能:

  ⑴ 使用Spring MVC处理WebSocket
  ⑵ 实现Xcafe MVC 框架(不使用java servlet api,而是完全根据Netty http编解码的实现)
  ⑶ 支持根据配置选择使用Spring MVC 或 Xcafe MVC
  ⑷ 负载均衡
  ⑸ 分布式缓存、分布式Session
  ⑹ 异步消息发送

3.0 架构

3.1 线程模型

  考虑到大部分Web请求的业务逻辑都需要请求数据库、读写文件等操作,为了尽可能多地接受连接,尽可能多地处理请求,当前的实现是将所有的业务逻辑处理交由其它线程池去处理。

  这将会导致线程间通信和频繁的线程切换。当将Xcafe用作负载均衡、缓存服务器或者处理其它简单的不耗时的请求时,这并不是一个合理的选择。因此,未来将在初始化容器时可以根据配置选择在workerGroup处理还是使用额外的ThreadPool。


  未来的异步消息处理和WebSocket协议实现后,如果经过测试有必要,将再在上面的线程模型基础上增加消息发送队列线程池,线程池中的每一个线程负责维护一个消息发送队列,初步考虑使用java的fork/join框架最大限度地处理消息发送请求。线程模型将会演变成:

  bossGroup负责连接
  workerGroup负责编解码
  BusinessThreadPool负责业务逻辑
  MessageThreadPool负责消息发送

3.2 目录介绍

1. core 容器核心,连接管理和协议处理
2. cache 静态资源缓存
3. example 示例
输入以下网址
http://localhost:18898/test/index.do
http://localhost:18898/3.html
可进行简单的演示

4. mvc 未来需要实现的mvc框架
5. util 一些常用的工具类
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值