新書推薦:
《
甲骨拼合六集
》
售價:NT$
1520.0
《
视觉美食家:商业摄影实战与创意解析
》
售價:NT$
602.0
《
中国经济发展的新阶段:机会与选择
》
售價:NT$
454.0
《
DK月季玫瑰百科
》
售價:NT$
959.0
《
为你想要的生活
》
售價:NT$
301.0
《
关键改变:如何实现自我蜕变
》
售價:NT$
352.0
《
超加工人群:为什么有些食物让人一吃就停不下来
》
售價:NT$
454.0
《
历史的教训(浓缩《文明的故事》精华,总结历史教训的独特见解)
》
售價:NT$
286.0
|
編輯推薦: |
资深架构师全面总结多年积累的实际项目架构经验深入剖析和还原大型网站架构设计过程,并归纳出架构设计的思想与核心问题三位知名公司的资深架构师倾情力荐将大型网站架构分为前端架构、后端架构、云计算服务架构和整体架构进行讲解以开发成本与软件质量为核心,高度还原真实网站架构设计项目的思考方式提出“顶层架构”的概念,讨论如何构建一个可持续迭代升级的大型网站系统特意绘制了160余幅示意图,辅助读者更加直观地理解架构设计将架构思想与具体问题相对应,帮助读者更好地理解架构设计的思想详解单点登录系统、媒体库管理系统和直播系统的架构设计
|
內容簡介: |
本书从大型网站架构的发展历程出发,逐步深入介绍大型网站架构的各个部分,并在后配合实战案例,详细介绍大型网站架构需要关注的问题及其解决方法,让读者不但可以消除对大型网站架构的神秘感,而且还可以对大型网站架构有更加深入的理解。本书共10章,分为4篇。第1篇“大型网站架构的发展与面临的挑战”,主要介绍大型网站业务和架构的发展,以及大型网站架构面临的挑战;第2篇“大型网站架构的技术细节”,主要介绍前端架构、后端架构、云计算服务架构和整体架构等内容;第3篇“大型网站架构实战案例”,主要介绍单点登录系统架构设计、媒体库管理系统架构设计和直播系统架构设计的相关内容;第4篇“未来架构的设想”,主要介绍作者对未来架构的一些设想和看法。本书从实际问题出发,问题与技术相呼应,一步一步地剖析和还原大型网站架构设计,内容通俗易懂,实用性强,特别适合大型网站架构的入门与进阶读者阅读,也适合其他对大型网站架构和云计算感兴趣的读者阅读。
|
關於作者: |
梁嘉祯 架构师,自由职业者。曾任职于东软集团,从事Web全栈(前端、后端和云计算)开发,并参与项目架构设计。曾参与过多个合同额亿级和千万级的国内外软件项目,作为架构师或项目经理主导过多个合同额从百万级到五百万级的网站系统项目。现为自由职业者,提供架构咨询服务。本书写作过程中为一个合同额五百万级的社区网站系统提供全部的架构服务。深受本科专业涉及的工业、机械和化学思想的影响,持续思考和实践工业化项目过程、机械化软件结构和化学化编码呈现。拥有三套自主研发的前端、后端和云计算架构,经历过多个项目实践,能让大型项目缩减近一半的人力成本。
|
目錄:
|
前言第1篇 大型网站架构的发展与面临的挑战第1章 大型网站业务和架构的发展21.1 大型网站的业务演变21.1.1 静态网站的出现21.1.2 动态网站的出现31.1.3 大型网站系统的出现41.1.4 大型云计算网站系统的出现61.1.5 大型网站的未来71.2 大型网站架构的发展81.2.1 动态网页时代81.2.2 B/S架构网站的崛起81.2.3 CDN加速网站响应101.2.4 应用和数据分离111.2.5 非关系型数据库和关系型数据库并存111.2.6 集群化121.2.7 分布式趋势131.2.8 微服务151.2.9 大型网站架构的未来151.3 小结16第2章 大型网站架构面临的挑战172.1 大型网站架构的基本问题172.1.1 业务架构面临的挑战172.1.2 技术架构面临的挑战202.1.3 业务架构和技术架构的相互成全212.2 业务架构的基本思路212.2.1 递进思想222.2.2 版本计划逐渐完善242.2.3 持续优化,推陈出新252.3 技术架构的基本思路262.3.1 分层思想262.3.2 IaaS、PaaS和SaaS分层管理272.3.3 前端、后端和云计算服务分层开发282.4 大型网站技术架构的核心问题302.4.1 性能问题302.4.2 可用性问题302.4.3 伸缩性问题312.4.4 扩展性问题312.4.5 安全性问题322.5 小结32第2篇 大型网站架构的技术细节第3章 前端架构343.1 前端的工作原理343.1.1 Web服务器搭建343.1.2 构造一个简单的网页383.1.3 前端网页的工作原理413.2 前端架构需要解决的问题473.2.1 规整化概述473.2.2 适配性和兼容性概述493.2.3 模块化概述503.2.4 单页应用概述513.3 规整化533.3.1 编码规范533.3.2 JavaScript库593.3.3 组件工具箱613.3.4 框架643.4 适配性和兼容性713.4.1 响应式布局713.4.2 整体布局733.4.3 模块布局773.4.4 适配性测试783.4.5 浏览器兼容793.5 模块化813.5.1 模块化的方法823.5.2 现今前端模块化的困局863.5.3 自研框架Trick873.6 单页应用883.6.1 单页应用用到的方法883.6.2 单页应用的发展趋势903.7 小结91第4章 后端架构924.1 后端的工作原理924.1.1 后端开发语言及框架924.1.2 搭建Web应用服务器944.1.3 构造一个简单的后端应用程序1054.1.4 后端应用程序的工作原理1144.2 后端架构需要解决的问题1204.2.1 规整化概述1214.2.2 数据库概述1224.2.3 非关系型数据库概述1224.2.4 整合其他应用程序1234.3 规整化1244.3.1 接口设计1244.3.2 编码规范1324.3.3 集中配置1404.3.4 Cookie和Session1454.3.5 应用拆分和协调1484.3.6 日志1494.3.7 自研框架Once1594.4 数据库1614.4.1 数据库对比1614.4.2 数据库的工作原理1624.4.3 数据库设计1644.4.4 数据库操作框架1684.4.5 数据库事务1754.4.6 分布式事务1784.5 非关系型数据库1884.5.1 键值存储非关系型数据库1884.5.2 列存储非关系型数据库1904.5.3 文档型非关系型数据库1914.5.4 图形非关系型数据库1914.6 小结192第5章 云计算服务架构1935.1 云计算服务的工作原理1935.1.1 云计算服务的应用场景1935.1.2 云计算开发语言及其框架1945.1.3 云计算服务软件的工作原理1955.2 云计算服务架构需要解决的问题2005.2.1 云计算服务软件基础框架构建概述2015.2.2 任务池与指令池的搭建和使用概述2025.2.3 进度数据池与状态数据池的搭建和使用概述2025.2.4 监控软件的构造概述2025.3 云计算服务软件基础框架的构建2035.3.1 进程与线程2035.3.2 线程同步2055.3.3 线程模型2115.3.4 软件结构2185.4 任务池与指令池的搭建和使用2195.4.1 消息队列2195.4.2 RabbitMQ消息队列2215.4.3 任务池的搭建与使用2325.4.4 指令池的搭建与使用2345.5 进度数据池与状态数据池的搭建和使用2375.5.1 公共数据空间2375.5.2 Redis数据库2395.5.3 进度数据池的搭建与使用2475.5.4 状态数据池的搭建与使用2485.6 监控软件的构造2495.6.1 软件结构2495.6.2 Supervisor监控软件2535.7 小结254第6章 整体架构2556.1 网站系统的基本结构2556.1.1 前端部分的基本结构2556.1.2 后端部分的基本结构2576.1.3 云计算服务部分的基础结构2586.1.4 网站系统的基本结构2596.2 整体架构需要解决的问题2606.2.1 性能概述2606.2.2 可用性概述2606.2.3 伸缩性概述2616.2.4 扩展性概述2616.2.5 安全性概述2616.3 性能2626.3.1 性能指标2626.3.2 压力测试2666.3.3 性能调优的基本思路2716.3.4 服务器性能调优2746.3.5 Nginx调优2806.3.6 CDN加速2836.3.7 浏览器访问页面的过程优化2846.3.8 Tomcat调优2856.3.9 缓存与静态文件2876.3.10 数据库性能优化2886.3.11 数据库集群2896.3.12 分布式文件系统2936.3.13 集群部署与分布式部署2946.4 可用性2976.4.1 服务器的定期维护与监控2976.4.2 服务器热备份2986.4.3 日志机制2996.4.4 环境分离与灰度发布2996.5 伸缩性3006.5.1 伸缩指标与伸缩策略3006.5.2 动态弹性伸缩的局限3006.6 安全性3016.6.1 安全堡垒机3016.6.2 接口鉴权3026.6.3 SQL盲注3026.6.4 跨域3036.7 小结305第3篇 大型网站架构实战案例第7章 单点登录系统架构设计3087.1 单点登录系统的关键问题3087.1.1 为什么需要单点登录系统3087.1.2 单点登录系统需要解决的关键问题3097.2 单点登录系统的详细架构设计3107.2.1 统一的登录与注册入口3107.2.2 与其他子系统共享用户登录信息3117.2.3 集中管理用户的基本信息3127.3 小结313第8章 媒体库管理系统架构设计3148.1 媒体库管理系统的关键问题3148.1.1 为什么需要媒体库管理系统3148.1.2 媒体库管理系统需要解决的关键问题3158.2 媒体库管理系统的详细架构设计3158.2.1 统一的媒体文件上传入口和资源选择机制3168.2.2 媒体文件的删除机制3178.2.3 提供自动处理媒体文件等功能3188.3 小结319第9章 直播系统架构设计3209.1 直播系统的关键问题3209.1.1 为什么需要直播系统3209.1.2 直播系统需要解决的关键问题3219.2 直播系统的详细架构设计3219.2.1 明确直播场景3219.2.2 基础系统架构3229.2.3 直播流接收3239.2.4 直播流处理3239.2.5 直播观看3259.3 小结326第4篇 未来架构的设想第10章 未来架构32810.1 理解架构32810.1.1 架构是什么32810.1.2 顶层架构33210.1.3 架构与技术33310.2 软件行业的发展33410.2.1 软件行业的现状33410.2.2 软件行业的发展方向33410.2.3 不断发展的结局33410.3 未来架构的方向33510.3.1 人力效率增加33510.3.2 人力资本转化成物力资本33610.3.3 物力资本汇聚成生态33710.4 小结338
|
內容試閱:
|
互联网的发展速度超出了大部分人的预期。淘宝等购物平台、斗鱼等直播平台、抖音等短视频平台和头条号等自媒体平台像雨后春笋般相继涌现,它们都属于大型网站平台。随着互联网的持续发展,未来一定还会出现更多的大型网站。成功的大型网站虽然是凤毛麟角,但是它们会成为行业的标杆,会拉动大型网站的需求,使得大型网站带来的项目机会越来越多。 大型网站不仅要处理复杂、凌乱且时刻变化的业务需求,还要应对大量的用户访问和数据处理;而且随着近些年云计算的兴起,大型网站越来越复杂。因此,搭建一个大型网站不再是几个软件工程师就能完成的。大型网站要有更加全面的架构设计、更加复杂的功能和更加强大的处理能力,其对项目开发人才的要求也越来越高。理解大型网站架构是应聘互联网开发岗位的必要条件,也是一个加分项,更是成为架构师的前提。 在笔者职业生涯的开端,曾参与了一个合同额每年亿元级的软件项目。该项目有一个独特的架构,可以让开发人员近似千人一面地完成开发工作,加之该项目有严谨的项目管理流程,使得它迭代十几年至今。之后笔者参与了一个不太成功的大型网站项目(合同额千万元级),其程序凌乱不堪,即使工程师们各显神通,后成本还是严重超标,运维成本也非常高。 那个不太成功的大型网站项目采用了当时的前端框架Angular 2和微服务框架,高并发和高可用性设计等也都采用当时较为流行的方案,但开发出来的软件质量却很差。这让笔者深深地体会到,仅靠框架和技术很难保证软件的质量,高质量的软件还依赖于良好的架构设计。架构设计不仅要选取现成的软件工具,而且还需要思考软件本身的结构,另外还需要约束软件开发的过程。 对大型网站来说,想在项目之初就设计好架构,这确实是一件十分困难的事情。因为一个成熟的大型网站系统是非常复杂的,其涉及的问题也非常多,再加上工期等客观条件的限制,导致架构设计很多时候是滞后于开发的,开发过程也很难被约束。 其实,在项目之初并不需要把大型网站整个架构都设计好,只需要解决一些关键问题即可,其他问题可以在项目迭代的过程中解决。那么,大型网站架构需要解决哪些关键问题呢?其实所谓关键问题都是经验之谈。解决好这些关键问题,在能提高项目质量的同时还能降低项目的成本。 为了帮助读者全面、系统地学习大型网站架构设计的相关知识,笔者编写了本书,给出了自己对相关问题的思考,并对多年的从业经验进行了总结,相信对相关读者会有所帮助。本书特色* 内容新颖:讲解时涉及的大部分软件都采用版本(截至完稿时)。* 内容完善:全面介绍大型网站架构设计的发展和面临的挑战,以及前端架构、后端架构、云计算服务架构和整体架构的技术细节,并详解3个典型的大型网站架构设计案例,后对笔者所理解的未来架构设计做必要介绍。* 案例典型:详细介绍单点登录系统、媒体库管理系统和直播系统的架构设计。* 问题驱动:从问题出发,问题与技术相对应,一步步地剖析和还原大型网站架构设计,帮助读者更好地理解相关的知识。* 经验总结:全面归纳和总结笔者经历的几个大型网站项目的实践经验。* 图文并茂:提供160余幅示意图帮助读者更加直观地理解相关内容。* 实用性强:结合具体示例讲解知识点,便于读者理解和掌握。本书内容 第1篇 大型网站架构的发展与面临的挑战 本篇涵盖第1、2章,主要介绍大型网站架构的发展与面临的挑战。架构分为业务架构与技术架构,本篇从宏观上介绍业务架构与技术架构,以及它们之间的关系。 第2篇 大型网站架构的技术细节 本篇涵盖第3~6章,详细介绍大型网站架构的技术细节。本篇把大型网站架构细分为前端架构、后端架构、云计算服务架构和整体架构4个部分,分别介绍每部分需要解决的关键问题及其解决方法。本篇结合实际项目介绍相关知识点,以帮助读者更加深刻地理解大型网站架构。 第3篇 大型网站架构实战案例 本篇涵盖第7~9章,选取几个较为通用且典型的网站系统作为案例,还原这些系统的架构设计,以帮助读者进一步深入理解大型网站架构。 第4篇 未来架构的设想 本篇涵盖第10章,介绍笔者对未来架构的设想。本篇内容虽然是一家之言,但是笔者认为,架构设计是开放的,软件世界是无限包容的,其美好是从想象开始的。读者对象* 网站系统架构师;* 网站系统开发人员;* 云计算开发人员;* 网站系统运维人员;* 网站开发项目经理;* 对大型网站架构感兴趣的人员;* 各类院校学习网站架构的学生;* 专业培训机构的相关学员。本书配套资源 本书涉及的源代码需要读者自行下载,请在华章公司的网站(www.hzbook.com)上搜索到本书,然后单击“资料下载”按钮,即可在本书页面上找到下载链接进行下载。意见反馈 鉴于笔者的水平所限,书中可能还存在一些疏漏,敬请各位读者指正。阅读本书时如果有疑问,可以发送电子邮件到yiigaa@126.com或hzb
|
|