这是阅读完李林峰的《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. c++学习笔记之析构函数
  2. 分享一个免费短信猫OCX源码
  3. 最近用.NET实现DHT爬虫,全.NET实现
  4. 三十、MySQL 处理重复数据
  5. Spring Boot (4)---配置文件详解
  6. 开源syslog服务器_开源API网关Kong基本介绍和安装验证
  7. 图片夹_【第8期】EHS大咖答疑解惑吊运事故的罪魁祸首之一:钢丝绳夹!不看不知道!...
  8. C盘空间不够?win10自带mklink命令给C盘软件搬家减负【计算机小白必备】
  9. 手写图像反转,变换,imhist,均衡化,均值中值滤波,sobel以及拉普拉斯实现图像锐化
  10. 接口测试一般怎么测?接口测试的流程和步骤
  11. Themida/WinLicense V1 8 2 0 +脱壳 FOR PcShare远程控制会员版本20070826
  12. ctc系统数据库服务器采用,CTC系统构成
  13. 扑克牌练习 【数据结构】
  14. 想转行it , 培训还是自学?
  15. Python pydub 截取音频
  16. 天玑9000和骁龙8 gen1哪个好 天玑9000和骁龙8 gen1差距
  17. 外贸人需要准备的浏览器插件有哪些?
  18. 计算机硬件专业叫什么作用,计算机硬件的五大功能是什么呢
  19. 百度智能小程序SEO指南
  20. Java设计模式之建造者模式(精髓版)

热门文章

  1. 没有苹果开发账号,只有p12文件和mobileprovision文件进行打包
  2. 依赖函数检查 mysql_connect()_解决的方法:mysql_connect()不支持请检查mysql模块是否正确载入...
  3. JS判断当前浏览器安装的flash版本
  4. 'MPD' object has no attribute 'myIP'
  5. Android Camera2对焦框和对焦
  6. 再次推荐下这本书 —— DDIA
  7. android JeckPack官方文档学习
  8. 【LGP5108】仰望半月的夜空
  9. matlab连通区域质心标记,连通域的质心
  10. 新版TeamTalk部署教程