`
cywhoyi
  • 浏览: 422473 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

基于Netty4网站架构

阅读更多

前言:

       本人所在公司在业内比较知名的公司,但是其电商平台真的不敢恭维,都称不上架构,跟传统的软件公司差不多springMVC+Mybatis+redis挂载在nginx+tomcat下,不能说它有问题,就是在高并发、低IO消耗,且移动端使用频繁场景情况下,觉得需要进行改造,所以采用如下的方式:


 

 



 

说明:

网关层:我们有部分是放在阿里云平台上,那么在运维层面其实能够需要的地方甚少,那为了安全和分流,我们在nginx上写了基于netty4的网关层,通过URL手段来分流到各个业务的机器。

 

应用层:基于netty的应用服务器,挂载了product、order、search等业务功能

 

数据路由层:根据配置,无缝连接数据路由
 

以上都是由团队成员一同完成工作,彻底地解放tomcat等局限性,性能提高不少。

 

因为以上部分并未开源出去,但是实际上能够基于netty完成的东西还是很多的,但是在业务功能完成层面跟一般都一样springMVC+Mybaits来完成。

 

应用服务层:Dubbo,有考虑向通过netty4+protobuf来完成,只是dubbo配置较为简单

 

这里推荐下已经开源了的vert-x3的开源框架,对于已经在使用JDK1.8的公司,推荐vert-x3,因为本人所在公司还在1.6-1.7,但是里面很多组件被采纳如:RXJava、EventBus等

 

最终结论:

大家觉得这套方案还有其它可以提高的地方吗?请及时提供意见,毕竟新架构还在磨合中,有待完善,但是个人感觉netty4真的用处很大。

  • 大小: 57.3 KB
  • 大小: 6.2 KB
6
4
分享到:
评论
12 楼 cywhoyi 2015-11-03  
james_lover 写道
你确定要用netty实现web服务?
确定要降低80%的web开发效率换10%的性能提升?

这是个很大问题,确实我们招人碰到很大问题,但是经过我们几个架构师的探讨,最终封装下,平常做业务开发的工程师,还是按照springMVC+MYbats这一套方式来
11 楼 james_lover 2015-11-03  
你确定要用netty实现web服务?
确定要降低80%的web开发效率换10%的性能提升?
10 楼 cywhoyi 2015-10-29  
yaoxianhuang 写道
能具体说说netty比tomcat优越的地方否?因为从我实际压测的结果来看,netty对比tomcat并没有什么优势

好的,我这周写一篇blog,看看能否对比下,仅仅回复你下,说服力不够
9 楼 yaoxianhuang 2015-10-29  
能具体说说netty比tomcat优越的地方否?因为从我实际压测的结果来看,netty对比tomcat并没有什么优势
8 楼 cywhoyi 2015-10-28  
winworm 写道
Dubbo只是一个构建SOA的工具,楼主主要是将tomcat应用服务器群换成netty服务群自己解析http请求处理业务员 ,这样就能保证netty服务集群能比tomcat resin 等应用服务器更稳定,性能更好?

springMVC+Mybatis+redis挂载在nginx+tomcat下确实中规中矩,能说说此架构下系统遇到性能瓶颈吗? tomcat 和一些其它的应用服务器也是支持NIO的噢,netty 主要也是基于nio的吧~

1.兄弟说的对的,我的意思也是差不多这个意思,单单netty来处理http就已经比tomcat快很多,再加上eventbus以及rxjava等组件后,效果非常明显
2.碰到当我们的总裁开完新品发布会的时候,我们的机器总是碰到瓶颈
7 楼 winworm 2015-10-28  
Dubbo只是一个构建SOA的工具,楼主主要是将tomcat应用服务器群换成netty服务群自己解析http请求处理业务员 ,这样就能保证netty服务集群能比tomcat resin 等应用服务器更稳定,性能更好?

springMVC+Mybatis+redis挂载在nginx+tomcat下确实中规中矩,能说说此架构下系统遇到性能瓶颈吗? tomcat 和一些其它的应用服务器也是支持NIO的噢,netty 主要也是基于nio的吧~
6 楼 cywhoyi 2015-10-28  
bitray 写道
cywhoyi 写道
bitray 写道
用来复写网关层的目标是什么?

现阶段的用处:
1.增加URL匹配规则,进行应用服务器的跳转
2.增加心跳检测,保证不宕机
3.增加过滤处理
其它的就没了,可能后续还会加一些东西吧,但是现阶段用处就三个特性,当然主要netty比较容易做相较于nginx


是为了网速考虑的?还是为了分布式,高可用考虑的啊?
去掉了应用服务器,以后的业务逻辑怎么处理呢?部署在云上?

1.安全
2.性能
3.netty里面只要能够解析HTTP协议,就能完成业务逻辑
5 楼 bitray 2015-10-28  
cywhoyi 写道
bitray 写道
用来复写网关层的目标是什么?

现阶段的用处:
1.增加URL匹配规则,进行应用服务器的跳转
2.增加心跳检测,保证不宕机
3.增加过滤处理
其它的就没了,可能后续还会加一些东西吧,但是现阶段用处就三个特性,当然主要netty比较容易做相较于nginx


是为了网速考虑的?还是为了分布式,高可用考虑的啊?
去掉了应用服务器,以后的业务逻辑怎么处理呢?部署在云上?
4 楼 cywhoyi 2015-10-28  
DataWei 写道
nginx 也去掉了吗?

没去掉nginx,去掉了tomcat、jetty等常规的容器
3 楼 DataWei 2015-10-28  
nginx 也去掉了吗?
2 楼 cywhoyi 2015-10-28  
bitray 写道
用来复写网关层的目标是什么?

现阶段的用处:
1.增加URL匹配规则,进行应用服务器的跳转
2.增加心跳检测,保证不宕机
3.增加过滤处理
其它的就没了,可能后续还会加一些东西吧,但是现阶段用处就三个特性,当然主要netty比较容易做相较于nginx
1 楼 bitray 2015-10-28  
用来复写网关层的目标是什么?

相关推荐

Global site tag (gtag.js) - Google Analytics