前言
从2009年到2016年,笔者非常幸运地经历了网站PV从1亿到50亿的飞速发展历程,在此过程中积累了一些大流量高并发网站架构设计和优化的经验。从技术发展来看,笔者经历了Web应用系统从分布式、无线多端、中台到国际化的改造;在解决大流量问题的方向上,积累了很多从端的优化到管道到服务端甚至到基础环境优化的经验。
本书要表达的内容并不是简单罗列所做过的事情,而主要是帮助读者了解当网站遇到类似问题时,应如何思考不同的解决思路、为什么要这样做、如何做出最终的方案选……其实每种架构的选择必然有它专属的现实场景,因此本书涉及的这些话题也不一定就是最完美的解决方案。但,我希望本书的分享能启发大家在解决类似问题时的思考和判断。

很多网站早期都是基于Linux+Apache+MySQL+PHP架构的网站,从当时来看,这种非常流行的个人网站架构的确也非常匹配当时的发展状态。PHP语言的特性是快速发布,从页面渲染到数据库访问,均可以在一个页面里全部搞定。
即使放到今天,这种架构仍然还有很多人在用,它的优点就是非常简单高效,但.缺点也非常明显:扩展性和分布式不好,不适合企业级的、复杂业务逻辑的大规模协同开发。
随着网站的发展,大家觉得应该将PHP切换到Java。为什么要切换到Java语言呢?一般来说,企业选择开发语言会有如下考虑:
(1)语言本身的特性。每种语言开发出来都有它的特性和所适合的场景,像Python、PHP这类脚本语言非常适合快速简单的开发方式,而Java则比较适合构建复杂业务逻辑的企业级开发,但是开发效率会比PHP要差一点。
(2)程序员队伍。企业选择何种开发语言,还要看市场上的人才队伍是不是足够大,是不是有很高层次的人才。是否有高层次的人才,取决于当前的行业老大是不是也在用这种语言,比如当前的顶级互联网公司如果在用Java,那么自然这些公司的Java人才比较多,这样,他们的经验可以被快速复制到其他公司中。
(3)语言所对应的工具生态是否完善。一个语言是否有生命力,要看这个语言对应的生态工具是否完善,它的社区是否活跃。我们要用到各种工具,而我们也不可能自己去写每种工具,因此,是否能方便地利用开源工具,快速提升开发效率也是非常关键的。像现在很多大公司开源了很多Java的中间件产品,这些中间件可以直接拿来使用,就不需要再重新开发了。
综合以上因素,电商网站选择Java语言作为主要的系统开发语言是非常合适的。
正文
由于平台篇幅限制,小编只截出来了目录部分,有感兴趣的朋友可以滑到文末
第一章 构建大型网站: 分布式改造
- 为什么 要做分布式化
- 典型的分布式架构
- 分布式配置框架
- 分布式RPC框架
- 分布式消息框架
- 分布式数据层
- 分布式文件系统
- 应用的服务化改造
- 分布式化遇到的典型问题
- 分布式消息通道服务的设计
- 典型的分布式集群设计思路
- 总结

第二章 无线化: 无线时代下的架构演进
- 无线 环境下的新挑战
- 端的演进
- 无线链路的优化
- 服务端的演进
- 思考:开发语言选择的思考
- 总结

第三章 大型网站平台化演进:大中台小前台
- 为什么需要中台
- 什么是中台
- 提升中台的效率
- 中台是否能解决一切问题
- 总结

第四章 全球化下的网站演进:全球部署方案
- 国际化的背景
- 面临的技术挑战
- 全球部署的目标架构
- 何为单元化
- 单元化解决什么问题
- 单元化数据分片方案
- 数据路由方案
- 接入层路由
- 服务层路由
- 数据层路由
- Sequence ID的冲突问题.
- 异地多活
- 多语言问题
- 多时区问题
- 全球数据同步与数据路由
- 通用版 与定制版的选择
- 全球化部署中遇到的坑
- 总结

第五章 应用程序优化:代码级优化
- 优化思路
- 影响性能的关键因素
- Java 特性的优化
- 减少并发冲突
- 减少序列化
- 减少字符到字节的转换
- 使用长连接
- 总结

第六章 应用架构探索:合并部署
- 什么是架构
- 什么是合并部署
- 能解决什么问题
- 如何解决
- 取得的效果
- 更进一步地做多版本部署
- 关于高密度部署的思考
- 总结

第七章 链路优化:大秒系统的极致优化思
- 一些数据
- 热点隔离
- 动静分离
- 基于时间分片削峰
- 数据分层校验
- 实时热点发现
- 关键技术优化点
- 大促热点问题思考
- 总结

第八章 全局基础设施优化:资源调度优化
- 什么是资源调度
- 资源抽象层
- 物理资源调度
- 应用层调度
- 遇到的问题
- 总结

第九章 网站高可用建设:大型网站的稳定性建设
- 故障带来的影响
- 网站的可用性指标
- 稳定性建设思路
- 高可用体系化建设
- 研发人员的转变
- 稳定性组织保障
- 疑难问题排查思路
- 总结

