写在前面-《大型网站技术原理:网站开发知识体系》
一、序
(一) 前言
之前的文章谈到了未来几年将以自我认知核心,从专业的深度和通用力的广度来全面《构建个人的知识体系》的想法,为了完成专业深度方面的这一知识体系,我将花半年左右的时间写一本自己专业领域的电子书。
(二)一些问题
1.为什么是一本书?
既然的一个知识体系,三两篇文章篇幅是容纳不了的,用目标导向的思维方式,直接当成一本书来写更加系统化。
另一方面,这本书未来也能成为个人品牌和能力上的强有力背书,在自我介绍时,“我有多年的软件开发经验”和“我有多年的软件开发经验,著有《大型网站技术原理》一书”,两者带来势能完全不是一个量级的。
2. 可能的受众?
虽然这本书是写给自己的,但还是希望可以分享给一部分人,这本书人群定位应该和我的经验相近,工作一到三年的开发者们。特别是以Java为开发语言,主要写业务代码,很少接触底层原理,没有一个完整的知识体系的开发者。
另一方面,我的目标也是在我工作刚好满三年的时候写完这本书。如果是工作在三年以上,也可以用来评估下,有没有达到我眼中三年经验的开发者该有专业积累。
3. 内容的取舍?
本书内容我会用价值思维的方式,尽量抓重点,只写与工作强相关的,即Java Web为核心的一列内容。
所以,本书不会详细解释每一个概念,也不会深入的某个复杂算法的具体实现这类问题,这些细节可以查看文章附录的参考资料获得,当然,必要的代码示例将使用Java或JavaScript。本书也不会写更底层的内容,比如操作系统、数据库、服务器的实现原理。
再举两个例子,比如加密,我们会谈到加密的历史背景和基本原理,不同的加密的类型和应用场景,以及适当分析加密算法如RSA的基本原理,但不会有详细到用数学证明来论证RSA的实现机制。
在网络协议这块,我们都知道有七层协议,但我只会着重写跟开发强相关的HTTP,TCP/IP等在内的三到四层,不会写数据链路层,物理层等接近硬件层次的内容。
4. 对我的的挑战?
对我来说,最大的挑战来源于知识积累的不足。虽然大学学的是计算机,但对底层原理的投入比较少。另外,我的工作也不是在中间件部门,所以对于中间件这块没有直接的开发经验。至于系统架构方面的经验就更少了。不过,正因为这样,才要写我不知道的东西,写会的东西跟抄一遍没啥区别。
5. 应该如何读?
很多人都听过过一句话,编程言语有很多,但编程思想是相通的。但是,这本书我想写的不仅仅是底层原理的相通,而是要超出编程这个领域,回到人的多元化思维中。
也就是我希望读者能看到的是,本书在真正写的是我在用结构化思维,系统思维,第一性原理这些思维方式。来构建一个网站开发方向的知识体系。
二、写作大纲
以下为本书暂定的大纲,会随着写作进程不断迭代。
三、内容概览
本书内容分为三篇:基本原理,核心模块和系统设计。
(一) 基本原理
在软件开发领域,各种语言,框架层出不穷,前几年的大数据,云计算和今年的人工智能更是给本来就火的计算机技术添了把火。但终究万变不离其宗,一些基本的原理都是相通的。
谈分布式系统时有分布式数据库、分布式缓存、分布式服务、分布式文件系统等等,但它们的一些底层原理,比如编码、协议、负载等思路都是一样的。
本章节将抛开语言和框架,回归到计算机技术的本质,谈谈其中原理和一些个人的思考。
(二) 核心模块
第二部分将以大型网站的主要模块(中间件)为切入点,比如分布式缓存,分布式服务等模块。前一部分的各种原理将悉数登场。
当然我们也会深入其原理,比如分布式缓存的缓存策略。也会有构建在它们之上的,更具体的应用,比如基于分布式缓存的分布式session,分布式计数器等等。
在分布式服务这一节,我们会谈到完成一次RPC调用的基本原理,也会谈到作为一个高可用的生产级服务化框架如何完成服务的监控,治理等功能,时间来的及的话,我还考虑按这个思路造一个RPC框架的轮子。
(三) 系统设计
在模块之上就是一个完整的系统了,这一章节目前还没想到太多内容。
主要还是个人经验不足,特别是没有非常系统的软件架构方面的经验,驾驭系统架构这样主题是比较困难的。
目前暂时准备了一章:高并发系统的设计与思考。会从前端,到中间服务,再到底层数据库谈谈如何设计一个应对高并发的系统。
四、排期及其它
这么大一个项目,自然的设置个Deadline了。
本书截稿时间定为2018年6月15日。
那一天正好是我工作满三年的日子,完成本书,也就达到我个人想象中一个三年工作经验的开发者在纯技术方面该拥有的知识水平。
以本书暂定的10~15篇文章,8个月时间来算,每两周完成一篇。
抛开工作日,以及其他方面的时间,能分配到每篇的时间应该每个周末一天,10~16个小时左右。
能看到这里的一定是真爱了,可以关注我的博客,公众号或朋友圈,未来恳请各位技术大咖帮忙斧正。
作者:初开
发表于:博客园
本文基于 知识共享-署名-非商业性使用-禁止演绎 4.0 国际许可协议发布,转载必须保留署名及链接。