高并发高可用的通信框架实践
2013-09-28 10:20
260 查看
通信组件用于业务系统内部服务之间的调用,在大并发的电商平台中,需要满足高并发高吞吐量的要求。
整个通信组件包括客户端和服务端两部分。
客户端和服务器端维护的是长连接,可以减少每次请求建立连接的开销,在客户端对于每个服务器定义一个连接池,初始化连接后,可以并发连接服务端进行rpc操作,连接池中的长连接需要心跳维护,设置请求超时时间。
对于长连接的维护过程可以分两个阶段,一个是发送请求过程,另外一个是接收响应过程。在发送请求过程中,若发生IOException,则把该连接标记失效。接收响应时,服务端返回SocketTimeoutException,如果设置了超时时间,那么就直接返回异常,清除当前连接中那些超时的请求。否则继续发送心跳包(因为可能是丢包,超过pingInterval间隔时间就发送ping操作),若ping不通(发送IOException),则说明当前连接是有问题的,那么就把当前连接标记成已经失效;若ping通,则说明当前连接是可靠的,继续进行读操作。失效的连接会从连接池中清除掉。
每个连接对于接收响应来说都有单独线程运行,客户端可以通过同步(wait,notify)方式或者异步进行rpc调用,
序列化采用更高效的hession序列化方式。
服务端采用事件驱动的NIO的MINA框架,支撑高并发高吞吐量的请求。
整个通信组件包括客户端和服务端两部分。
客户端和服务器端维护的是长连接,可以减少每次请求建立连接的开销,在客户端对于每个服务器定义一个连接池,初始化连接后,可以并发连接服务端进行rpc操作,连接池中的长连接需要心跳维护,设置请求超时时间。
对于长连接的维护过程可以分两个阶段,一个是发送请求过程,另外一个是接收响应过程。在发送请求过程中,若发生IOException,则把该连接标记失效。接收响应时,服务端返回SocketTimeoutException,如果设置了超时时间,那么就直接返回异常,清除当前连接中那些超时的请求。否则继续发送心跳包(因为可能是丢包,超过pingInterval间隔时间就发送ping操作),若ping不通(发送IOException),则说明当前连接是有问题的,那么就把当前连接标记成已经失效;若ping通,则说明当前连接是可靠的,继续进行读操作。失效的连接会从连接池中清除掉。
每个连接对于接收响应来说都有单独线程运行,客户端可以通过同步(wait,notify)方式或者异步进行rpc调用,
序列化采用更高效的hession序列化方式。
服务端采用事件驱动的NIO的MINA框架,支撑高并发高吞吐量的请求。
相关文章推荐
- Java构建高并发高可用的电商平台架构实践
- Netty:高性能、高可用的NIO通信框架
- Java NIO通信框架在电信领域的实践
- 高并发高可用的 架构实践
- Java构建高并发高可用的电商平台架构实践
- Java构建高并发高可用的电商平台架构实践
- Java NIO通信框架在电信领域的实践
- Java NIO通信框架在电信领域的实践
- Mycat开发实践---Mycat的网络通信框架
- 适用Android 可用与activity 与 fragment相互通信的小框架
- Java NIO通信框架在电信领域的实践
- 强一致、高可用、自动容灾能力背后,阿里X-Paxos的应用实践
- 构建高并发高可用的电商平台架构实践
- Windows Azure 安全最佳实践 - 第 2 部分:Azure 提供哪些现成可用的安全机制
- 从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-2. 输入控件)
- android volley通信框架解析
- Android 网络通信框架Volley简介(Google IO 2013)
- 【DDD】领域驱动设计实践 —— 框架实现
- ESFramework 可复用的通信框架(序)
- 从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-3. 菜单)