出版社: 电子工业出版社 ISBN:9787121335723版次:1商品编码:12308233品牌:Broadview包装:平装开本:16出版时间:2018-03-01用纸:胶版纸页数:580
编辑推荐
√ 云时代架构系列经典!重磅级架构书2018年重磅上市!
√ 详解高可用架构设计的核心要点:可伸缩与可扩展
√ 详解分布式发号器、消息队列框架、数据库分库分表、缓存、Elasticsearch、分布式调度任务、RPC服务、Dubbo、高性能网络代理中间件等
√ 全面破解可伸缩服务架构的奥秘
√ 分布式服务架构:原理、设计与实战读者的配套技能升级架构书。
内容简介
《可伸缩服务架构:框架与中间件》以高可用服务架构为主题,侧重于讲解高可用架构设计的核心要点:可伸缩和可扩展,从应用层、数据库、缓存、消息队列、大数据查询系统、分布式定时任务调度系统、微服务等层面详细讲解如何设计可伸缩、可扩展的框架,并给出在各个领域解决特定问题的方法论和实践总结。随着《可伸缩服务架构:框架与中间件》的出版,我们还开源了4个行之有效的互联网可伸缩框架,包括数据库分库分表dbsplit、缓存分片redic、专业的发号器vesta和消息队列处理机框架kclient,每个框架都开箱即用,也可以作为学习互联网平台化框架搭建的素材,更可以作为开发开源项目的示例。
《可伸缩服务架构:框架与中间件》的上册《分布式服务架构:原理、设计与实战》详细介绍了如何解决线上高并发服务的一致性、高性能、高可用、敏捷等痛点,《可伸缩服务架构:框架与中间件》与上册结合后可覆盖保证线上高并发服务的各个主题:一致性、高性能、高可用、可伸缩、可扩展、敏捷性等,每个主题都是一个方法论。充分理解这些主题,可保障线上服务健壮运行,对实现服务稳定性的n个9有着不可估量的作用。
无论是对于互联网的或者传统的软件工程师、测试工程师、架构师,还是对于深耕于IT的其他管理人员,《可伸缩服务架构:框架与中间件》都有很强的借鉴性和参考价值,是值得每个技术人员阅读的架构级技术书。
作者简介
李艳鹏
“云时代架构”技术社区创始人,著有《分布式服务架构:原理、设计与实战》,现任某知名支付平台架构组负责人,曾在花旗银行、甲骨文、路透社、新浪微博等大型IT互联网公司担任技术负责人和架构师,现专注于大规模高并发的线上和线下支付平台的应用架构和技术架构的规划与落地,负责交易、支付、渠道、出款、风控、对账等核心支付系统的设计与实现,在移动支付、聚合支付、合规账户、扫码支付、标记化支付等业务场景上有产品应用架构规划与落地的实践经验。
杨彪
现任游戏创业公司技术总监及合伙人,“云时代架构”技术社区合伙创始人,CSDN达人课讲师,著有《分布式服务架构:原理、设计与实战》。在互联网和游戏行业有近十年工作经验,曾在酷我音乐盒、人人游戏和掌趣科技等上市公司担任核心研发职位,在互联网公司做过日活跃用户量达千万的项目,也在游戏公司做过多款月流水千万以上的游戏。
李海亮
现任某互联网公司搜索研发经理,有近十年互联网公司的搜索及搜索相关的研发经验
贾博岩
现任某支付公司高级开发工程师,专注于支付系统领域的开发,例如商户入网、商户对外出款等业务。标准90后,喜欢钻研技术,维护个人简书博客“贾博岩”。
刘淏
现任某互联网公司技术专家,长期在外企从事技术经理和架构工作,对数据库应用及搜索引擎应用有很深入的理解和实践;有大型数据服务集群的架构调优及运维经验;精通性能问题的解决与调优,以及高性能中间件的编写。目前主要研究业务数据自动化框架及其实现。
精彩书评
如何实现可伸缩架构,是互联网应用面临业务的高速发展时亟须解决的问题,而可伸缩性和高可用性往往是稳定性设计的基石。诸多国外优秀书籍都偏于讲解实践指导原则,读者在面临具体场景时仍然难得其法。因此我在两年前召集了几位志同道合的朋友编写了《深入分布式缓存》,期望能贯通从原理到实践的内容。更可喜的是,艳鹏和杨彪诸君更进一步地呈现了满满都是案例及干货的《可伸缩服务架构:框架与中间件》,本书从分布式发号器、消息队列框架、数据库分库分表、缓存、Elasticsearch、分布式调度任务、RPC服务、Dubbo、高性能网络代理中间件等方面,全面破解了可伸缩服务架构的奥秘,并与《分布式服务架构:原理、设计与实战》相结合,阐述了互联网高可用、高性能、高并发、可伸缩、可扩展、敏捷性等核心要点,值得广大从业人员阅读。
蚂蚁金服高级技术专家 于君泽
分布式系统的设计是一门艺术,作者挥舞着六色画笔谱写了上下两卷:《分布式服务架构:原理、设计与实战》和《可伸缩服务架构:框架与中间件》,在这两卷书里,一致性、高性能、高可用、可伸缩、可扩展、敏捷性等精彩内容皆信手拈来。我在多年前和杨彪相识,工作时一起调Bug,休闲时一起读书,今又与艳鹏结识,如今他们已经成为技术的布道者。
在技术的道路上前行,冷暖自知,却能收获内心的平和。愿这两卷书能够感召更多的朋友,共同享受技术的艺术,享受成长的富足。
BitTiger Co-CEO、北大博士 冯沁原
本书承接《分布式服务架构:原理、设计与实战》一书的主线,继续深入讲解分布式服务架构,对缓存、消息队列、分库分表、定时调用系统、RPC框架等进行了落地与实战讲解,读者可以通过本书实现分布式服务的高效落地。
畅销书《亿级流量网站架构核心技术》作者 开涛
在艳鹏和杨彪合著的《分布式服务架构:原理、设计与实战》中,我看到了分布式理论与实践相结合的全面总结,又从本书中看到了非常实用的分库分表方案、缓存分片方案、消息队列框架、发号器、RPC等互联网架构的重要知识,并在一些内容上开源了公司内部屡试不爽的互联网框架。通过阅读本书,能够更好地提升自己的技术能力,还能够以这些框架为基础搭建适合自己公司业务的轻量级框架,轻而易举地完成业务的功能需求和非功能质量需求。这是一本每个互联网技术人员都应该通读的优秀参考书籍。
开心网副总裁 杨延峰
本书以高可用服务架构为主线,侧重于讲解高可用架构设计的核心要点:可伸缩和可扩展,从数据库分片、缓存分片、消息队列框架、大数据查询系统、分布式定时任务调度系统、微服务RPC等层面,详细讲解了如何设计可伸缩和可扩展的框架,可见作者对分布式系统的理解和实践是深入骨髓的。希望每一位互联网架构师、开发者、技术专家、技术总监都通过本书获取精华,并将其应用到项目实践中,为项目的顺利进行保驾护航。
蚂蚁金服技术专家 张义明
能讲明白分布式架构并不容易,本书却做到了。在本书中,不论是对需求场景的剖析,还是对可行方案的仔细研磨及实现,都体现了架构师的专业素养和精益求精。这是一本分布式服务架构方面的好书。
皇包车CTO 贺伟
本书针对分布式服务架构中常用的缓存分片、数据库分库分表、消息队列、任务调度中间件、RPC、大数据查询系统等技术提供了典型的设计和实现,对我们设计和实现自己的互联网业务系统有重要的参考价值。
《程序员的成长课》作者 安晓辉
互联网业务是爆发式的,其带来的流量压力和对计算能力的要求也是不均衡的,利用廉价的计算机构建分布式计算环境已成为当下的选择。然而,可伸缩技术在带来高优势的同时,也带来技术上的变革和挑战。大家可以从本书提供的分库分表、缓存分片、消息队列框架、发号器等方案中吸取精髓,快速形成自己的认知,并在工作中积累经验和提升技能,以更好地为公司和团队效力。
企办信息技术有限公司CTO、云像数字技术顾问 马星光
随着企业业务量的增加,流量洪峰在不断挑战着业务系统的承载能力,设计高并发、可伸缩的系统已成为软件架构师的紧迫任务,而分布式、可伸缩的架构模式已成为抵御洪峰的有效方案之一。本书汇集了作者在多年核心系统开发中的架构及实践经验,以理论与案例相结合的方式展现了分布式系统设计、技术选型、可伸缩架构的设计、框架实现等方面的优秀实践。不管你是在从0到1构建系统,还是在寻找服务化治理的正确方向,本书都可以帮你解惑。
菜鸟网络技术专家 高春东
在《分布式服务架构:原理、设计与实战》中,作者通过多年的互联网架构经验,总结了服务化的背景和技术演进,提出了互联网项目技术评审的方法论和提纲,并给出了对真实的线上项目进行性能和容量评估的全过程,可帮助大家轻松地设计大规模、高并发的服务化系统,保证服务化项目按照既定的目标进行实施与落地,并保证系统的稳定性、可用性和高性能,等等。本书延续了《分布式服务架构:原理、设计与实战》的主线,继续讲解在分布式系统设计中非常重要的可伸缩架构设计模式,对数据库分库分表、缓存分片、消息队列处理框架、大数据查询系统、分布式定时任务系统、微服务和RPC等均有详细讲解,并开源了4个开箱即用的框架级项目,大家也可以以其为基础,开发适合自己的业务的分布式系统。
爱奇艺高级技术经理 黄福伟
在本书中,作者将理论与实践相结合,对分库分表、缓存、消息队列、大数据查询及分布式任务调度等的设计与使用进行了深入分析与讲解。本书内容丰富,可作为开发利器,值得参考。
金山云高级开发工程师 李雪冰
金融系统对高并发服务的一致性、高性能及高可用有着强烈的诉求,艳鹏及他的写作团队都是一线资深架构师,不仅有丰富的实践经验,还有深层次的理论基础。本书对高可用架构进行了深入讲解,使读者能够从体系化的角度认识和思考金融系统的本质,其中的方法论是经过实践检验的,更能在工作中应对特定领域的局部问题。
某金控集团总监 王志成
我和本书作者杨彪在多年前相识于工作中,他的踏实、认真给我留下了深刻的印象,后来因为《分布式服务架构:原理、设计与实战》,我又认识了艳鹏,他们的勤奋和刻苦让我非常佩服,也让我非常期待他们的新书。读书如读人,本书不仅展现了可伸缩架构的技术,更展现了作者孜孜不倦的精神。希望读者不仅能从书中学到互联网分布式架构的知识,更能学到不畏艰辛、知难而上的精神。
北大博士 贾涛
目录
第1章 如何设计一款永不重复的高性能分布式发号器 1
1.1 可选方案及技术选型 2
1.1.1 为什么不用UUID 2
1.1.2 基于数据库的实现方案 2
1.1.3 Snowflake开源项目 3
1.1.4 小结 4
1.2 分布式系统对发号器的基本需求 4
1.3 架构设计与核心要点 6
1.3.1 发布模式 6
1.3.2 ID类型 7
1.3.3 数据结构 7
1.3.4 并发 9
1.3.5 机器ID的分配 9
1.3.6 时间同步 10
1.3.7 设计验证 11
1.4 如何根据设计实现多场景的发号器 11
1.4.1 项目结构 12
1.4.2 服务接口的定义 14
1.4.3 服务接口的实现 15
1.4.4 ID元数据与长整型ID的互相转换 22
1.4.5 时间操作 25
1.4.6 机器ID的生成 27
1.4.7 小结 32
1.5 如何保证性能需求 32
1.5.1 嵌入发布模式的压测结果 33
1.5.2 中心服务器发布模式的压测结果 33
1.5.3 REST发布模式(Netty实现)的压测结果 33
1.5.4 REST发布模式(Spring Boot + Tomcat实现)的压测结果 34
1.5.5 性能测试总结 34
1.6 如何让用户快速使用 35
1.6.1 REST发布模式的使用指南 35
1.6.2 服务化模式的使用指南 38
1.6.3 嵌入发布模式的使用指南 41
1.7 为用户提供API文档 43
1.7.1 RESTful API文档 44
1.7.2 Java API文档 45
第2章 可灵活扩展的消息队列框架的设计与实现 49
2.1 背景介绍 50
2.2 项目目标 50
2.2.1 简单易用 50
2.2.2 高性能 51
2.2.3 高稳定性 51
2.3 架构难点 51
2.3.1 线程模型 51
2.3.2 异常处理 53
2.3.3 优雅关机 53
2.4 设计与实现 54
2.4.1 项目结构 54
2.4.2 项目包的规划 55
2.4.3 生产者的设计与实现 57
2.4.4 消费者的设计与实现 58
2.4.5 启动模块的设计与实现 67
2.4.6 消息处理器的体系结构 76
2.4.7 反射机制 79
2.4.8 模板项目的设计 80
2.5 使用指南 82
2.5.1 安装步骤 82
2.5.2 Java API 83
2.5.3 与Spring环境集成 84
2.5.4 对服务源码进行注解 85
2.6 API简介 87
2.6.1 Producer API 87
2.6.2 Consumer API 88
2.6.3 消息处理器 88
2.6.4 消息处理器定义的注解 90
2.7 消息处理机模板项目 91
2.7.1 快速开发向导 91
2.7.2 后台监控和管理 92
第3章 轻量级的数据库分库分表架构与框架 93
3.1 什么是分库分表 94
3.1.1 使用数据库的三个阶段 94
3.1.2 在什么情况下需要分库分表 95
3.1.3 分库分表的典型实例 96
3.2 三种分而治之的解决方案 97
3.2.1 客户端分片 97
3.2.2 代理分片 100
3.2.3 支持事务的分布式数据库 101
3.3 分库分表的架构设计 102
3.3.1 整体的切分方式 102
3.3.2 水平切分方式的路由过程和分片维度 106
3.3.3 分片后的事务处理机制 107
3.3.4 读写分离 119
3.3.5 分库分表引起的问题 119
3.4 流行代理分片框架Mycat的初体验 123
3.4.1 安装Mycat 123
3.4.2 配置Mycat 124
3.4.3 配置数据库节点 128
3.4.4 数据迁移 129
3.4.5 Mycat支持的分片规则 129
3.5 流行的客户端分片框架Sharding JDBC的初体验 138
3.5.1 Sharding JDBC简介 138
3.5.2 Sharding JDBC的功能 139
3.5.3 Sharding JDBC的使用 141
3.5.4 Sharding JDBC的使用限制 152
3.6 自研客户端分片框架dbsplit的设计、实现与使用 153
3.6.1 项目结构 154
3.6.2 包结构和执行流程 155
3.6.3 切片下标命名策略 159
3.6.4 SQL解析和组装 167
3.6.5 SQL实用程序 168
3.6.6 反射实用程序 173
3.6.7 分片规则的配置 177
3.6.8 支持分片的SplitJdbcTemplate和SimpleSplitJdbcTemplate接口API 179
3.6.9 JdbcTemplate的扩展SimpleJdbcTemplate接口API 184
3.6.10 用于创建分库分表数据库的脚本工具 187
3.6.11 使用dbsplit的一个简单示例 192
3.6.12 使用dbsplit的线上真实示例展示 199
第4章 缓存的本质和缓存使用的优秀实践 201
4.1 使用缓存的目的和问题 202
4.2 自相似,CPU的缓存和系统架构的缓存 203
4.2.1 CPU缓存的架构及性能 205
4.2.2 CPU缓存的运行过程分析 206
4.2.3 缓存行与伪共享 208
4.2.4 从CPU的体系架构到分布式的缓存架构 218
4.3 常用的分布式缓存解决方案 221
...
Java工程师修炼之道
作 译 者:杭建
出版时间:2018-03 千 字 数:541
版 次:01-01 页 数:404
开 本:16开
装 帧:
I S B N :9787121335013
换 版:
所属分类:科技 >> 计算机 >> 编程语言
纸质书定价:¥89.0
Java开发一直是当前互联网领域最火热的开发技能之一,Java工程师也一直是需求量非常大的开发职位。本书主要针对一名合格的Java工程师的必备技能做了大纲性的总结和阐述。本书内容包括了工程化、常用开发框架、数据存储、数据传输、Java编程高级知识、性能优化、安全技术等内容,基本涵盖了Java工程师需要掌握的绝大部分技能点。
目录
第1章 后端技术导言
1.1?后端基础设施
1.1.1?请求统一入口——API网关
1.1.2?业务应用和后端基础框架
1.1.3?缓存、数据库、搜索引擎、消息队列
1.1.4?文件存储
1.1.5?统一认证中心
1.1.6?单点登录系统
1.1.7?统一配置中心
1.1.8?服务治理框架
1.1.9?统一调度中心
1.1.10?统一日志服务
1.1.11?数据基础设施
1.1.12?故障监控
1.2?Java后端技术概览
1.2.1?软件开发的核心原则
1.2.2?软件开发的软件过程
1.2.3?日常开发常用工具
1.2.4?应用的运行环境
1.2.5?常用第三方服务
1.2.6?计算机基础科学知识
1.2.7?数据处理相关技能
1.2.8?Java编程知识
1.2.9?系统架构演化
1.2.10?典型的部署架构
1.3?如何学习后端技术
1.3.1?扎实的计算机基础知识
1.3.2?知其然更要知其所以然
1.3.3?动手实践
1.3.4?频繁练习
1.3.5?持续学习
1.3.6?自我总结
1.3.7?如何学习一门新技术
1.3.8?总结
第2章 Java项目与工程化
2.1?项目构建
2.1.1?传统构建工具——Ant
2.1.2?主流构建工具——Maven
2.1.3?新兴构建工具——Gradle
2.2?代码版本控制
2.2.1?集中式代码版本管理——SVN
2.2.2?分布式代码版本管理——Git
2.2.3?提交日志的规范
2.3?代码质量保证
2.3.1?使用单元测试保证代码质量
2.3.2?衡量单元测试的标准
2.3.3?开发规范与建议
第3章 开发框架
3.1?依赖注入
3.1.1?JSR-330依赖注入规范
3.1.2?Guice
3.1.3?PicoContainer
3.1.4?Dagger
3.1.5?Spring Framework
3.1.6?循环依赖问题
3.2?对象关系映射
3.2.1?表元数据的映射
3.2.2?CRUD以及属性的查询
3.2.3?查询缓存的使用
3.2.4?结果的映射
3.2.5?规范SQL书写的语句构建器
3.2.6?使用提示
3.3?日志
3.3.1?JDK Logging
3.3.2?Log4j
3.3.3?Log4j2
3.3.4?Logback
3.3.5?统一日志API的门面框架
3.3.6?统一日志框架的使用
3.4?Web MVC
3.4.1?为什么是Spring MVC
3.4.2?Spring MVC的请求处理流程
3.4.3?典型的配置方式
3.4.4?无XML的配置方式
3.4.5?对MVC应用做单元测试
3.4.6?验证Web请求的参数
3.4.7?使用异步Servlet
3.4.8?使用提示
第4章 Spring
4.1?Spring核心组件
4.1.1?Spring的双亲上下文机制
4.1.2?Spring中的事件机制
4.1.3?Bean的初始化和销毁
4.1.4?Bean的动态构造
4.1.5?注入集合、枚举、类的静态字段
4.1.6?面向方面编程——AOP
4.1.7?进阶XML的配置
4.1.8?无XML的配置方式
4.2?Spring数据操作框架
4.2.1?Spring JDBC
4.2.2?Spring Data Redis
4.2.3?Spring Data MongoDB
4.3?Spring Boot
4.3.1?Spring Boot使用示例
4.3.2?Spring Boot的运行原理
4.3.3?Spring Boot的组成模块
4.3.4?小结
4.4?Spring常用组件
4.4.1?表达式引擎——Spring Expression Language
4.4.2?远程过程访问的支持——Spring Remoting
4.4.3?Spring与JMX的集成
4.4.4?定时任务的支持——Spring Quartz
4.4.5?跨域请求的支持——Spring CORS
4.5?总结
第5章 数据存储
5.1?关系型数据库——MySQL
5.1.1?存储引擎
5.1.2?字符集和校对规则
5.1.3?索引的使用
5.1.4?查询缓存的使用
5.1.5?数据同步中的Binlog
5.1.6?事务机制
5.1.7?大表优化
5.1.8?高可用支持
5.1.9?使用提示
5.2?非关系型数据库
5.2.1?KV数据库
5.2.2?文档数据库——MongoDB
5.2.3?列数据库——HBase
5.3?缓存
5.3.1?本地缓存
5.3.2?分布式缓存——Redis
5.3.3?缓存设计的典型方案
5.4?搜索引擎——Elasticsearch
5.4.1?开源全文检索库——Apache Lucene
5.4.2?关键概念
5.4.3?查询的优化
5.4.4?内存的使用优化
5.4.5?开源日志管理方案——ELK
第6章 数据通信
6.1?RESTful架构风格
6.1.1?支持的操作
6.1.2?返回码
6.1.3?资源概念
6.1.4?数据的安全保障
6.1.5?请求的限流
6.1.6?超文本API
6.1.7?编写文档
6.1.8?RESTful API实现
6.2?远程过程调用——RPC
6.2.1?JDK自带的RPC——RMI
6.2.2?Hessian
6.2.3?Thrift
6.2.4?Dubbo
6.2.5?数据的序列化机制
6.2.6?使用提示
6.3?消息中间件
6.3.1?简单消息中间件——ActiveMQ
6.3.2?通用消息中间件——RabbitMQ
6.3.3?日志消息中间件——Kafka
6.3.4?本地消息队列
第7章 Java编程进阶
7.1?Java内存管理
7.1.1?JVM虚拟机内存
7.1.2?垃圾回收理论
7.1.3?常用垃圾回收器
7.2?Java网络编程
7.2.1?常见网络I/O模型
7.2.2?Java网络编程模型
7.3?Java并发编程
7.3.1?并发原理
7.3.2?并发思路
7.3.3?并发工具
7.3.4?并发编程建议
7.4?Java开发利器
7.4.1?Apache工具库——Apache Commons
7.4.2?Google工具库——Guava
7.4.3?最好用的时间库——Joda Time
7.4.4?高效JSON处理库——FastJson
7.4.5?高效Bean映射框架——Orika
7.5?Java新版本的特性
7.5.1?Java 7
7.5.2?Java 8
7.5.3?Java 9
7.6?总结
第8章 性能调优
8.1?调优准备
8.1.1?HotSpot虚拟机体系结构
8.1.2?操作系统的性能调优
8.1.3?系统常用诊断工具
8.1.4?JDK常用诊断工具
8.2?性能分析
8.2.1?CPU分析
8.2.2?内存分析
8.2.3?I/O分析
8.2.4?其他分析工具
8.3?性能调优
8.3.1?CPU调优
8.3.2?内存调优
8.3.3?I/O调优
8.3.4?其他优化建议
8.3.5?JVM参数配置
8.3.6?JVM性能增强
第9章 安全技术
9.1?Java加密
9.1.1?单向加密算法
9.1.2?对称加密算法
9.1.3?非对称加密算法
9.2?安全HTTP——HTTPS
9.2.1?安全协议——SSL/TLS
9.2.2?证书中心——CA
9.2.3?请求交互过程
9.2.4?性能优化
9.3?Web安全
9.3.1?跨站点脚本攻击
9.3.2?跨站点请求伪造
9.3.3?SQL注入攻击
9.3.4?基于约束条件的SQL攻击
9.3.5?分布式拒绝服务攻击——DDOS
9.3.6?会话固定攻击——Session fixation
附录A 代码构建常用命令
附录B Git常用命令
附录C MySQL常用命令
附录D MongoDB常用命令
附录E Java调优常用命令
评分
评分
评分
评分
评分
评分
评分
评分
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版权所有