网络通信:协议TCP/IP,UDP/Ip,Multicast
IO:BIO,NIO-Reactor,AIO-Proactor
消息方式的系统间通信:
基于Java包:TCP/IP(Socket、ServerSocket;SocketChannel、ServerSocketChannel)
UPD/IP(DatagramSocket、DatagramPacket;DatagramChannel、DatagramPacket)
Mutilcast(MulticastSocket、DatagramPacket)
SRM
基于开源框架:Mina,Netty
性能角度:连接管理(连接池、连接复用、短连接、长连接)
远程调用方式的系统间通信:基于Java包(RMI(UnicastRemoteObject,LocateRegistry),Webservice)
基于开源框架(Spring RMI,Apache CXF)
性能角度(反射,序列化、反序列化)
深入理解JVM
JAVA代码的执行:代码编译为class——sun.jdk中的javac,装载class——ClassLoader,执行class(解释执行、编译执行(client complier,server complier)
内存空间:方法区、堆、JVM方法栈、本地方法栈和PC寄存器
内存分配:堆上的分配、TLAB分配、栈上的分配
内存回收:算法(Copy,Mark-sweep,mark-compact)
Sun JDK 实现(分代回收,GC参数,G1)
内存状态分析:jconsole、visualvm、jstat、jmap、MAT
线程资源同步和交互机制:
资源同步机制:synchronized实现、lock/unlock
线程交互机制:Object.wait/notify/notifyAll ——Double check pattern
并发包提供的交互机制——semaphore、CountdownLatch
线程状态及分析方法:jstack、TDA
Sun JDK:
集合包:List(ArrayList,LinkedList,Vector,Stack),Set(HashSet,TreeSet),Map(HashMap,TreeMap)
并发包:ConcurrentHashMap,CopyOnWriteArrayList,CopyOnWriteArraySet,ArrayBlockingQueue,AtomicInteger,ThreadPoolExecutor,Executors,FutureTask,Semaphore,CountDownLatch,CyclicBarrier,ReentrantLock,Condition,ReentrantReadWriteLock
序列化,反序列化
性能调优:
1,先粗粒度划分,在细粒度寻找具体点
2,设定调优目标
3,根据现状衡量目前系统资源的瓶颈,需找消耗资源的代码,寻找执行慢的原因和代码
(CPU(us(代码循环、计算量大等),sy(线程上下文,线程多,IO等待多)))
(文件IO(并发读写多,文件大))
(内存(JVM堆内存(创建了多个对象,持有了不必要的引用),JVM以外的内存(创建了太多的线程,使用了BYTEBUFFER但未释放))
(网络IO(读写网络操作太频繁))
(访问量不大(锁竞争激烈,未充分使用硬件资源,数据量大))
4,性能调优(a针对系统资源消耗过多的优化;b资源消耗不多,但执行慢)
a:cpu:适当释放CPU,wait/notify机制,JVM和内存的优化;降低锁竞争,coroutine;文件IO:异步,限流,限制文件大小;内存,GC调优,JVM堆的代大小调优,释放不需要引用的对象,对象缓冲池
b:降低锁竞争(lock-freem,拆分锁,copyOnWrite),充分使用硬件(充分使用多个CPU,充分使用内存)
构建高可用:避免单点,提高应用的可用性
负载均衡技术:选址,filover,响应返回方式(NAT,IP-Tuneling,DSR),硬件负载,软件负载VRRP,去中心化实现软件负载gossip
热备:Linux HA等
使用多机房
提高可用性:报警系统,日志记录和分析系统,水平伸缩,拆分,读写分离,其他
构建可伸缩的系统
垂直伸缩:支撑高访问量(增加CPU(锁问题,线程数随CPU增加的问题),增加内存(cache设置为内存比率的问题))
支撑大数据量:分表
提升计算能力:并行多线程计算
水平伸缩:SNA,有状态的情况(存在内存的状态(用户身份)广播同步,分布式缓存,terracotta),文件(上传的文件(存储设备,SAN文件系统,分布式文件系统));伸缩带来的数据库问题(cache,分库,异步数据库访问,中间层DAL)
支撑大数据量:性能压力(读写)读写分离,多master
提升计算能力:mapreduce,MPI
类加载机制:装载--链接(校验,准备,解析)--初始化
- 大小: 145.5 KB
分享到:
相关推荐
本书介绍了编写分布式Java应用涉及的众多知识点,分为了基于Java实现网络通信、RPC;基于SOA实现大型分布式Java应用;编写高性能Java应用;构建高可用、可伸缩的系统四个部分,七章内容来进行介绍,在这一本不算厚的...
分布式Java应用基础与实践是Java开发领域中的一个重要主题,它涉及到如何通过网络将多个独立的计算机节点连接起来,协同处理任务,以实现系统的高可用性、高性能和可伸缩性。在Java中,分布式系统主要依赖于一些核心...
《分布式Java应用基础与实践》pdf电子版,
《分布式Java应用 完整版》是一本深入探讨如何利用Java技术构建分布式系统的权威指南。全书分为四个主要部分,全面覆盖了从基础的网络通信到复杂的系统架构设计的各个环节,旨在帮助读者掌握构建高性能、高可用和可...
本书介绍了编写分布式Java应用涉及的众多知识点,分为了基于Java实现网络通信、RPC;基于SOA实现大型分布式Java应用;编写高性能Java应用;构建高可用、可伸缩的系统四个部分,七章内容来进行介绍,在这一本不算厚的...
由于提供的【部分内容】链接均指向同一网址,且无法从中提取具体信息,因此无法直接分析这些链接所包含的分布式Java应用的具体知识点。但是,我可以基于分布式Java应用的主题提供丰富的知识点。 分布式Java应用指的...
分布式Java应用是现代企业级软件开发中的重要组成部分,它涉及到多台计算机之间的协作,以处理大规模数据和提供高可用性服务。在这个主题中,我们主要关注的是如何利用Java技术来构建分布式系统,以及相关的理论与...
分布式Java应用基础与实践是Java开发领域中的一个重要话题,它涉及到如何在多个计算机节点上协同工作,以提高系统的可扩展性、可靠性和性能。在这个完整版的资源中,包括了一本名为“分布式JAVA应用 基础与实践.pdf...
分布式Java应用基础与实践源码分析 在当前的互联网时代,分布式系统已经成为企业级应用的主流架构。Java作为广泛使用的编程语言,其在分布式领域的应用非常广泛。本篇将深入探讨分布式Java应用的基础知识和实践要点...
分布式Java应用是现代互联网行业中广泛讨论的话题,尤其在大型企业级系统中,为了处理高并发、海量数据等问题,采用分布式架构成为了必要的选择。林昊,作为知名的Java技术专家,他的著作《分布式Java应用》深入浅出...
### 实现分布式Java应用的挑战与解决方案 尽管Java提供了丰富的库和技术栈来支持分布式应用的开发,但在实际应用中仍面临许多挑战,例如: - **一致性问题**:在分布式系统中保持数据的一致性是一项复杂任务,需要...
分布式JAVA应用基础与实践是Java开发领域中一个重要的主题,主要涵盖了如何在大规模网络环境中设计、部署和管理Java应用程序。本书由林昊编著,旨在帮助开发者深入理解分布式系统的基本概念,掌握Java在分布式环境中...
分布式Java应用是计算机科学中的一个重要领域,它利用了Java语言的网络友好性,为实现大型、高并发、高性能的系统提供了可能。分布式计算技术有着悠久的历史,它从早期的C/S架构,到P2P模型,再到现在的云计算,始终...
分布式Java应用基础与实践是Java开发中的重要领域,它涵盖了多台计算机之间的协作,通过网络进行数据交换和服务调用,以实现大规模系统的高效运行。在Java世界中,分布式技术广泛应用于构建可扩展、高可用的互联网...
分布式Java应用:基础与实践
分布式Java应用基础与实践.pdf 林昊 著 中文 电子工业出版社
分布式JAVA应用+基础与实践是Java开发者在面对大型、高并发、高可用系统时不可或缺的知识领域。本资源提供了全面的理论知识与实践经验,旨在帮助Java程序员深入理解和掌握分布式系统的设计与实现。以下将对其中涉及...
分布式Java应用知识点全景图,很全面,值得一读
在构建高性能的大型分布式Java应用时,我们面临的是复杂的技术挑战和优化目标。要实现这样的系统,我们需要深入了解Java平台的特点,以及如何利用其优势来处理大规模数据和高并发请求。以下是一些关键的知识点: 1....