从部落到帝国 - 后端技术栈的演进及开源实践
作者 :coderxing
(目前全部篇幅完成30%左右,还在持续更新中... 目前版本更新于 2018.04.04)
在线阅读地址:https://coderxing.gitbooks.io/architecture-evolution/
关于本书
本书主要是讲述了一个互联网公司从几个人的小团队到成千上万人的过程中,后端技术栈是如何一步一步演变的,给架构师或者想成为架构师的同学以参考。现在市面上很多书籍都是针对某一个垂直技术领域,但个人认为,作为架构师不仅需要在某一领域比较精深,更需要一个知识的广度和视野,但市面上的此类书籍少之又少,而且很多也比较偏理论,感觉覆盖到的知识点不够全面,便由此萌生了编写一本相关书籍的念头。本人长期混迹于国内BAT企业,经历过也看到过一些技术栈的迭代升级的过程,所以将个人的所见所思并结合网上的一些资料整理下来,希望对后端架构师和想成为架构师的同学有所帮助。
本书的标题叫“从部落到帝国”,之所以以此为名,是因为曾经年少是非常喜欢玩一款游戏叫做“帝国时代”(不小心暴露了年龄(*^__^*) ),在游戏里从最初只有几个工人,几间草房,通过不断发展经济,不断升级主基地,才能建造更高级的建筑,和更高级的兵种,才能一步一步从“部落”形态走向“帝国文明”。再联想到我们后端技术架构的演进,从后台架构最初单机模式到分布式模式协同模式,组织结构从从一两个人的单兵模式发展到上千人的多兵种作战,这个技术架构的演技过程和游戏里从简单到复杂的是何其相似。
书中介绍了大量架构理论的的同时也介绍了大量的开源软件,技术架构的演进和选型旺旺就是对开源软件的选型,应该说在整个技术架构的演进过程中离不开开源软件的贡献,开源软件可以迅速帮助业务架速演进,避免重复造轮子,及时是BAT这样的巨头内部,也大量使用开源软件构建业务系统。可以说开源软件推动整个互联网技术的发展,这么说一点都不为过。
另外,个人认为这是一个“杂书”,覆盖的知识面比较广,但都是作为一名后端架构师的必备技能。本书的主要作用是从“上帝”视角帮助程序员和架构师要打造一个全局技术观,书中涉及到很多架构方面的知识点,是以最简单、易懂的方式来介绍,由于篇幅有限并不能讲的很透彻,包括很多开源软件也仅仅介常用的核心功能,并不能覆盖改领域或者软件的方方面面,需要更深入的理解请读者参考更专业的书籍。
本书将互联网公司后端技术栈的演变分为五个阶段:
- 第一篇:起源阶段,介绍一个产品诞生的过程中有哪些可以快速打造产品的方式,以及技术选型和架构设计的一些基本原则和注意事项。
- 第二篇:原始人阶段,在这个阶段,活下来最重要,本篇主要介绍在一个产品初期需要的基础技术平台和架构方式、和一些简单有效的奇淫巧技。
- 第三篇:部落阶段,这个阶段可谓麻雀虽小五脏俱全,虽然比不上大公司的规模,但人员角色配置和技术栈的广度相对来说比较齐备。在此阶段后端技术架构需要满足产品快速成长的需要,更加关注安全、稳定、可扩展性。
- 第四篇:文明阶段,到了文明阶段,可以说已经登上了历史的舞台,在市场上可能已经颇具影响力。在这个阶段需要更多的规范化和精细化。
- 第五篇:帝国阶段,能到帝国阶段,这样的公司或者产品在行业内已经屈指可数,此时更需要一些“高大上”的技术,以提高技术上的优势。
目录
-
-
-
1.1.4 为什么要谈技术栈的演进
1.2 关于开源
1.2.2 开源软件的选型原则
1.2.5 开源案例:阿里巴巴去IOE过程
1.2.5 常见的开源站点
-
-
第二篇:疯狂原始人
第四章:险中求生
-
-
4.1.1.2 MySQL Proxy 主从分离
-
4.3 性能之并发与异步化
- 4.3.1 多线程与并发
4.3.2 异步消息队列
-
4.4.2 简单的数据备份方式
4.4.3 日志切分与清理
-
4.4.4.1 命令行工具
4.4.5 服务器状态监测
4.4.5.2 可视化工具
-
第三篇:部落
第五章:麻雀虽小五脏俱全
-
5.3.2 bug 追踪工具
5.3.3 看板与Scrum
第六章:奔跑吧兄弟
-
6.1.2 LVS + Keepalived
6.1.4 HAProxy
-
6.2.1 高可用 MySQL 的几种方案
6.2.1.1 MySQL Fabric
6.2.1.2 DRDB 模式
6.2.1.3 HAProxy 方案
-
6.2.3.1 Sharding-jdbc
6.2.3.2 主键的生成
6.2.3.2 vitness
-
6.3.3 Redis 集群
6.3.3.1 Tewmproxy 架构
6.3.3.2 Redis Cluster
6.3.3.3 Codis 方案
6.4 安全与加密
6.4.1 Web 安全防范
6.4.1.1 XSS 跨站攻击
6.4.2 漏洞扫描工具
6.4.2.3 openvas
6.4.3 数据加密
6.4.2.3 HTTPS 链路加密
6.4.4 服务器端安全
6.4.3.1 硬件防火墙
6.4.3.2 Iptable 防火墙
6.4.3.3 入侵检测
6.5 持续集成
6.5.1 Jenkins
6.5.2 RPM 部署方式
6.6 埋点统计系统
6.6.1 免费埋点统计服务
6.6.3 服务端埋点
-
第四篇:文明降临
第七章:三百六十行
7.3 建立办公网
- 7.3.1 LDAP
7.4 网络隔离
7.5 代码质量管理
7.5.1 代码规范
7.5.2 代码 review 机制
7.5.3 SnoarQube
7.5.4 PMD
7.6 敏捷开发
第八章:走向现代化
8.1 分布式一致
8.1.1 分布式事务
8.1.3 幂等性
8.1.4 MVCC 多版本控制
8.1.5 CAP 理论
8.2 分布式RPC与服务治理
8.2.1 Thrift 架构
8.2.2 Dubbo
8.2.3 Restful 架构
8.3 性能追踪
8.3.1 pinpoint
8.3.2 ziplin 分布式追踪系统
8.3.3 开源 APM 解决方案
8.4 搜索引擎
8.4.1 Elasticsearch
8.4.2 sphinx
8.4.2 Solr
8.5 分布式调度
8.5.1 分布式调度 Quartz
8.5.3 horae
第五篇:帝国时代
第九章:版图扩张
-
9.3.1 工程师文化
9.3.2 影响力建设
-
10.1 大数据
10.1.2 Hive
10.1.3 数据同步
10.1.4 Spark
10.1.5 Hbase
10.2 日志收集
10.2.1 ELK 技术栈
Flume
Gaylog
10.3 弹性计算
- 10.3.1 Docker
10.4 微服务架构
10.5 容灾
10.5.1 Hystrix 框架
10.5.2 异地容灾
10.5.3 raid
10.6 压力测试
10.6.1 开源压测工具
10.6.1.1 AD 等单机压测工具
10.6.2 全链路压测
10.7 私有云
- 10.7.1 openstack
10.8 灰度发布
10.9 实时计算
10.10 人工智能
- 10.10.1 TensorFlow
第六篇
- 第十一章:各大互联网公司架构演进案例
- 第十二章:架构师的素质