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

本文是《使用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系列文章,请移步,这里会优先发布我的最新成果,欢迎您不吝赐教。

使用Dapr和.NET 6.0进行微服务实战系列的更多相关文章

  1. go-zero微服务实战系列(三、API定义和表结构设计)

    前两篇文章分别介绍了本系列文章的背景以及根据业务职能对商城系统做了服务的拆分,其中每个服务又可分为如下三类: api服务 - BFF层,对外提供HTTP接口 rpc服务 - 内部依赖的微服务,实现单一 ...

  2. go-zero微服务实战系列(十一、大结局)

    本篇是整个系列的最后一篇了,本来打算在系列的最后一两篇写一下关于k8s部署相关的内容,在构思的过程中觉得自己对k8s知识的掌握还很不足,在自己没有理解掌握的前提下我觉得也很难写出自己满意的文章,大家看 ...

  3. ASP.NET Core微服务实战系列

    希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. 前言 这里记录的是个人奋斗和成长的地方,该篇只是一个系列目录和构想 ...

  4. 微服务实战系列--Nginx官网发布(转)

    这是Nginx官网写的一个系列,共七篇文章,如下 Introduction to Microservices (this article) Building Microservices: Using ...

  5. Chris Richardson微服务实战系列

    微服务实战(一):微服务架构的优势与不足 微服务实战(二):使用API Gateway 微服务实战(三):深入微服务架构的进程间通信 微服务实战(四):服务发现的可行方案以及实践案例 微服务实践(五) ...

  6. 微服务实战系列(二)-注册中心Springcloud Eureka客户端

    1. 场景描述 前几天介绍了下springcloud的Eureka注册中心(springcloud-注册中心快速构建),今天结合springboot-web介绍下eureka客户端服务注册. 2. 解 ...

  7. 微服务实战系列(六)-网关springcloud zuul

    1. 场景描述 今天接着介绍springcloud,今天介绍下springcloud的路由网关-Zuul,外围系统或者用户通过网关访问服务,网关通过注册中心找到对应提供服务的客户端,网关也需要到注册中 ...

  8. 微服务实战系列(七)-网关springcloud gateway

    1. 场景描述 springcloud刚推出的时候用的是netflix全家桶,路由用的zuul,但是据说zull1.0在大数据量访问的时候存在较大性能问题,2.0就没集成到springcloud中了, ...

  9. 微服务实战系列(八)-网关springcloud gateway自定义规则

    1. 场景描述 先说明下项目中使用的网关是:springcloud gateway, 因需要给各个网关服务系统提供自定义配置路由规则,实时生效,不用重启网关(重启风险大),目前已实现:动态加载自定义路 ...

  10. 微服务实战系列(十)-网关高可用之中间件Keepalived

    1.场景描述 因为要做网关的高可用,用到了keepalived+nginx,来保证nginx的高可用,如下图: 安装了keepavlived,走了一些弯路,记录下吧,nginx的安装就不多说了,博客已 ...

随机推荐

  1. Serverless实战——2分钟,教你用Serverless每天给女朋友自动发土味情话

    原文链接:https://developer.aliyun.com/article/981268 演示视频:https://developer.aliyun.com/live/249772 一.Ser ...

  2. <vue 组件 3、父子组件相互访问>

    代码结构 一.     01-组件访问-父访问子 1. 效果 点击后在父组件里展示子组件的参数 2.代码 01-组件访问-父访问子.html <!DOCTYPE html> <htm ...

  3. freeswitch隐藏fs标识

    概述 freeswitch是一款好用的开源软交换平台. fs的默认配置环境下,sip消息中有很多freeswitch的标识,比如"user-agent","contact ...

  4. 万字血书Vue—Vue的核心概念

    MVVM M:模型(Model):data V:视图(View):模板 VM:视图模型(ViewModel):Vue实例对象 Vue收到了MVVM模型的启发,MVVM是vue实现数据驱动视图和双向数据 ...

  5. 如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 3

    在本教程的前两部分,我们分别了解和学习了Prometheus 和 Grafana 的基本概念和使用的前提条件,以及使用 Helm 在 Kubernetes 上安装 Prometheus. 在今天的教程 ...

  6. Linux进阶命令-grep

    Linux进阶命令----grep 目录 Linux进阶命令----grep grep 命令介绍 grep命令格式 常用选项 模式部分 匹配字符: 匹配次数: 位置锚定: grep 命令介绍 Linu ...

  7. git添加被.gitignore忽略的文件

    技术背景 在git操作中,有时候为了保障线上分支的简洁性,会在.gitignore文件中屏蔽一些关键词,比如可以加一个*.txt来屏蔽掉项目中所有带txt后缀的文件,还可以加上*test*来屏蔽所有的 ...

  8. SpringBoot01:HelloWorld!

    回顾Spring Spring是一个开源框架,2003年兴起的一个轻量级的Java开发框架. Spring是为了解决企业级应用开发的复杂性而创建的,简化开发. Spring是怎样简化Java开发的呢? ...

  9. 配置Chrome支持网页内的frame跨域

    前言 跨域限制可以保证安全,但是调试的时候关掉会更方便,然而现在网络上能找到的关闭跨域限制方法,在新版的Chrome浏览器上根本没用-- 经过一番摸索,发现用旧版的Chrome就可以绕过跨域限制,刚好 ...

  10. [转帖]查询 HTTPS 网站 TLS 版本

    参考 检查网站的TLS版本 – wentao's blog Linux curl 命令详解 - 腾讯云开发者社区-腾讯云 TLS 版本查询_天泽岁月的博客-CSDN博客_查看tls版本 使用 Open ...