Orleans是由微软公司基于.NET平台构建的跨平台、分布式开源应用框架,可用于快速搭建面向大数据吞吐量和高并发场景的互联网应用服务。
《Orleans构建高性能分布式Actor服务》主要介绍了虚拟Actor模型和Orleans运行时、资源管理、消息传递、集群构建、数据持久化及可靠性管理等组件,还对Orleans的流式处理、分布式事务、多集群配置与部署等功能进行了介绍。全面介绍了Orleans 的主要功能与特点,并结合实际互联网应用场景给出了多个应用实例。
《Orleans构建高性能分布式Actor服务》可作为软件开发及测试工程师、架构师在设计构建分布式应用服务时的参考用书,适合对大型互联网应用服务开发感兴趣的读者阅读学习,还可以作为大中专院校分布式软件开发相关课程的教学用书。
随着移动通信技术的发展与普及,全球互联网产业蓬勃发展,移动互联网场景下的实时在线服务已经在社交、购物、支付、娱乐、出行、医疗、政务等各个方面深刻改变了人们的日常生活。但与此同时,移动应用服务用户的爆炸式增长也给应用服务的开发与构建带来了新的挑战:开发人员一方面需要保证应用服务在高并发场景下具有良好的伸缩性及可靠性,另一方面还需要根据实际业务场景及功能设计变更,对应用服务进行快速迭代和更新。为了满足上述需求,应用服务的软件架构及业务模型都需要具备良好的扩展性与通用性。
Actor模型作为针对高并发服务设计的编程模型,可以将复杂业务场景抽象并简化为多个简单独立实体对象间的相互作用,它提供了对高吞吐量实时服务场景下的系统性能优化策略,开发人员可以直接根据业务逻辑的聚合、从属等关系快速搭建应用服务。Orleans应用服务框架于2015年1月开源,并于2021年4月发布了3.4.2版本,Orleans开发者社区已经吸引了众多软件开发人员的关注,其所提出的虚拟Actor模型使开发人员能够更加专注于应用服务逻辑的设计而无须过多关注分布式系统内诸如数据一致性、系统可靠性、业务吞吐量等通用组件的性能优化问题,非常适用于快速搭建高性能应用服务,已成功应用于多个大型互联网服务系统中。
Orleans基于.NET Core运行时开发,具备原生的跨平台部署能力,开发人员仅需完成简单的.NET Core运行时配置即可开发并运行Orleans分布式应用服务。Orleans开发者社区还为开发人员提供了丰富多样的扩展程序组件,使Orleans应用服务能够与AWS、Azure、Google Cloud等公用云服务无缝集成,从而构建适用于任意规模的面向各类互联网场景的云服务应用。
基于Orleans灵活便捷的开发能力,本书通过对Orleans运行时的内部组件原理及实际应用服务搭建过程的介绍,帮助读者迅速熟悉高并发场景下互联网应用服务的设计与开发过程。
本书特色
1.基于实际互联网场景的应用构建实例
《Orleans构建高性能分布式Actor服务》提供了多个以实际互联网应用场景为背景的实例,带领读者完成需求分析、模型设计、架构优化、代码编写和系统部署等完整的应用服务搭建流程,从而让读者熟悉并领略Orleans应用服务框架的便捷性。这些应用构建实例也可成为读者在实际构建与设计应用系统时的参考。
2.深入浅出的技术体系介绍
《Orleans构建高性能分布式Actor服务》的章节安排尽量做到了由浅至深。在对Actor模型与及Grain对象进行讲解时,使用实际应用场景作为类比,让读者能够迅速理解其设计思路与特性;在对Orleans运行时组件进行介绍时,详细剖析了各类组件对象的作用与设计思路,使读者能够迅速了解Orleans运行时各类功能的实现原理,并结合实际场景更好地利用Orleans的各项功能。
3.结合前沿技术,贴近实战
《Orleans构建高性能分布式Actor服务》通过多个实例对Orleans应用服务的搭建过程做了详尽的介绍,并结合Azure云服务组件构建了可直接应用实际场景的互联网服务。读者既可以了解Azure公用云服务内各类常用组件的特性,也可以在实际开发过程中利用Orleans框架优秀的扩展性快速与各类系统组件进行集成开发,按需搭建并优化应用服务。
本书内容
《Orleans构建高性能分布式Actor服务》共9章,主要内容如下。
第1章主要介绍了Actor编程模型的特点与设计思路、.NET平台与Orleans应用框架的开发及应用背景、虚拟Actor模型的概念及行业内相关技术发展的趋势;第2章主要介绍了Orleans框架内部的小处理单元Grain,包括Grain的服务模型、寻址方式、生命周期和内部状态存储等概念,并介绍了Orleans框架对Grain对象的管理策略及状态存储API,同时结合自动售货机库存管理示例,展示了如何利用Grain状态按需维护并存储业务数据;第3章主要介绍了Orleans运行时组件的基本架构模型、任务调度模型及单线程执行语义的实现方式,以及Orleans运行时内部组件(Grain对象及Silo服务节点)的生命周期管理的实现方式;第4章主要介绍了Orleans运行时内数据传输过程,包括消息对象格式、运行时序列化管理器、连接对象与网关服务和消息中心与调度策略,以及Orleans运行时内部的远程过程调用流程;第5章主要介绍了Orleans的流式处理功能的相关内容,包括虚拟数据流的实现、数据的订阅与发布及相关流式处理API的特性及应用场景,并通过系统状态的遥测与监控示例展示了Orleans流式处理的特点;第6章主要介绍了Orleans框架的多种高级功能,包括异步任务处理、Grain请求拦截器、多种特殊类型的Grain对象、事件溯源模型、分布式事务及多集群Orleans应用服务等;第7章主要介绍了Orleans集群的构建过程及相关组件,包括Membership协议、集群内负责均衡和多版本服务接口管理,并对分布式应用服务升级策略及Orleans性能监控方式进行了介绍;第8章通过4个实际案例详细介绍了基于Orleans框架搭建互联网应用服务的实践和构建流程。例如,通过工单处理系统及企业会议管理系统实例介绍了如何使用联合托管(Co-hosting)技术搭建基于ASP.NET Core Web API的Orleans Web应用服务,通过网页流量计数及活跃度奖励系统展示了如何利用Orleans流式处理功能快速构建实时数据处理应用等;第9章主要介绍了通过云平台构建Orleans应用服务的方法,以及构建容器化分布式Orleans应用服务的步骤,介绍了与Orleans框架类似的Azure Service Fabric Reliable Actors应用程序框架的编程模型,并通过共享单车管理平台示例展示了利用Orleans框架的扩展能力,以及基于各类Azure云服务组件快速搭建大型互联网应用服务平台的完整设计、部署、维护和持续集成过程。
关于作者
《Orleans构建高性能分布式Actor服务》由吴哲昊编写,苏宝君、顾雨婷、周新宇、彭亦然、李持航和叶心静等人参与了文稿的审核和校对,在此感谢家人、同学和同事们在本书编写期间所给予的大力支持。
另外,在本书编写期间,还得到了张淑谦编辑的悉心指导,他对书稿的审核和建议,使得本书能够以更加清晰易懂的语言及章节编排出版,在此表示深深的感谢!
虽然我们对书中所述内容都尽量核实,并多次进行了文字校对,但因水平所限,本书出现疏漏在所难免,敬请各位同行专家及读者指正批评,作者的邮箱:zhehao.wu@foxmail.com。
作 者
第1章 Orleans与Actor编程模型/
1.1 什么是Actor编程模型/
1.2 .NET平台与Orleans服务框架/
1.3 Orleans的应用现状及相关资源/
1.4 本章小结/
第2章 Grain的定义与实现/
2.1 Grain的定义/
2.2 Grain的服务模型/
2.2.1 服务接口与实现/
2.2.2 Grain服务的调用/
2.3 Grain的标识方法/
2.4 Grain的内部状态与生命周期管理/
2.4.1 Grain的唤醒与休眠/
2.4.2 显式控制Grain状态/
2.5 Grain的状态保存/
2.5.1 Grain内部状态的持久化/
2.5.2 状态同步API/
2.5.3 状态持久化服务的注册/
2.5.4 自定义状态读写逻辑的实现/
2.5.5 IGrainState接口中的状态版本约束/
2.5.6 定义状态的序列化选项/
2.6 案例:自动售货机的库存管理/
2.7 本章小结/
第3章 任务调度与组件生命周期管理/
3.1 Orleans运行时/
3.2 任务模型及调度管理/
3.2.1 .NET任务调度器与内置线程池/
3.2.2 Orleans任务调度器/
3.3 Orleans对象的生命管理/
3.3.1 Grain的运行时管理/
3.3.2 Silo的生命周期管理/
3.4 本章小结/
第4章 数据传输与远程过程调用/
4.1 Orleans数据传输协议/
4.1.1 Orleans消息对象/
4.1.2 Orleans序列化管理器/
4.2 Orleans消息处理模型/
4.2.1 连接与网关/
4.2.2 消息中心与调度器/
4.3 Orleans的远程过程调用/
4.3.1 Grain的引用对象/
4.3.2 Grain实例寻址/
4.3.3 Orleans的RPC过程/
4.4 本章小结/
第5章 Orleans构建高性能分布式Actor服务流式处理/
5.1 数据的流式处理/
5.2 Orleans流式处理系统/
5.2.1 设计目标/
5.2.2 系统模型/
5.2.3 Orleans数据流的实现/
5.2.4 数据流的发布与订阅/
5.3 Orleans流式处理API/
5.3.1 系统组件初始化/
5.3.2 异步数据流及消息接口/
5.3.3 消息的订阅与发布/
5.3.4 定序消息与序列Token/
5.3.5 可回溯数据流/
5.4 案例:系统状态遥测与监控/
5.5 本章小结/
第6章 Orleans高级功能/
6.1 异步任务/
6.1.1 异步任务的调用/
6.1.2 异步任务的中断与取消/
6.2 Grain请求拦截器/
6.2.1 入站消息拦截器/
6.2.2 出站消息拦截器/
6.3 Grain的派生类型/
6.3.1 可重入Grain/
6.3.2 Grain服务/
6.3.3 定时器与通知服务/
6.3.4 无状态工作者Grain/
6.4 事件溯源/
6.4.1 日志一致性协议/
6.4.2 JournaledGrain类/
6.4.3 事件提交策略及多实例同步/
6.4.4 级联事件通知及性能诊断/
6.4.5 服务配置及使用/
6.5 分布式事务/
6.5.1 事务服务接口的声明/
6.5.2 支持事务服务的Grain实现/
6.6 多集群Orleans应用/
6.6.1 多集群应用模型/
6.6.2 Gossip传输协议/
6.6.3 集群配置/
6.6.4 多集群Grain单例策略配置/
6.7 本章小结/
第7章 构建Orleans服务集群/
7.1 Orleans集群搭建/
7.1.1 启动任务/
7.1.2 Silo服务的优雅关闭/
7.2 服务注册与协调/
7.2.1 Membership协议/
7.2.2 集群负载均衡/
7.3 服务接口版本管理/
7.3.1 接口版本与兼容性/
7.3.2 运行时版本选择/
7.3.3 服务升级与高可用性保证/
7.4 异构Orleans应用服务/
7.5 集群性能监控/
7.6 本章小结/
第8章 构建Orleans应用服务/
8.1 搭建Orleans系统的实践/
8.1.1 Orleans系统的项目结构/
8.1.2 Grain的设计与实现/
8.1.3 运行时服务监控/
8.1.4 系统故障处理/
8.1.5 功能测试/
8.1.6 应用部署与集群管理/
8.2 搭建Web应用服务/
8.2.1 案例:工单处理系统/
8.2.2 案例:企业会议管理系统/
8.3 搭建流式数据处理服务/
8.3.1 案例:网页流量计数/
8.3.2 案例:应用内活跃度奖励系统/
8.4 本章小结/
第9章 Orleans与云服务/
9.1 使用云平台构建Orleans应用/
9.2 搭建容器化Orleans服务/
9.2.1 构建Orleans应用服务镜像/
9.2.2 搭建容器化Orleans服务集群/
9.3 Azure Service Fabric Reliable Actors应用程序框架/
9.3.1 Service Fabric与Reliable Services框架/
9.3.2 Reliable Actors模型/
9.4 案例:基于Azure公有云服务构建共享单车管理平台/
9.4.1 系统功能及流程设计/
9.4.2 相关Azure服务介绍/
9.4.3 实现应用服务平台/
9.4.4 搭建可靠的应用服务集群/
9.5 本章小结/