猿创征文|Java 分布式

Java 分布式

Java 分布式是什么

  • 分布式系统是:由多个节点(计算机服务器)组成的系统,而且这些节点一般不是孤立的,而是互通的。

  • 通过计算机网络与节点(计算机服务器)相连,将所有节点都连接上。

分布式有什么特点

  • 系统容量增加
    将原本复杂的业务从一台服务器上拆分到对多台服务器上,是系统容量从一条服务器变成了多台服务器的容量。

  • 增强系统可用性
    不会因为一台机器出故障而导致整体不可用,消除了单点故障,从而提高系统可用性。

  • 重用度更高
    系统模块化,从而重用度更高。

  • 开发和发布速度更快
    因为拆分成了多个服务模块,可以同时平时开发,所以提高了开发和发布速度。

  • 扩展性更高

分布式有什么优点

  • 会把模块拆分,使用接口通信,从而降低模块之间的耦合度。

  • 会把项目拆分成若干个子项目,不同的团队负责不同的子项目。

  • 增加功能灵活,只需要增加一个子项目,调用其他系统的接口就可以。

  • 能够灵活地进行分布式部署。

  • 代码复用性提升极大。

分布式有什么缺点

  • 系统之间交互需使用远程通信,使接口开发增大工作量。

  • 部署单个服务会比较快,但是如果一次部署需要多个服务,部署会变得复杂。

  • 系统的吞吐量会变大,但是响应时间会变长。

  • 测试和查错的复杂度增大。

  • 提高了维护和运维的复杂度。

Java 自身实现网络通信的方式(Java 网络编程)

  • 就是 TCP/IP、UDP/IP 与 BIO、NIO 进行相互组合形成 4 种方式。

  • TCP/IP + BIO、TCP/IP + NIO、UDP/IP + BIO、UDP/IP + NIO。

TCP(Transmission Control Protocol,传输控制协议):一种面向连接的、可靠的、基于字节流的传输层通讯协议

  • 传输控制协议,面向连接的协议

  • 两台机器的可靠无差错的数据传输

  • 双向字节流传递

UDP(User Datagram Protocol,用户数据报协议):无连接无状态的传输层通讯协议

  • 用户数据报协议,面向无连接协议(发送方发送消息后,如果接收方不在目的地,那这个消息就丢失了)

  • 不保证可靠的数据传输(发送方无法得知是否发送成功)

  • 速度快,也可以在较差的网络下使用(好处是:简单、节省、经济)

BIO(Blocking I/O)同步阻塞通讯方式

  • 一个线程可以管理一个连接

  • 如果连接多了,线程数量不够,就只能等待,即会发生阻塞。

  • BIO 是单向的,要么是输入流要么是输出流。

  • BIO 主要是以 I/O 流的形式处理数据,效率:块 > 流。

  • BIO 主要是以字节流和字符流操作。

NIO(Non-Blocking I/O)同步非阻塞通讯方式

  • 一个线程可以管理多个连接

  • 客户端发送的连接都会注册到多路复用器上,然后进行轮询连接,有I/O请求就处理。

  • 不是异步的,只是一个线程管理多个管道。

  • 减少线程多的压力。

  • 避免同步 I/O 通讯效率过低。

  • NIO 是双向的,可以从 channel(通道)往 buffer(缓冲区)读写数据,同时 buffer 也可以向 channel 读写数据。

  • NIO 以 I/O 块(buffer)的形式处理数据,效率:块 > 流。

  • NIO 是基于 channel、buffer 操作的,而 selector(选择器)是用来监听 channel 的。

AIO(Asynchronous I/O)异步非阻塞通讯方式

  • 异步 I/O,采用回调方法进行处理读写操作

  • 引入了异步通道,采用的是 proctor(监考人)模式,特点是:有效的请求才启动线程,先由操作系统完成后再通知服务端。

  • 有三大组件:selector(选择器),channel(通道),buffer(缓冲区)。

  • 一个线程对应 selector,一个 selector 对应三个 channel,而一个 channel 又对应 buffer(双向)。

  • 程序切换到哪个 channel 取决于 event(事件)决定,selector 会根据事件去切换 channel。

  • buffer是一个内存块,底层有一个数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十⑧

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值