使用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的安装就不多说了,博客已 ...
随机推荐
- ACM/OI中C++常用优化(实用/调试/技巧)代码(语法)
一.C++万能编译头文件 #include<bits/stdc++.h> VS2017添加万能头文件 从 #include <iostream> #include <cs ...
- 《3D编程模式》写书-第4次记录
大家好,这段时间我完成了"再看设计原则"的初稿,包括了设计基础.单一职责原则.依赖倒置原则.接口隔离原则.合成复用原则.最少知识原则.开闭原则 目前我已经完成了所有的初稿,后面会进 ...
- Mysql有布尔(BOOL)类型吗
转载请注明出处: 在MySQL中,没有专门的Boolean数据类型.相反,MySQL中使用TINYINT(1)来代表布尔类型,其中1表示真(True),0表示假(False).在MySQL中,TINY ...
- 分享一个在线二维码生成器(基于qrcode.js开发)
一种二维码扫描与生成的工具, 它可生成个性化二维码, 支持文本.网址.图片.短信.电话等格式及主题,提供融合码功能 演示地址 https://qrcode.gitapp.cn 关键代码 var qrc ...
- APB Slave状态机设计
`timescale 1ns/1ps `define DATAWIDTH 32 `define ADDRWIDTH 8 `define IDLE 2'b00 `define W_ENABLE 2'b0 ...
- 【BAT】递归替换文件后缀
@echo off set /p src_suffix=please input origin suffix: set /p des_suffix=please input target suffix ...
- [转帖]Web技术(五):HTTP/2 是如何解决HTTP/1.1 性能瓶颈的?
文章目录 一.HTTP/2 概览 二.HTTP/2 协议原理 2.1 Binary frame layer 2.1.1 DATA帧定义 2.1.2 HEADERS帧定义 2.2 Streams and ...
- [转帖]What is Pstate
https://www.jianshu.com/p/342480d917e3 When someone refers to a P-state, generally only the frequenc ...
- [转帖]【JVM】类文件结构
Class文件的定义 一组以8字节为基础单位的二进制流, 各个数据项目严格按照顺序紧凑排列在class文件中, 中间没有任何分隔符,这使得class文件中存储的内容几乎是全部程序运行的程序. 注:Ja ...
- ESXi6.5+vCenter6.5 CentOS7 虚拟机启动之后控制台黑屏的解决方案
公司最近搬迁服务器, 服务器的地址都发生了变化, 发现部分机器总是黑屏无法使用, 想了一个坚决办法使服务器能够连接设置地址后使用. 1. 控制台开机. 2. 注意在开机五秒之内打开web控制台, 然后 ...