这是阅读完李林峰的《Netty权威指南》之后,觉得本书中比较重点的部分,就做了摘抄,即加深了学习,又可以给大家提供一些帮助。

传统RPC调用性能差的三宗罪

1、网络传输方式问题。传统的RPC框架或者基于RMI等方式的远程服务(过程)调用采用了同步阻塞I/O,当客户端的并发压力或者网络延时增大之后,同步阻塞I/O会由于频繁的wait导致I/O线程经常性的阻塞,由于线程无法高效的工作,I/O处理能力自然下降。

采用BIO通信模型的服务端,通常有一个独立的Acceptor线程负责监听客户端的连接,接收到客户端连接之后,为其创建一个新的线程处理请求信息,处理完成之后,返回应答消息给客户端,线程销毁,这就是典型的一请求一应答模型。该架构最大的问题就是不具备弹性伸缩能力,当并发访问量增加之后,服务端的线程个数和并发访问数呈线性正比,由于线程是Java虚拟机非常宝贵的系统资源,当线程数膨胀之后,系统的性能急剧下降,随着并发量的继续增加,可能会发生句柄溢出、线程堆栈溢出等问题,并导致服务器最终宕机。

2、序列化性能差。Java序列化存在以下几个典型的问题:

1)Java序列化机制是Java内部的一种对象编解码技术,无法跨语言使用。例如对于异构系统之间的对接,Java序列化后的码流需要通过其他语言反序列化成原始对象(副本),目前很难支持。

2)相比于其他的开源序列化框架,Java序列化后的码流太大,无论是网络传输还是持久化到磁盘,都会导致额外的资源占用。

3)序列化性能差,资源占用率高(主要是CPU资源占用高)。

3、线程模型问题。由于采用同步阻塞I/O,这会导致每个TCP连接都占用1个线程,由于线程资源是JVM虚拟机非常宝贵的资源,当I/O读写阻塞导致线程无法及时释放时,会导致系统性能急剧下降,严重的甚至会导致虚拟机无法创建新的线程。

Netty高性能之道1-传统RPC调用性能差的三宗罪相关推荐

  1. 【读后感】Netty 系列之 Netty 高性能之道 - 相比 Mina 如何 ?

    [读后感]Netty 系列之 Netty 高性能之道 - 相比 Mina 如何 ? 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商 ...

  2. Netty:高性能之道

    1.RPC调用性能模型分析 传统RPC调用性能差的三宗罪 1.网络传输方式问题.传统的RPC框架或者基于RMI等方式的远程服务调用采用了同步阻塞I/O,当客户端的并发压力大或者网络延时增大之后,同步阻 ...

  3. Netty 高性能之道 - Recycler 对象池的复用

    前言 我们知道,Java 创建一个实例的消耗是不小的,如果没有使用栈上分配和 TLAB,那么就需要使用 CAS 在堆中创建对象.所以现在很多框架都使用对象池.Netty 也不例外,通过重用对象,能够避 ...

  4. Netty 高性能特性

    转自:http://www.infoq.com/cn/articles/netty-high-performance/ 1. 背景 1.1. 惊人的性能数据 最近一个圈内朋友通过私信告诉我,通过使用N ...

  5. 深入剖析通信层和RPC调用的异步化(上)

    <Netty 进阶之路>.<分布式服务框架原理与实践>作者李林锋深入剖析通信层和 RPC 调用的异步化.李林锋此后还将在 InfoQ 上开设 Netty 专题持续出稿,感兴趣的 ...

  6. Netty高性能编程

    http://calvin1978.blogcn.com/articles/netty-performance.html 网上赞扬Netty高性能的文章不要太多,但如何利用Netty写出高性能网络应用 ...

  7. Netty高性能编程备忘录(上)

    http://calvin1978.blogcn.com/articles/netty-performance.html 网上赞扬Netty高性能的文章不要太多,但如何利用Netty写出高性能网络应用 ...

  8. RPC框架性能基本比较测试

    from: http://www.useopen.net/blog/2015/rpc-performance.html RPC框架性能基本比较测试 gRPC是Google最近公布的开源软件,基于最新的 ...

  9. Java基础之《netty(30)—RPC调用流程分析》

    一.RPC基本介绍 1.RPC(Remote Procedure Call)-远程过程调用,是一个计算机通信协议.该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序无需额外的为这个交互作 ...

  10. [强烈推荐] 新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析

    新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析 1.引言 Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. 本文基 ...

最新文章

  1. ANDROID L日志系统——JAVAAPI与LIBLOG
  2. unix 网络编程卷2 第43页 管道:open竟然会阻塞?
  3. Burnside引理和Polya定理学习笔记
  4. js 运算符_JS的相等和严格相等运算符(== amp; ===)
  5. 怎么查看表用了那个序列_知识分享008:怎样在手机上用萤石云查看海康威视监控录像...
  6. Linux基本的网络配置
  7. STM32(三)-------流水灯(标准库函数)
  8. 什么是闭包?闭包的优缺点?
  9. IIS出现server application error解决方案
  10. 企业落地Kubernetes的问题与对策
  11. 使用create-react-app添加css modules、sasss和antd
  12. 造DPU芯片,如梦幻泡影?丨虚构短篇小说
  13. Peekaboo——项目系统设计与数据库设计
  14. 企业内部信息安全管理——(一)风险识别和管控
  15. 《安富莱嵌入式周报》第213期:2021.05.17--2021.05.23
  16. 用fail2ban阻止ssh暴力破解root密码
  17. 三菱编程软件GX Works2复制粘贴错位
  18. Compator/Comparable的比较
  19. MATLAB | 七夕节快到了,还不给朋友安排上这个咕呱小青蛙?
  20. 【JMP白皮书下载】 | 可靠性增长之探讨与案例分享

热门文章

  1. arm嵌入式系统C语言代码,ARM嵌入式系统C语言编程.pdf
  2. Debian vmtools安装后 不能复制粘贴文件
  3. 银行对公业务和对私业务
  4. 蓝桥杯常用代码模板总结(C/C++)
  5. 双重差分法之平行趋势检验
  6. pom 备注_POM 500P的物性
  7. (转)wincap抓包原理
  8. 在伦敦生活工作-2(由于本人懒惰的关系,这篇估计是最后一篇了,呵呵)
  9. 大学计算机基础案例教程章测试答案,大学计算机基础案例教程--Win7+Office2010(高等院校公共基础课规划教材)...
  10. 分享50道硬核Python编程题,面试前过一遍