使用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系列文章,请移步,这里会优先发布我的最新成果,欢迎您不吝赐教。
使用Dapr和.NET 6.0进行微服务实战系列的更多相关文章
- go-zero微服务实战系列(三、API定义和表结构设计)
前两篇文章分别介绍了本系列文章的背景以及根据业务职能对商城系统做了服务的拆分,其中每个服务又可分为如下三类: api服务 - BFF层,对外提供HTTP接口 rpc服务 - 内部依赖的微服务,实现单一 ...
- go-zero微服务实战系列(十一、大结局)
本篇是整个系列的最后一篇了,本来打算在系列的最后一两篇写一下关于k8s部署相关的内容,在构思的过程中觉得自己对k8s知识的掌握还很不足,在自己没有理解掌握的前提下我觉得也很难写出自己满意的文章,大家看 ...
- ASP.NET Core微服务实战系列
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. 前言 这里记录的是个人奋斗和成长的地方,该篇只是一个系列目录和构想 ...
- 微服务实战系列--Nginx官网发布(转)
这是Nginx官网写的一个系列,共七篇文章,如下 Introduction to Microservices (this article) Building Microservices: Using ...
- Chris Richardson微服务实战系列
微服务实战(一):微服务架构的优势与不足 微服务实战(二):使用API Gateway 微服务实战(三):深入微服务架构的进程间通信 微服务实战(四):服务发现的可行方案以及实践案例 微服务实践(五) ...
- 微服务实战系列(二)-注册中心Springcloud Eureka客户端
1. 场景描述 前几天介绍了下springcloud的Eureka注册中心(springcloud-注册中心快速构建),今天结合springboot-web介绍下eureka客户端服务注册. 2. 解 ...
- 微服务实战系列(六)-网关springcloud zuul
1. 场景描述 今天接着介绍springcloud,今天介绍下springcloud的路由网关-Zuul,外围系统或者用户通过网关访问服务,网关通过注册中心找到对应提供服务的客户端,网关也需要到注册中 ...
- 微服务实战系列(七)-网关springcloud gateway
1. 场景描述 springcloud刚推出的时候用的是netflix全家桶,路由用的zuul,但是据说zull1.0在大数据量访问的时候存在较大性能问题,2.0就没集成到springcloud中了, ...
- 微服务实战系列(八)-网关springcloud gateway自定义规则
1. 场景描述 先说明下项目中使用的网关是:springcloud gateway, 因需要给各个网关服务系统提供自定义配置路由规则,实时生效,不用重启网关(重启风险大),目前已实现:动态加载自定义路 ...
- 微服务实战系列(十)-网关高可用之中间件Keepalived
1.场景描述 因为要做网关的高可用,用到了keepalived+nginx,来保证nginx的高可用,如下图: 安装了keepavlived,走了一些弯路,记录下吧,nginx的安装就不多说了,博客已 ...
随机推荐
- vivo悟空活动中台 - 微组件多端探索
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/oGX4XSm8F4fa1ocLdpyqlA作者:悟空中台研发团队 [悟空活动中台]系列往期精 ...
- UNI-APP 使用Echart
UNI-APP 使用Echart(含地图教程) https://blog.csdn.net/weixin_43548442/article/details/121468189 uniapp使用echa ...
- 接口自动化复习第四天利用正则和faker提取替换变量值
在做接口自动化测试的时候,我们经常会遇到,有些字段利用随机生成数据就行了,不需要自己去构造测试数据.今天我就是要python中的第三方库faker来构造随机数,其次使用正则表达式来提取变量. 首先在接 ...
- 在Chrome中安装扩展程序
场景:在Chrome中安装NetBeans Connector插件,将下载好的crx文件拖到扩展程序页面时,发现该插件并没有安装成功. 分析:浏览器默认禁用了拖入安装 .crx 扩展的功能,导致crx ...
- idea安装并使用maven依赖分析插件:Maven Helper
本文为博主原创,转载请注明出处: 在maven工程中,经常会查看maven的依赖树,在没使用该插件时,需要maven dependency:tree命令进行查看依赖树, 通过maven helper ...
- [转帖]awk的printf格式化输出
https://www.cnblogs.com/chanix/p/12738097.html awk的printf格式化输出20121108 Chenxincat sort_result.txt223 ...
- [转帖]Web技术(七):如何使用并实现MQTT 消息订阅-发布模型?
文章目录 一.什么是发布-订阅消息模型? 二.订阅-发布消息模型有哪些应用? 2.1 应用于IP 物联网络中的消息传递 2.2 应用于操作系统进程间的消息传递 2.3 应用于MESH 自组网中的消息传 ...
- [转帖]MobaXterm激活专业版
本文思路来自 https://github.com/flygon2018/MobaXterm-keygen 有python 环境 并且不看英文的可以继续往下 不然直接访问这个地址也行. 1.需要一 ...
- [转帖]部署Alertmanager
https://flashcat.cloud/docs/content/flashcat-monitor/prometheus/alert/manager-install/ Alertmanager和 ...
- ElasticSearch集群灾难:别放弃,也许能再抢救一下 | 京东云技术团队
1 前言 Elasticsearch作为一个分布式搜索引擎,自身是高可用的:但也架不住一些特殊情况的发生,如: 集群超过半数的master节点丢失,ES的节点无法形成一个集群,进而导致集群不可用: ...