使用分布式系统主要有特色:
java
1.增大系统容量。 咱们的业务量愈来愈大,而要能应对愈来愈大的业务量,一台机器的性能已经没法知足了,咱们须要多台机器才能应对大规模的应用场景。因此,咱们须要垂直或是水平拆分业务系统,让其变成一个分布式的架构。
2.增强系统可用。 咱们的业务愈来愈关键,须要提升整个系统架构的可用性,这就意味着架构中不能存在单点故障。这样,整个系统不会由于一台机器出故障而致使总体不可用。因此,须要经过分布式架构来冗余系统以消除单点故障,从而提升系统的可用性。
3.由于模块化,因此 系统模块重用度更高数据库
4.由于软件服务模块被拆分,开发和发布速度能够并行而变得更快后端
5.系统扩展性更高
6.团队协做流程也会获得改善浏览器
分布式系统的类型有三种:
1.分布式处理,但只有一个总数据库,没有局部数据库
2.分层式处理,每一层都有本身的数据库
3.充分分散的分布式网络,没有中央控制部分,各节点之间的联系方式又能够有多种,如松散的联接,紧密的联接,动态的联接,广播通知式的联接等服务器
什么是 JAVA 分布式应用?网络
一个大型的系统每每被分为几个子系统来作,一个子系统能够部署在一台机器的多个 JVM 上,也能够部署在多台机器上。可是每个系统不是独立的,不是彻底独立的。须要相互通讯,共同实现业务功能。
架构
一句话来讲:分布式就是经过计算机网络将后端工做分布到多台主机上,多个主机一块儿协同完成工做。并发
实现分布式主要的方式
分布式应用用到的技术: 网络通讯,基于消息方式的系统间通讯和基于远程调用的系统间通讯。
缺点: 就是会增长技术的复杂度。
基于消息的系统通讯方式,主要是利用的网络协议,好比 TCP/IP 协议。
系统间的通讯还须要对数据进行处理,好比同步 IO 和异步 IO。
远程调用实现系统间的通讯:经过调用本地的java接口的方法来透明的调用远程java的实现。具体的细节有框架来实现。负载均衡
基于Java自身技术实现消息方式的系统间通讯:框架
基于Java自身包实现消息方式的系统间通讯的方式有:
TCP/IP+BIO、TCP/IP+NIO、UDP/IP+BIO以及UDP/IP+NIO 4种方式
TCP/IP+BIO 在 Java 中可基于 Socket、ServerSocket 来实现 TCP/IP+BIO 的系统间通讯。
Socket 主要用于实现创建链接及网络 IO 的操做,ServerSocket 主要用于实现服务器端端口的监听及 Socket 对象的获取。
多个客户端访问服务器端的状况下,会遇到两个问题:创建多个 socket 的,占用过多的本地资源,服务器端要承受巨大的来访量;建立过多的 socket,占用过多的资源,影响性能。
一般解决这种问题的办法是,使用 链接池,既能限制链接的数量,又能避免建立的过程,能够很大的提升性的问题。缺点就是竞争量大的时候形成激烈的竞争和等待。须要注意的是,要设置超时时间,若是不这样的话,会形成无限制的等待。
为了解决这个问题,采用一链接一线程的方式,同时也会带来反作用,内存占用过多。
TCP/IP 异步通讯: JAVA NIO 通道技术实现。
JAVA 分布式知识体系介绍
附上某 JAVA 分布式学习目录,帮助了解分布式都有哪些东西
第 1 章 分布式 Java应用
1.1 基于消息方式实现系统间的通讯
1.1.1 基于 Java自身技术实现消息方式的系统间通讯
1.1.2 基于开源框架实现消息方式的系统间通讯
1.2 基于远程调用方式实现系统间的通讯
1.2.1 基于 Java自身技术实现远程调用方式的系统间通讯
1.2.2 基于开源框架实现远程调用方式的系统间通讯
第 2 章 大型分布式 Java应用与 SOA
2.1 基于 SCA实现 SOA平台
2.2 基于 ESB实现 SOA平台
2.3 基于 Tuscany实现 SOA平台
2.4 基于 Mule 实现 SOA平台
3.1 Java代码的执行机制
3.1.1 Java源码编译机制
3.1.2 类加载机制
3.1.3 类执行机制
3.2 JVM内存管理
3.2.1 内存空间
3.2.2 内存分配
3.2.3 内存回收
3.2.4 JVM 内存情况查看方法和分析工具
3.3 JVM线程资源同步及交互机制
3.3.1 线程资源同步机制
3.3.2 线程交互机制
3.3.3 线程状态及分析
第 4 章 分布式应用与 SunJDK类库
4.1 集合包
4.1.1 ArrayList
4.1.2 LinkedList
4.1.3 Vector
4.1.4 Stack
4.1.5 HashSet
4.1.6 TreeSet
4.1.7 HashMap
4.1.8 TreeMap
4.1.9 性能测试
4.1.10 小结
4.2 并发包( java.util.concurrent )
4.2.1 ConcurrentHashMap
4.2.2 CopyOnWriteArrayList
4.2.3 CopyOnWriteArraySet
4.2.4 ArrayBlockingQueue
4.2.5 AtomicInteger
4.2.6 ThreadPoolExecutor
4.2.7 Executors
4.2.8 FutureTask
4.2.9 Semaphore
4.2.10 CountDownLatch
4.2.11 CyclicBarrier
4.2.12 ReentrantLock
4.2.13 Condition
4.2.14 ReentrantReadWriteLock
4.3 序列化 /反序列化
4.3.1 序列化
4.3.2 反序列化
第 5 章 性能调优
5.1 寻找性能瓶颈
5.1.1 CPU消耗分析
5.1.2 文件 IO 消耗分析
5.1.3 网络 IO 消耗分析
5.1.4 内存消耗分析
5.1.5 程序执行慢缘由分析
5.2 调优
5.2.1 JVM 调优
5.2.2 程序调优
5.2.3 对于资源消耗很少,但程序执行慢的状况
第 6 章 构建高可用的系统
6.1 避免系统中出现单点
6.1.1 负载均衡技术
6.1.2 热备
6.2 提升应用自身的可用性
6.2.1 尽量地避免故障
6.2.2 及时发现故障
6.2.3 及时处理故障
6.2.4 访问量及数据量不断上涨的应对策略
第 7 章 构建可伸缩的系统
7.1 垂直伸缩
7.1.1 支撑高访问量
7.1.2 支撑大数据量
7.1.3 提高计算能力
7.2 水平伸缩
7.2.1 支撑高访问量
7.2.2 支撑大数据量
7.2.3 提高计算能力
扫描下方二维码获取更多知识和学习资料