Java分布式应用:Java分布式通讯方式

Java分布式应用:Java分布式通讯方式第一部分Java分布式通讯的方式1.基于消息方式实现系统间通讯a.数据传输部分:TCP/IP、UDP/IPTCP(端口号为23)与UDP(端口号为53)的区别1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证…

大家好,又见面了,我是你们的朋友全栈君。

第一部分 Java分布式通讯的方式

1.基于消息方式实现系统间通讯

a.数据传输部分 : TCP/IP 、UDP/IP
TCP(端口号为23)与UDP(端口号为53)的区别

  • TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
  • TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
  • TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
  • 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
  • TCP首部开销20字节;UDP的首部开销小,只有8个字节
  • TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

总结:

  • TCP的优势在于其安全性
  • UDP的优势在于其性能

b.数据处理部分:BIO、NIO、AIO
同步阻塞BIO: 连接线程 (缓存、自己处理)
同步非阻塞NIO:请求线程(立即、自己处理)
异步非阻塞AIO:有效请求线程(立即、委托OS)

同步 vs 异步
同步:JAVA自己处理IO读写
异步: 将IO读写委托给OS(系统)

阻塞 (不立即返回) vs 非阻塞(立即返回)
阻塞:利用缓冲区先读写资源 ,再通知应用 相对而言响应速度慢
非阻塞: 线程在处理之前可能要等待后端资源, 响应速度快

总结:

  • NIO和AIO都是由事件驱动,要进行事件注册及扫描。
  • BIO的实现方式主要是通过Socket套接字的方式。
  • mysql数据库采用的就是BIO,而Netty采用的是NIO。

2基于远程调用方式实现系统间通讯

  1. RPC:采用C/S方式,跨语言跨平台
  2. webservice:请求应答机制,跨系统跨平台
  3. RMI: 降低客户端与服务器的耦合性,java远程接口调用;跨虚拟机
  4. JMS:JAVA消息服务,点对点和发布订阅模型 如ActiveMQ
    在这里插入图片描述
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133335.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月1日 下午5:20
下一篇 2022年5月1日 下午5:20


相关推荐

  • 延时函数如何延时

    延时函数如何延时延时函数如何延时**函数样例编译软件编译后的汇编指令Delay_ms(200);…

    2022年6月22日
    33
  • 等价类划分法-案例剖析-设计测试用例「建议收藏」

    等价类划分法-案例剖析-设计测试用例「建议收藏」目录等价类划分法概念有效等价类和无效等价类等价类设计测试用例步骤案例1案例2案例3等价类划分法概念等价类划分法是把所有可能的输入数据,即程序的输入数据集合划分成若干个子集即等价类,然后从每个等价类中选取少量具有代表性的数据作为测试用例。有效等价类和无效等价类有效等价类:只完全满足产品规则说明的输入数据,即有效的、有意义的输入数据的集合。利用有效等价类可以检验程序是否满足规则说明所规定的功能性要求。无效等价类:不满足程序输入要求或者无效的…

    2022年10月10日
    5
  • MySQL忘记密码怎么修改密码[通俗易懂]

    MySQL忘记密码怎么修改密码[通俗易懂]MySQL的root帐号密码默认为空,经常都有修改密码后忘记密码的事。如果忘记了root帐号密码,那该怎么修改密码呢?这里有一个可行的方法,就是在MySQL安全模式下(跳过权限检查)修改密码的方式来解决这个问题。本文分别对Windows环境与Linux环境下介绍MySQL忘记密码时修改密码的方法,希望帮助初学者解决丢失密码的烦恼。

    2022年6月22日
    32
  • 开发大数据基础教程(前端开发入门)

    第一阶段linux+搜索+hadoop体系第一阶段:linux+搜索+hadoop体系Linux大纲这章是基础课程,帮大家进入大数据领域打好Linux基础,以便更好地学习Hadoop,hbase,NoSQL,Spark,Storm,docker,kvm,openstack等众多课程。因为企业中无一例外的是使用Linux来搭建或部署项目。1)Linux的介绍,Linux的安装:VMwareW…

    2022年4月13日
    52
  • python seaborn画图

    python seaborn画图pythonseabor 画图以前觉得用 markdown 写图文混排的文字应该很麻烦 后来发现 CSDN 的 markdown 真是好用的 在做分析时候 有时需要画几个图看看数据分布情况 但总记不住 python 的绘图函数 今天有空顺便整理下 python 的 seaborn 绘图函数库 Seaborn 其实是在 matplotlib 的基础上进行了更高级的 API 封装 从而使得作图更加容易 在大多数情况下使用 seabo

    2026年3月19日
    3
  • java———发送网络传真[通俗易懂]

    java———发送网络传真[通俗易懂]目录推荐公众号服务商代码发送代码回执接口推荐公众号有彩蛋哦!!!(或者公众号内点击网赚获取彩蛋)服务商在网上兜兜转转没有找到免费的网络传真API,只好付费服务商bnetfax代码有了API后那其他的就是按照文档开发了没什么难度发送代码publicstaticvoidmain(String[]args)throwsIOException,ServiceExceptio…

    2022年6月28日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号