使用Dapr和.NET 6.0进行微服务实战系列

管理员

大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进。

本文是《使用Dapr和.NET 6.0进行微服务实战》的第1篇引言部分,本文大致介绍了Dapr产生的背景,系列目标,思路以及可能涵盖的主题范围(注意,主题不会固定这些章节,会根据自己的实践和学习动态伸缩),以及一些其他事项。闲话不说,我们开始系列旅程吧。

1.前言

1.1背景

截至目前,Dapr已更新到v1.9.5版本了,github上的Star也达到了20.2k。其实在v1.0.0的时候,Dapr就可以用于生产环境了,现在已经变得越来越成熟了,国内的阿里算是它的忠实的贡献者和使用者。作为分布式和微服务的实践者,当我们了解了它的目标和能力之后,我们没有理由不去学习和拥抱它,不仅仅是因为它代表了下一代微服务的趋势,更因为它能实实在在地帮助我们摆脱微服务的底层基础设施的束缚,让我们更加专注业务的开发。
本系列内容想通过Dapr和.NET 6.0来实践我们的微服务,我会结合Dapr里的九大Building Block以及示例来分析和讲解。希望能让你对Dapr有个更加深入的了解。

在过去的十多年中,从单体应用到更精细的微服务,现代软件架构发生了巨大的转变。Dapr通过提供构建块作为API,帮助开发人员构建云原生应用。它为公有云、本地甚至边缘设备上运行应用提供了平台无关、语言无关的能力。

1.2目标

本系列内容旨在让您熟悉微服务架构,同时了解Dapr的本质。我们将探讨Dapr是如何为我们提供一个可移植的、事件驱动的、语言无关的运行时。同时,我们还会探讨跨云和边缘的能力以及如何做到构建微服务所需的基本功能,例如服务调用、状态管理以及发布和订阅。

1.3思路

本专栏会通过创建一个基于Dapr的示例贯穿整个系列,并将其部署到Kubernetes。在整个案例中,您将学习如何使用Zipkin、Prometheus和Grafana监视Dapr应用。同时了解如何在Kubernetes中对Dapr应用进行负载测试,如何使用serverless容器服务来部署Dapr。

2.文章读者对象

本专栏面向希望探索微服务架构,并使用.NET6.0开发基于Dapr应用程序的开发人员。无论您是微服务的新手,还是对这种架构方法有所了解,并希望获得使用Dapr的实际经验,你应该都会有所收获。

3.专栏涵盖内容

第一部分:Dapr介绍

第1章,Dapr简介,将向您介绍Dapr的基础知识,简要介绍Dapr的特性以及对云原生应用及微服务的好处。

第2章,调试Dapr解决方案,将重点介绍如何在VS Code中设置Dapr开发环境,以及如何在本地调试Dapr。

第3章,微服务架构与Dapr,将讨论微服务架构的相关性,并开始探讨Dapr作为运行时如何更容易采用这种风格。

第二部分:Dapr的部署和扩容

第4章,本章主要介绍“服务调用”,指导我们如何通过Dapr的基础架构进行服务发现和调用。通过示例,您将了解如何从其他Dapr组件或外部客户端调用它们。

第5章,介绍状态管理,介绍Dapr如何管理不同存储类型的状态。管理服务和单线程模型(actors)的状态是Dapr的核心。

第6章,“发布和订阅”将向您介绍发布和订阅,这是Dapr用来实现组件之间解耦交互的消息传递模式。输入绑定使您能够使用传入的Twilio SMS或Azure Service Bus消息触发微服务。

第7章,“资源绑定”将详细介绍Dapr如何基于输入绑定使您能够设计事件驱动的微服务,并通过可插拔配置调用外部资源。

第8章,单线程模型(actors)介绍,将帮助您了解Dapr提供的强大的单线程模型,以及如何在微服务架构中使用它,以及不同方法的利弊。

第三部分:基于Dapr构建微服务

第9章,介绍部署到Kubernetes当中,并区分本地独立模式和Kubernete模式在操作方面的基本区别。特别是使用Azure Kubernetes服务,我们将向Kubernete部署一个由多个微服务组成的Dapr示例程序。

第10章,公开Dapr应用程序,探讨我们如何向用户公开Dapr应用程序。特别是使用Azure Kubernetes服务,我们将通过NGINX和Azure API管理在Kubernete上的Dapr示例程序。

第11章,跟踪Dapr应用程序,将通过探索如何使用Zipkin、Prometheus和Grafana在Dapr中发送和收集跟踪、日志和度量,以及概述Dapr中的可观测性。

第12章,负载测试和Dapr服务的伸缩,将详细说明Kubernetes中Dapr服务和参与者的伸缩是如何工作的,读者还将了解如何通过Locust测试工具模拟用户行为来负载测试Dapr。

第13章,利用Dapr的无服务容器,指导我们如何借助Azure等商业云服务,并介绍如何将Dapr应用部署到Azure容器。

4.其他注意

虽然专栏的示例是在Windows 10上编写的,但所使用的技术堆栈是支持跨平台的:VS Code、.NET 6、Dapr、Kubernetes和Locust都为多平台提供了工具和类库。
在Windows 10上,建议安装WSL 2,并在Docker中启用WSL 2引擎。
有关如何设置环境的详细说明,请参阅第1章Dapr简介的“设置Dapr”部分。
本书中的示例和脚本已经用Dapr 1.9版和.NET6进行了测试。

如果能提供访问Azure服务更好,因为文中示例是跑在它们上面,当然国内读者可以利用阿里云或者华为云也是可以的。阅读完本专栏后,你也可以通过浏览Dapr官方文档继续学习,您也可以关注社区,它是一个学习、提问和与他人分享Dapr经验的机会。

5.沟通和反馈

一般反馈:如果您对本专栏的任何方面有疑问,请添加我的微信或者加入QQ共享群进行提问。
勘误表:尽管自己尽一切努力确保内容的准确性,但个别错误难免会发生。如果您在专栏中发现错误,也可以通过邮箱或者微信给我留言。您的评论对我提供优质的内容十分重要,再次感谢。

如果您想提前阅读Dapr系列文章,请移步,这里会优先发布我的最新成果,欢迎您不吝赐教。