新書推薦:

《
皇帝与国王:足利义满和他的时代(颠覆天皇王权的逆贼将军,还是活用东亚朝贡规则的政治能人?)
》
售價:HK$
301

《
锦衣行 (《白衣公卿》影视原著小说)
》
售價:HK$
254

《
乘风而上(美依礼芽中文自传)
》
售價:HK$
398

《
金庸江湖的另一面
》
售價:HK$
301

《
以远见超越未见:当今时代的教育、文化与未来
》
售價:HK$
305

《
DK草药大百科
》
售價:HK$
1367

《
甲骨文丛书·英国人在印度:三百年社会史
》
售價:HK$
806

《
唯美手编.17,绚丽的春夏毛衫
》
售價:HK$
250
|
編輯推薦: |
这本书清晰地梳理了Serverless架构的落地细节与实践方法,既有深刻的技术洞察,也包含富有启发性的创新设计。对于想要入门Serverless技术却不知从何下手的读者来说,此书无疑是一本不可多得的优秀教程。
|
內容簡介: |
Serverless作为一种近几年流行的架构,其内部的设计相对复杂。本书尽可能使用通俗易懂的语言来帮助读者理解和掌握Serverless的开发与设计。本书以JavaScript为主要语言进行讲解,以Node.js运行时为主要运行环境进行服务设计的讲解。
本书共10章,分别为:Serverless架构的概述、Serverless的总体设计、Serverless架构的脚手架设计、Serverless架构的模块设计、Serverless架构的函数设计、Serverless 结构设计、Serverless 架构的配置设计、Serverless架构的协议设计、Serverless架构的实践以及Serverless架构最终形态的演变。
内容主要涉及JavaScript语言的开发(包括前端和后端的代码和功能的实现)、数据库的开发(如MongoDB、ETCD等)、容器层面的开发(如Docker、 K8s)。从虚拟机(VM)的实现开始,逐步构造出一个虚拟化框架,最终形成一个Serverless架构平台。为了提升读者的阅读体验,本书使用尽可能少的代码示例。
本书配套有难点实现的微视频(扫码即可观看),以及相关案例源码(获取方式见封底)。本书适合相关领域的研究人员和工程技术人员阅读,也可作为高等院校计算机、软件工程及相关专业师生的参考资料。
|
關於作者: |
张原,滴滴前高级开发工程师,曾任职于同花顺、百草味、个推等知名企业。长期耕耘于Node.js领域,从事基建相关工作,对Serverless领域有自己独特的见解,曾作为领域负责人,支撑每日千万级别的调用量。活跃于知乎和Github等社区,并在社区中有自己独特的贡献,一些具有创新性思维的文章受到社区成员的关注和认可。王昌鹏,毕业于东南大学,获计算机硕士学位,曾任职于中国移动、阿里巴巴、网易等互联网知名企业,目前在滴滴担任专家工程师。在嵌入式、客户端、前端及node等领域具有丰富的开发经验,具有20多项授权专利技术。
|
目錄:
|
前言
1章 Serverless架构的概述
1.1什么是Serverless架构
1.1.1后端服务的演化
1.1.2小颗粒度服务的流行
1.1.3Serverless架构的难点
1.2Serverless架构的作用
1.2.1屏蔽运维需求
1.2.2降低编码门槛
1.2.3搭建低成本流水线
1.3Serverless架构的应用场景
1.3.1初创企业
1.3.2敏捷开发团队
1.3.3无需架构管理
1.4主流Serverless架构设计的问题
1.4.1非通用使用设计
1.4.2回调与返回设计
1.4.3中心化路由和分布式路由设计
1.4.4黑盒和显式引用设计
1.4.5生态和过于依赖厂商
1.5Serverless架构的目标
1.5.1开源与生态
1.5.2完善的标准
1.5.3私有化部署能力
1.5.4去中心化服务
2章 Serverless体设计
2.1项目的结构
2.1.1设计结构一览
2.1.2虚拟机结构设计
2.1.3框架结构设计
2.1.4平台结构设计
2.2虚拟机的结构拆分
2.2.1VM模块
2.2.2上下文设计
2.2.3模块系统设计
2.2.4变量代理设计
2.3框架的结构拆分
2.3.1命令行工具设计
2.3.2基础库设计
2.3.3中间件设计
2.3.4线程系统设计
2.4框架线程系统的结构拆分
2.4.1线程池设计
2.4.2回收机制设计
2.4.3动态运行时设计
2.5运行时模块拆分
2.5.1运行时与虚拟机的关系
2.5.2环境变量注入与模块逻辑设计
2.5.3服务载入虚拟机设计
2.6平台的结构拆分
2.6.1去中心文件系统设计
2.6.2代码服务端部署设计
2.6.3配置与注册中心设计
2.7平能结构设计
2.7.1App的注册与配置
2.7.2分流和灰度配置
2.7.3App域名配置
3章 Serverless架构的脚手架设计
3.1脚手能概述
3.1.1服务运行
3.1.2代码编译
3.1.3服务部署
3.2服务运能概述
3.2.1配置获取设计
3.2.2开发模式设计
3.2.3可插拔扩展设计
3.3可插拔扩展设计能实现
3.3.1插件出口入口设计与实现
3.3.2依赖扩展设计与实现
3.3.3扩展链路设计与实现
3.4项目初始能设计
3.4.1初始化模板的构建
3.4.2模板拉能的实现
3.5产物构建设计
3.5.1的前置检测
3.5.2文件的构建和编译
3.5.3单应用和多应用的实现
3.6服务部署设计
3.6.1App的上传与同步
3.6.2服务器的服务载入
3.6.3部署通知逻辑
3.7分布式代码更新
3.7.1分布式代码更新的目的
3.7.2单机和多机代码更新的区别
3.7.3分布式代码更新实现
4章 Serverless架构的模块设计
4.1设计模块化系统的目的
4.1.1代码的解耦合和复用
4.1.2互不影响的模块
4.1.3规范和模块的扩展
4.1.4依赖的权限控制
4.2上下文的注入实现
4.2.1上下文概述
4.2.2模块和文件的上下文
4.2.3全局变量和方法上下文的注入
4.3上下文的代理
4.3.1上下文代理的原理
4.3.2上下文和App绑定原理
4.3.3上下文代理的具体实现
4.4重新设计模块化系统的实现
4.4.1重写requir能
4.4.2权限系统判断的实现
4.4.3外部文件引用的剥离
4.5import实现原理
4.5.1import和require的关系
4.5.2import的转化实现
4.5.3执行import的实现
4.6代码文件加载实现
4.6.1VM递归加载实现
4.6.2文件相互引用加载实现
4.6.3语法支持
5章 Serverless架构的函数设计
5.1Serverless架构采用函数的原因
5.1.1什么是函数
5.1.2降低编写门槛的设计
5.1.3接口职责的设计
5.1.4相对灵活的服务
5.2Serverless架构函能概述
5.2.1主流Serverless架构的函数式设计问题
5.2.2数据返回和异常处理设计概述
5.2.3分布式路由设计概述
5.2.4代码黑盒设计
5.3函数的实例化实现
5.3.1函数调用过程实现
5.3.2线程实例化服务类实现
5.3.3线程监听调用事件实现
5.4函数参数注入实现
5.4.1线程的参数序列化
5.4.2线程中重新实例化参数对象
5.4.3参数原值通信
5.5函数数据返回和异常设计实现
5.5.1数据返回的实现
5.5.2二进制数据和文件流的返回实现
5.5.3异常在线程中的实例化
5.5.4异常中间件捕捉实现
5.6跨App函数调用设计与实现
5.6.1RPC函数调用链路概述
5.6.2RPC函数实现
5.7分布式路由设计实现
5.7.1路由装饰器实现
5.7.2线程的路由通信
5.7.3动态路由挂载实现
6章 Serverless结构设计
6.1Serverless架构结构概述
6.1.1项目结构设计概述
6.1.2App结构设计概述
6.1.3代码结构设计概述
6.2项目结构设计
6.2.1配置文件的设计与实现
6.2.2项目的编译构建设计
6.2.3项目依赖结构设计
6.3App结构设计
6.3.1App入口文件结构设计
6.3.2App隔离结构设计
6.3.3App运行与管理结构设计
6.4代码结构设计
6.4.1框架引用设计
6.4.2依赖引用设计
6.4.3服务类和函数设计
6.4.4代码透出设计
6.5编译结构设计
6.5.1编译目录结构设计
6.5.2编译配置解析
6.5.3增量编译实现
7章 Serverless架构的配置设计
7.1配置模块分类概述
7.1.1框架配置
7.1.2App配置
7.1.3部署配置
7.1.4流量配置
7.2框架配置设计
7.2.1项目基本配置设计
7.2.2异步获取配置设计
7.3App配置设计
7.3.1大线程配置设计
7.3.2系统权限管控配置设计
7.3.3超时配置设计
7.3.4VM和资源配置设计
7.4部署配置设计
7.4.1部署版本配置设计
7.4.2部署数据地址配置设计
7.5请求流量配置设计
7.5.1域名配置实现
7.5.2分流配置实现
7.5.3路由配置实现
8章 Serverless架构的协议设计
8.1Serverless架构的协议组成
8.1.1代码协议
8.1.2请求协议
8.1.3应用隔离协议
8.1.4通信协议
8.1.5执行协议
8.1.6部署协议
8.1.7函数配置协议
8.2代码协议设计
8.2.1路由协议
8.2.2装饰器协议
8.2.3文件和路径协议
8.2.4方法暴露协议
8.3请求协议设计
8.3.1请求方式协议
8.3.2请求分发协议
8.4应用隔离协议设计
8.4.1隔离方式协议
8.4.2影响协议
8.5通信协议设计
8.5.1调用协议
8.5.2沟通协议
8.5.3唤起协议
8.6执行协议设计
8.6.1执行入口协议
8.6.2返回值协议
8.7部署协议设计
8.7.1构建协议
8.7.2请求部署协议
8.7.3版本升级协议
8.8函数配置协议设计
8.8.1App配置协议
8.8.2分流配置协议
8.8.3部署配置协议
9章 Serverless架构的实践
9.1部署方案
9.1.1部署依赖
9.1.2部署规模准备
9.2容器部署实现
9.2.1Dockerfile准备
9.2.2K8s接入
9.2.3弹伸缩配置
9.3Serverless架构的限制实例
9.3.1Serverless架构构建App
9.3.2的权限控制实例
9.3.3代码引用规范实例
9.4基于Serverless架构开发
9.4.1接入数据库
9.4.2增删改查的实例
9.4.3前端页面的渲染实例
9.5用户模块的实现
9.5.1登录和注能实现
9.5.2Token的校验和App交互
9.6聊天系能实现
9.6.1实时聊天实现
9.6.2消息通知实现
9.7App上线实践
9.7.1应用发布实践
9.7.2域名的绑定实践
9.7.3分流和灰度发布实践
10章 Serverless架构终形态的演变
10.1Serverless架构的困境
10.1.1伴随着异常的服务
10.1.2开发和调试的相对困难
10.1.3异常无法自行处理
10.2过渡的Serverless架构方式
10.2.1高信任度的提供商
10.2.2标准化的服务设计
10.3真正的Serverless架构
10.3.1服务的非中心化
10.3.2服务的真正开源
10.3.3标准的语言设计
10.4当前互联网的瓶颈
10.4.1算力、存储和网络能的瓶颈
10.4.2过渡的中心化
10.5发展中的机遇
10.5.1非中心化应用的爆发
10.5.2瓶颈的移除
10.5.3信任危机出现
10.6形态的演变
10.6.1代码即所有
10.6.2去中心化的到来
|
內容試閱:
|
前言随着后端技术的发展,人们对后端服务的分割和治理提出了更高的要求,在服务小颗粒化流行后,人们更加确信函数化的编程方式在未来一定会成为主流。在此背景下,以Serverless为首的无服务架构思想开始进入开发者的视野。这种架构思想主推的就是函数化颗粒度编程,将开发和运维分离,其目的是让开发更加专注完成编程这项工作。虽然这种方式已经推出多年,但对于很多人来说仍属于一项相对神秘的技术。所以笔者希望能通过通俗的文字把这项技术讲清楚,同时能对Serverless进行一些更加深入的解读。本书的初衷是帮助读者从思想层面理解这项技术,从技术上实现这项技术。本书将先描述Serverless(无服务)架构的整体框架,再从总体拆解到每个模块,让新手开发到资深开发都能有所收获。从纯技术角度来说,本书更加适合前端开发人员、全栈开发人员和后端开发人员。而从思想角度来说,它则更加适合想要开发Serverless服务的开发者,帮助他们学习Serverless的服务设计思想。此外,对于对后端设计有追求的开发者来说,也可以从书中学习不一样的后端开发与设计方法。对于即将步入职场的新人来说,本书也能拓宽他们的视野,帮助他们初步了解复杂服务的架构设计。本书以JavaScript为主要语言进行讲解,以Node.js运行时为主要运行环境进行服务设计的讲解。本书共10章,分别为:Serverless架构的概述、Serverless的总体设计、Serverless架构的脚手架设计、Serverless架构的模块设计、Serverless架构的函数设计、Serverless结构设计、Serverless架构的配置设计、Serverless架构的协议设计、Serverless架构的实践以及Serverless架构最终形态的演变。内容主要涉及JavaScript语言的开发(包括前端和后端的代码和功能的实现)、数据库的开发(如MongoDB、ETCD等)、容器层面的开发(如Docker、 K8s)。从虚拟机(VM)的实现开始,逐步构造出一个虚拟化框架,最终形成一个Serverless架构平台。通过从设计到最终的实现,展示如何从零构建一个大型平台服务,以提升开发者的架构设计能力。通过通俗易懂的语言和生动有趣的故事,使初学者也能轻松理解Serverless架构的概念,并为学习Serverless相关技术的读者打开一扇新世界的大门。本书由滴滴前高级开发工程师张原和滴滴专家工程师王昌鹏共同编写。感谢机械工业出版社的支持,特别感谢策划编辑李晓波的辛勤付出。由于笔者水平有限,书中难免存在内容或引用错误,恳请读者批评指正,我们会及时记录反馈并在下一版中进行修正。笔者
|
|