spring+netty+haproxy三人行组合

非常喜欢这个组合,内容转自:http://www.blogjava.net/liuguly/archive/2014/05/21/413900.html

netty是个高性能的网络通信框架,该框架性能高异步事件驱动模式,数据读写更高效提供更全面功能强的ByteBuf缓冲。完全可以基于此框架:自定义cs协议通信

如果基于RMI框架,阿里的dubbo,facebook的thrift完全够用了,但是有时候我们的客户端不是java语言所写或者走自定义协议通信,比如流行的openfire,tigase,ejabberd等基于xmpp协议,它们底层的通信要么基于现有的成熟框架,比如mima或者netty,要么自己实现底层socket通信,而且还涉及分布式缓存,集群,分布式垃圾回收,异常处理,连接管理等等,这都不是一件容易的事情。所以遇见这种情况,仍然两种选择:1、基于现有成熟通信框架。2、自己写通信框架。

下面先说下TCP/IP参考模型,它是OSI参考模型7层的简化 图示:

看到上图后,一目了然,基于HTTP协议的通信已经很成熟了,大多数框架都支持包括netty,如果客户端基于http协议,那么netty自带的http相关处理类完全足够。

如果是自定义协议,那么走的是TCP/IP参考模型的传输层,可靠传输必然是TCP协议,举例:
如果有以下自定义协议:
@@ID|info|time|xxx|xxx|$$\r\n

每天有上万客户端发送的都是此类消息,那么server的任务是保证数据安全、传输高效、维护连接、维护用户session、支持高并发等等,那么综合netty,写自己的业务,就能事半功倍了。
先给一个极其简单的架构图:

haproxy负载均衡
nettyServer提供服务
DB存储数据

这是一个很简单的架构,若扩展
1:haproxy提供主从设备
2:nettyServer需维护共享数据块安全,加同步或许会降低性能,或者针对该数据块增加队列机制,采用多线程守护模式编写代码。
3:客户端非常多,横向增加nettyServer。
4:若客户端数量级别非常之大,数据库采用读写分离主从库,对业务进行梳理划分,读和写在不同数据库,DB将可横向发展,最后可发展为大规模。
5:最后需对服务器节点再次划分。
以上涉及细节会有很多

这种架构适用于自定义协议,若用应用层协议如http协议,架构模样又会不同

时间: 2024-10-10 18:24:18

spring+netty+haproxy三人行组合的相关文章

互联网架构师视频课程 Dubbo ActiveMQ Spring Netty MongoDB Jvm

互联网架构师视频课程 Dubbo ActiveMQ spring Netty MongoDB Jvm =================================================================== 2016年netty/mina/java nio视频教程java游戏服务器设计教程 互联网架构师教程:http://blog.csdn.net/pplcheer/article/details/71887910 需要的加qq:1225462853,备注:程序员学

Spring Netty (实战)

Spring Netty 实战 疯狂创客圈 死磕Netty 系列之11 主要介绍的是SpringBoot整合Netty.在使用Netty之前,建议先了解Netty的基本原理,请参阅疯狂创客圈. 这里仅仅是使用Netty的第一步,这里介绍一个最简单的Demo--EchoServer,也就是回写服务器.就是无论客户端发啥字符串到服务器端,服务器端接收字符串后直接回写到客户端. 本篇内容纲要 环境要求 Spring +netty 服务器端 Spring +netty 客户端 Spring读取配置文件中

Spring+Netty+WebSocket实例

比较贴近生产,详见注释 一.pom.xml 具体太长,详见源码 </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.2.Final</version> </dependency> 二.目录结构 三.AfterSpringBegin 继承了After

Netty原理分析往这边看!

Netty是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果. 作为当前最流行的NIO框架,Netty在互联网领域.大数据分布式计算领域.游戏行业.通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Netty的NIO框架构建. Netty架构分析 Netty 采用了比较典型的三层网络架构进行设计,逻辑

彻底理解Netty,这一篇文章就够了

Netty到底是什么 从HTTP说起 有了Netty,你可以实现自己的HTTP服务器,FTP服务器,UDP服务器,RPC服务器,WebSocket服务器,Redis的Proxy服务器,MySQL的Proxy服务器等等. 我们回顾一下传统的HTTP服务器的原理 1.创建一个ServerSocket,监听并绑定一个端口 2.一系列客户端来请求这个端口 3.服务器使用Accept,获得一个来自客户端的Socket连接对象 4.启动一个新线程处理连接 4.1.读Socket,得到字节流 4.2.解码协议

新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析(阿里)

1.引言 Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. 本文基于 Netty 4.1 展开介绍相关理论模型,使用场景,基本组件.整体架构,知其然且知其所以然,希望给大家在实际开发实践.学习开源项目方面提供参考. 本文作者的另两篇<高性能网络编程(五):一文读懂高性能网络编程中的I/O模型>.<高性能网络编程(六):一文读懂高性能网络编程中的线程模型>也写的很好,有兴趣的读者可以一并看看. 关于作者: 陈彩华(

Netty面试题(2020)

1.Netty 是什么? Netty 是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务 器和客户端.Netty 是基于 nio 的,它封装了 jdk 的 nio,让我们使用起来更加方法灵活. 2.Netty 的特点是什么? 高并发:Netty 是一款基于 NIO(Nonblocking IO,非阻塞 IO)开发的网络通信框架, 对比于 BIO(Blocking I/O,阻塞 IO),他的并发性能得到了很大提高. 传输快:Netty 的传输依赖于零拷贝特性,尽量减少不必要

Spring(三)——AOP

AOP全名为Aspect-Oriented Programming,意思是面向横切面编程,前边我们有过介绍   面向横切面编程AOP的理解 ,我们通过这种编程思想很容易的扩展我们的应用程序. 一,如何实现AOP编程思想呢?实现这种编程思想的一个重要手段就是代理模式或者说模仿代理模式的运用.尤其是其中动态代理模式,JDK提供的Proxy的使用,这个在前边也总结:Proxy代理模式的应用                       而这种动态代理是基于接口的,也就是说代理对象和目标对象实现了同一个接

Struts2+Spring集成合并

前边单独总结了Struts2,Spring和Ibaits框架了,那么怎么结合使用呢?这次先来看一下Sturts2和Spring的集成合并.其实挺简单的,就是导入各自的jar包以及连接彼此的jar包,分好彼此的工作就可以了. 好看一下Struts2+Spring的集成方案!  Struts2和Spring集成有两种方案,是根据action的创建来划分的!  方案一,Struts2负责流程,Spring负责对象的创建:Action由Struts2框架负责创建:Service由Spring框架负责创建