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的方式進行互通。

微服務的優點:

單體應用中,如果需要改動功能,那麼則需要重新部署整個單體應用。而微服務則不需要,只需要重新部署修改的功能模塊那個微服務。每一個功能模塊都是可獨立替換和獨立維護的軟件單元,完全體現了高可複用性,高可維護性,高可擴展性。

微服務架構應用的原理圖
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章