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

本文是《使用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. Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics Editorial

    Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics) Problem 1501A. Alexey a ...

  2. S3C2440移植uboot之支持NORFLASH

      上节S3C2440移植uboot之支持NAND启动修改了代码支持了NAND启动.这节我们分析uboo使其支持NORFLASH的操作. 目录 1.分析启动错误 2.修改代码 3.在匹配数组中添加我们 ...

  3. 介绍几种OPTIONS检测的方法

    概述 日常的VOIP开发中,OPTIONS检测是常用的网络状态检测工具. OPTIONS原本是作为获取对方能力的消息,也可以检测当前服务状态.正常情况下,UAS收到OPTIONS心跳,直接回复200即 ...

  4. FZU 2232

    ***题意:求最大匹配是否为n 今天突然想起来吧模板改一下,然而自己得想法不对,WA了有十多次吧,看了一下题解,不需要改,套上模板就行*** #include<stdio.h> #incl ...

  5. excel常用函数整理(可检索)

    目录: 一.数字函数 1.1 sum 1.2 sumif 1.3 sumifs 1.4 sumproduct 1.5 abs二.统计函数 2.1 count 2.2 counta 2.3 counti ...

  6. 06-verilog基础语法_5

    How to build and test a module parameter defparam修改参数 Task & function Task Function function不可以调 ...

  7. css - 使用 figure 和 figcaption 快速实现 图片加文字的垂直方向的布局 ( 不支持ie9以下版本 )

    一,属性介绍 1. 浏览器支持 注释:Internet Explorer 8 以及更早的版本不支持 <figure> 标签.Internet Explorer 9, Firefox, Op ...

  8. [转帖]TiDB损坏多副本之有损恢复处理方法

    https://tidb.net/blog/b1ae4ee7   TiDB分布式数据库采用多副本机制,数据副本通过 Multi-Raft 协议同步事务日志,确保数据强一致性且少数副本发生故障时不影响数 ...

  9. [转帖]SQL Server数据库存储总结

    SQL Server数据库存储文件类型:数据文件和日志文件.数据文件以页面作为存储单元存储数据. 页面:即数据页面,数据页(Page).是系统在磁盘间中分配的一段大小为8k的连续空间. 文件头(Fil ...

  10. Python学习之十九_程序运行时间的验证

    Python学习之十九_程序运行时间的验证 背景 最近一段时间比较忙. 而且还遇到了一个lua脚本优化redis访问的场景. 想着自己还在学习python(时断时续) 所以想借着这个场景,学习一下py ...