Netty(二)

Netty(二)

JDK NIO存在的问题:

  • NIO跨平台和兼容性问题
  • NIO对缓冲区的聚合和分散操作可能会导致内存泄露
  • Squashing the famous epoll bug(压碎著名的epoll bug)

netty是如何对其进行封装的?

JDK NIO有ServerSocketChannel、SocketChannel、Selector、SelectionKey几个核心概念。
Netty提供了一个Channel接口统一了对网络的IO操作,其底层的IO通信是交给Unsafe接口实现,而Channel主要负责更高层次的read、write、flush、和ChannelPipeline、Eventloop等组件的交互,以及一些状态的展示;做到了职责的清晰划分,对使用者是很友好的,规避了JDK NIO中一些比较繁琐复杂的概念和流程。

单体应用和微服务应用的区别

  • 单体应用是将所有功能模块放在一个单一进程中,并且通过在不同的服务器上面复制这个单体进行扩展。
  • 微服务架构是将每一个功能模块分别放进到一个独立的服务中,并且通过跨服务器分发这些服务进行扩展,只有需要时才复制。
  • 一个应用程序应该是一组小型服务,通过Http的方式进行互通。

微服务的优点:

单体应用中,如果需要改动功能,那么则需要重新部署整个单体应用。而微服务则不需要,只需要重新部署修改的功能模块那个微服务。每一个功能模块都是可独立替换和独立维护的软件单元,完全体现了高可复用性,高可维护性,高可扩展性。

微服务架构应用的原理图
Netty(二)_第1张图片

你可能感兴趣的:(Netty,netty,nio)