起航学习网

- 让每个人都能学到最前沿新知识、新技能!
起航学习网
当前位置: 起航学习网 > 短期培训 > 编程语言 > Java分布式基础学习指南

Java分布式基础学习指南

时间:2021-07-29 15:49:57来源:Java培训网 作者:Java学习网 已有: 名学员访问该课程

  快捷搜索:java分布式学习(3)

前言: 网络通信 协议 TCP/IP 扩展:由网络层的IP协议和传输层的TCP协议组成,TCP负责发现传输的问题,一有问题就发出信号,

网络通信

协议

  • TCP/IP

扩展:由网络层的IP协议和传输层的TCP协议组成,TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。

  • UDP/IP
  • Multicast

IO

  • BIO
  • NIO
  • AIO

基于消息方式的系统间通信

1.当系统之间要通信时,就向外发送消息,消息可以使字节流、字节数组,甚至是Java对象,其他系统收到消息后则进行相应的业务处理。消息方式的通信,通常是基于网络协议来实现的,常用的系统间通信的协议有:TCP/IP和UDP/IP

2.TCP/IP是一种可靠的网络数据传输的协议。TCP/IP要求通信双方首先建立连接,之后再进行数据的传输TCP/IP负责保证数据传输的可靠性,包括数据的可到达、数据到达的顺序等。但由于TCP/IP需要保证连接及数据传输的可靠,因此可能会牺牲一些性能。

3.UDP/IP是一种不保证数据一定到达的网络数据传输协议。UDP/IP并不直接给通信双方建立连接,而是发送发到网络上进行传递。由于UDP/IP不建立连接,并且不能保证数据传输的可靠,因此性能上表现相对较好,但是可能会出现数据丢失以及数据乱序的现象。

4.TCP/IP和UDP/IP可用于完成数据的传输,但是要完成系统间通信,还需要对数据进行处理。列如读取和写入数据,按照标准分为同步IO和异步IO两种。其中同步IO中最常用的是BIO(Blocking IO)和NIO(Non-Blocking IO)

5.从程序角度而言,BIO就是当发起IO的读取或写操作时,均为阻塞方式,只有当程序读到了流或将流写入操作系统后才释放资源。f.NIO是基于事件驱动思想的,实现上通常采用Reactor模式,从程序角度而言,当发起IO的读或写操作时,是非租塞的。

基于Java包

  • TCP/IP

(BIO)Socket ServerSocket一连接一线程.一个socket需要一个线程处理。建立连接、读数据,写数据的操作都可能阻塞。为了支持并发连接需要线程池

(NIO)SocketChannel ServerSocketChannel服务端一个线程监听连接的事件,一个或多个线程来监听网络读写事件。当有实际的网络流读写事件发生后,再放入线程池中处理。一请求一线程.NIO的明显好处就是不需要为每一个socket分配一个线程,而可以在一个线程中处理多个scoket。

  • UDP/IP
  • Multicast

组播(Multicast)传输:在发送者和每一接收者之间实现点对多点网络连接。如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包。它提高了数据传送效率。减少了骨干网络出现拥塞的可能性。

开源框架

  • Netty
  • Mina(apache,基于Java NIO,对外屏蔽了JavaNIO的复杂性)

性能角度

连接管理

连接池连接复用短连接、长连接

基于远程调用方式的系统间通信

远程调用方式应该可能的是系统间的通信和系统内部一样,让使用者感觉调用远程同调用本地一样,但其实并没有办法做到完全透明。由于远程调用带来的网络问题、超时问题,序列化反序列化问题、复杂调试问

基于Java包

  • RMI(Remote Method Invocation)

原理:client----[proxy]----->封装对象、序列化为流<----[TCP/IP BIO]---->反序列化、调用----->反射调用实例对象

  • webservice

开源框架

  • Spring RMI(简单就实现RMI方式的Java远程调用)
  • Apache CXF

性能角度

  • 反射
  • 序列化、反序列化

消息通信

  • rabbitmq
  • kafka

大型分布式应用架构基础

单体架构

在Java领域可以理解为一个Javaweb应用。

分布式架构

什么是传统的分布式架构?简单来说,按照业务垂直切分,每个应用都是单体架构,通过API相互调用。

面向服务的SOA架构

  • 背景:

在构建了共用业务逻辑系统和拆分系统后,最明显的问题就是系统之间如何交互。如果不控制会出现系统之间存在多种交互方式:http、TCP/IP+NIO、Hessian、RMI、WebService等;同步异步都可能出现,这会导致开发人员每访问一个共用业务逻辑系统或拆分出来的系统,都有可能需要学习不同交互方式;同时也会造成各开发团队重复造轮子,提供不同交互方式用的框架,这对于应用的性能可用性而言带来了极大的挑战。

  • 关于SOA

面向服务的家否是一种软件体系结构,其应用程序的不同组件通过网络上的协议向其他提供服务和消费服务。简单来说,soa是不同业务建立不同的服务,服务之间的数据交互可以通过服务接口分级,这样松散耦合提高服务的可重用性,也让业务逻辑变得可组合,并且每个服务根据适应情况作出合理的分布式部署,从而让服务变得规范、高性能、高可用。soa架构中两个主要角色:服务提供者(provider)和服务消费者(consumer).阿里开源的Dubbo是soa的典型实现。

微服务架构

将单一程序开发成一个微服务,每个微服务运行在自己的进程中,并使用轻量级机制通信,通常采用HTTP RestFul API.这些服务围绕业务能力来划分构建的,并通过全完自动化部署机制来独立部署。这些服务可以使用不同的编程需要,以及不同数据存储技术,以保证最低限度的集中式管理。

SOA和微服务架构的区别

SOA往往与企业服务总线(ESB)联系在一起,主要原因在于SOA的实施思路是根据ESB模式来整合集成大量单一庞大的系统,这是soa主要的落地方式。微服务相对于和ESB联系在一起的SOA显示轻便敏捷得多,微服务将复杂的业务组件化,实际也是一种面向服务思想的体现。对于微服务来说,它是SOA的一种体现,但是它比ESB实现的SOA更加轻便、敏捷和简单。

 以上就是IT培训网小T介绍的"Java分布式基础学习指南",希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为您服务。  

文章出自:http://www.epx365.cn/peixun/software/202192487.html

文章标题:Java分布式基础学习指南



免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉

你也许会喜欢如下的文章?
(责任编辑:深圳学历教育网)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
培训学校
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员 用户级别:10 机构名称:IT培训网 联 系 人:罗老师 联系电话:13783581536 联系手机:13783581536 在线客服:起航学习网客服 在 线 QQ:起航学习网客服 电子邮件: 网站域名:http://www.cnitedu.cn 注册时间:2016-07-18 11:07 最后登录:2021-07-29 13:07