出版时间:2010年6月 出版社:电子工业出版社 作者:林昊 页数:274
Tag标签:无
前言
软件系统得到用户认可后,访问量通常会产生爆发性的增长,互联网网站,例如淘宝、豆瓣等更是如此。在不断完善功能和多元化发展的同时,如何应对不断上涨的访问量、数据量是互联网应用面临的最大挑战。 对于用户而言,除了功能以外,网站访问够不够快,网站能否持续提供服务,也是影响用户访问量的重要因素,因此如何保证网站的高性能,及高可用也是我们要关注的重点。 为了支撑巨大的访问量和数据量,通常需要海量的机器,例如现在的google已经拥有了百万台以上的机器,这些机器耗费了巨大的成本(硬件采购成本、机器的电力成本、网络带宽成本等)。网站规模越大,运维成本就越高,这意味着商业公司所能获得的利润越低,而通常这会导致商业公司必须从多种角度关注如何降低网站运维成本。 本书的目的是从以上几个问题出发,介绍搭建高性能、高可用以及可伸缩的分布式Java应用所需的关键技术。 目标读者 本书涵盖了编写高性能、高可用以及可伸缩的分布式.1ava应用所需的知识点,适合希望掌握这些知识点的读者。 在介绍各个知识点时,作者尽量结合自己的工作,分享经验与心得,希望能够对那些有相关工作经验的读者有所帮助。
内容概要
介绍分布式Java应用涉及的知识点,分为基于Java实现网络通信、RPC;基于SOA实现大型分布式Java应用;编写高性能Java应用;构建高可用、可伸缩的系统四个部分,共七章内容。作者结合自己在淘宝网的实际工作经验展开论述,既可作供初学者学习,也可供同行参考。
作者简介
林昊,淘宝网架构师China OSGi User Group Director。2006年开始在商业产品中使用OSGi,并结合自己的经验编写了《OSGi实践》、《OSGi进阶》两篇0pendoc以及《OSGi原理与最佳实践》一书,推动了OSGi在国内的使用。2007年进入淘宝,负责淘宝服务框架的开发,此框架目前每天承担了100亿以上的服务请求量。个人关注的方向为模块化、动态化Java系统,以及高性能、高可用、低成本的大型分布式Java系统的构建。
书籍目录
前言第1章 分布式Java应用1.1 基于消息方式实现系统间的通信1.1.1 基于Java自身技术实现消息方式的系统间通信1.1.2 基于开源框架实现消息方式的系统间通信1.2 基于远程调用方式实现系统间的通信1.2.1 基于Java自身技术实现远程调用方式的系统间通信1.2.2 基于开源框架实现远程调用方式的系统间通信第2章 大型分布式Java应用与SOA2.1 基于SCA实现SOA平台2.2 基于ESB实现SOA平台2.3 基于Tuscany实现SOA平台2.4 基于Mule实现SOA平台第3章 深入理解JVM3.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章 分布式Java应用与Sun JDK类库4.1 集合包4.1.1 ArrayList4.1.2 LinkedList4.1.3 Vector4.1.4 Stack4.1.5 HashSet4.1.6 TreeSet4.1.7 HashMap4.1.8 TreeMap4.1.9 性能测试4.1.1 0小结4.2 并发包(java.util.concurrent)4.2.1 ConcurrentHashMap4.2.2 CopyOnWriteArrayList4.2.3 CopyOnWriteArraySet4.2.4 ArrayBlockingQueue4.2.5 AtomicInteger4.2.6 ThreadPoolExecutor4.2.7 Executors4.2.8 FutureTask4.2.9 Semaphore4.2.10 CountDownLatch4.2.11 CyclicBarrier4.2.12 ReentrantLock4.2.13 Condition4.2.14 ReentrantReadWriteLock4.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 提升计算能力
章节摘录
第1章 分布式Java应用 大型应用通常会拆分为多个子系统来实现,对于Java来说,这些子系统可能部署在同一台机器的多个不同的JVM中,也可能部署在不同的机器上,但这些子系统又不是完全独立的,要相互通信来共同实现业务功能,对于此类Java应用,我们称之为分布式Java应用。 Martin Fowler在《企业应用架构模式》一书中曾经说过:“能不用分布式的情况下就不要用分布式”,当应用变为分布式Java应用时,会很大程度地增加应用实现的技术复杂度,对于分布式Java应用,通常有两种典型的方法来实现。 1.基于消息方式实现系统间的通信 当系统之间要通信时,就向外发送消息,消息可以是字节流、字节数组,甚至是Java对象,其他系统接收到消息后则进行相应的业务处理。 消息方式的系统间通信,通常基于网络协议来实现,常用的实现系统间通信的协议有:TCP/IP和UDP/IP。 TCP/IP是一种可靠的网络数据传输的协议。TCP/IP要求通信双方首先建立连接,之后再进行数据的传输。TCP/IP负责保证数据传输的可靠性,包括数据的可到达、数据到达的顺序等,但由于TCP/IP需要保证连接及数据传输的可靠,因此可能会牺牲一些性能。 UDP/IP是一种不保证数据一定到达的网络数据传输协议。UDP/IP并不直接给通信的双方建立连接,而是发送到网络上进行传递。由于UDP/IP不建立连接,并且不能保证数据传输的可靠,因此性能上表现相对较好,但可能会出现数据丢失以及数据乱序的现象。
媒体关注与评论
林昊总结了在淘宝进行大规模Java应用的经验,呕心沥血写出的这本书既有理论深度,叉具有极强的实战指导意义,升级指南,不得不读。 ——人间网创始人,CTO 曹晓钢 在概念满天飞的浮躁时代,林昊以朴实的文字和扎实的基础,由浅入深介绍分布式应用设计开发的架构和技术细节?在豆瓣正向SOA转型的节骨眼儿得到这样一本书,真是恰逢甘霖。 ——豆瓣架构师 洪强宁 本书不仅深入分析了大规模Java系统间通讯、SOA架构、集群、可伸缩和高可用性系统,还有难得一见的JVM内幕分析和对CPU、IO、内存的性能调优实践,对开发高性能系统相当有帮助。 ——搜狐工程师 邓正平 本书详述了构建大型分布式Java应用的相关知识与应用场景,使用大量代码进行实例分析,对构建高可用系统帮助很大,遗憾的是对系统架构集成等方面的影响未做更深入的讨论。 ——网易杭州研究院工程师 尧飘海 在互联网领域,性能调优、分布式、高可用、可伸缩等总是困扰着大家,少有高手分享实战经验,一书难求。这本书系统分析了上述典型问题,并给出了多种解决方案和扩展阅读,着实让我过了一把瘾。期待着林昊今后还能在系统层面和原理层面做更深入的分享。 ——中国移动数据业务运营中心门户技术部经理 朱岩 国内大部分Java工程师了解的知识面都偏向于SSH、MVVC框架等,精通高访问量托并发应用的Java技术人员奇缺。本书讲到的构建可伸缩系统章节非常实用,不少方法我们也正在使用。书中对性能调优的介绍也非常专业和深入,对于大型系统的调优具有极大的参考价值。 ——新浪架构师 杨卫华 对于大型分布式应用和性能,很多书或陷入细节,或流于空谈,本书则把细节、架构、底层、应用平衡得很好,技术功底之外,更有写作的诚意、,若语言能更生动一些,可读性会更好。 ——瑞友科技(原用友软件工程公司)IT应用研究院副院长 池建强 Java类图书,汗牛充栋,有关分布式高可用系统架的书却很稀少,本书填补了这方面的空白。即便是非Java类开发者,也能从中学到大型分布式高可用系统的设计方法和思路。 ——上海盛大网络发展有限公司 技术保障中心总监资深研究员 陈桂新 对每一个新的知识点,作者都列出了很多链接,供读者进一步学习。期待这本书让更多人受益。 ——上海赢思软件技术有限公司资深系统/网络安全架构师 陈成才
编辑推荐
8年技术生涯,让自已感触最深的是视野以及专业的重妻。 在面临问题时,开阔的视野就像是一本书的目录,提供了方向的指导:专业则代表了在一个或多个领域杰出的解决问题的能力。这些能力一方面需要建立在开阔的视野基础上。另一方面则需要建立在不浪费自己工作环境的基础上。 开阔的视野可以让自己看到更多好的经验、知识,但在没有实践之前这些终归都只是理论。结合自己的兴趣点。将对自己工作有益、同时对公司有益的经验、知识结合到实际的工作环境中,让自己的成长与公司的成长同步。才能真正拥有这些知识和经验,让自己在某些领域具备更为突出的能力,在专业上“有自己的地盘儿”。
图书封面
图书标签Tags
无
评论、评分、阅读与下载