前言
PREFACE
随着移动通信技术的发展与普及,全球互联网产业蓬勃发展,移动互联网场景下的实时在线服务已经在社交、购物、支付、娱乐、出行、医疗、政务等各个方面深刻改变了人们的日常生活。但与此同时,移动应用服务用户的爆炸式增长也给应用服务的开发与构建带来了新的挑战:开发人员一方面需要保证应用服务在高并发场景下具有良好的伸缩性及可靠性,另一方面还需要根据实际业务场景及功能设计变更,对应用服务进行快速迭代和更新。为了满足上述需求,应用服务的软件架构及业务模型都需要具备良好的扩展性与通用性。
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应用服务框架的便捷性。这些应用构建实例也可成为读者在实际构建与设计应用系统时的参考。
2. 深入浅出的技术体系介绍
本书的章节安排尽量做到了由浅至深。在对Actor模型与及Grain对象进行讲解时,使用实际应用场景作为类比,让读者能够迅速理解其设计思路与特性;在对Orleans运行时组件进行介绍时,详细剖析了各类组件对象的作用与设计思路,使读者能够迅速了解Orleans运行时各类功能的实现原理,并结合实际场景更好地利用Orleans的各项功能。
3. 结合前沿技术,贴近实战
本书通过多个实例对Orleans应用服务的搭建过程做了详尽的介绍,并结合Azure云服务组件构建了可直接应用实际场景的互联网服务。读者既可以了解Azure公用云服务内各类常用组件的特性,也可以在实际开发过程中利用Orleans框架优秀的扩展性快速与各类系统组件进行集成开发,按需搭建并优化应用服务。
本书内容
本书共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云服务组件快速搭建大型互联网应用服务平台的完整设计、部署、维护和持续集成过程。
关于作者
本书由吴哲昊编写,苏宝君、顾雨婷、周新宇、彭亦然、李持航和叶心静等人参与了文稿的审核和校对,在此感谢家人、同学和同事们在本书编写期间所给予的大力支持。
另外,在本书编写期间,还得到了张淑谦编辑的悉心指导,他对书稿的审核和建议,使得本书能够以更加清晰易懂的语言及章节编排出版,在此表示深深的感谢!
虽然我们对书中所述内容都尽量核实,并多次进行了文字校对,但因水平所限,本书出现疏漏在所难免,敬请各位同行专家及读者指正批评,作者的邮箱:zhehao.wu@fox-mail.com。
作者