首页
学习
活动
专区
工具
TVP
发布

圣杰的专栏

一名立志成为架构师并为之努力奋斗的程序员
专栏作者
126
文章
183327
阅读量
61
订阅数
.NET DevOps 接入指南 | 1. GitLab 安装
容器、DevOps和微服务被称为驱动云原生快速发展的三架马车。而DevOps是其中非常重要的一环,DevOps 是由Developers(Dev)和Operations(Ops)两个单词简称组成,中文直译就是“开发运维一体化”。
圣杰
2023-12-29
1010
需求分析
在ChatGPT 火热的当下, 即使没有上手亲自体验,想必也对ChatGPT的强大略有耳闻。当一些人在对ChatGPT犹犹豫豫之时,一些敏锐的企业主和开发者们已经急不可耐的开展基于ChatGPT模型AI应用的落地探索。 因此,可以明确预见的是,AI 能力的集成将会是很多应用都将面临的第一事项,而拥有相关性技能的人才屈指可数。而这,正是机会所在,而机会是留给有准备之人,因此,有幸看到本文的开发者们,开始考虑面向AI编程吧。 即使当下的公司没有相关的机会,也可以着手一些相关的知识储备,比如学习如何写得一手好的Prompt,了解一下目前主流的面向AI编程的开发框架,比如Python技术栈的LangChain,.NET技术栈的Semantic Kernal。 而本文就来简单梳理什么是Semantic Kernal,可以基于Semantic Kernal 做什么?
圣杰
2023-04-08
6170
配置中心 | .NET 集成 Nacos 配置中心
在微服务时代,通常为了提高服务性能而部署多个服务实例,而每个服务的实例都有自己的配置,如果想要更新某个配置,则需要更新每个实例的配置,如果微服务数量不多,尚且可以手动更新,但倘若服务数量较多,则手动更新不仅繁杂而且容易出错。而配置中心,就是来解决这个问题,配置中心可以有效帮助开发者更快捷地更新和管理配置,减少因配置错误而导致的服务中断,从而提高系统的可用性和可靠性。 在开源生态中,主流的配置中心还是Java阵营的Nacos和Apollo,但都提供了 .NET 的SDK便于快速接入,当然.NET 阵营也有一个配置中心新秀:AgileConfig。但相较而言,Nacos架构更加简洁且部署方便,并且已有对应商业版本在阿里云上稳定运行,因此接下来本文将重点介绍.NET 如何集成 Nacos 配置中心。
圣杰
2023-03-10
9310
.NET 使用NLog增强日志输出
不管你是开发单体应用还是微服务应用,在实际的软件的开发、测试和运行阶段,开发者都需要借助日志来定位问题。因此一款好的日志组件将至关重要,在.NET 的开源生态中,目前主要有Serilog、Log4Net和NLog三款优秀的日志组件,但相较而言,NLog功能更加强大且扩展性强,允许开发者在仅修改配置文件的方式来丰富日志输出内容,支持多种日志格式,包括XML、JSON、YAML等,支持多种输出目标,包括文件、数据库、控制台、Loki、ElasticSearch等,支持自定义日志格式,支持日志级别,支持异步写入等功能。
圣杰
2023-03-10
2.6K0
分布式事务 | 使用 dotnetcore/CAP 的本地消息表模式
本地消息表模式,其作为柔性事务的一种,核心是将一个分布式事务拆分为多个本地事务,事务之间通过事件消息衔接,事件消息和上个事务共用一个本地事务存储到本地消息表,再通过定时任务轮询本地消息表进行消息投递,下游业务订阅消息进行消费,本质上是依靠消息的重试机制达到最终一致性。其示意图如下所示,主要分为以下三步:
圣杰
2023-02-10
5010
分布式事务 | 使用DTM 的Saga 模式
前面章节提及的MassTransit、dotnetcore/CAP都提供了分布式事务的处理能力,但也仅局限于Saga和本地消息表模式的实现。那有没有一个独立的分布式事务解决方案,涵盖多种分布式事务处理模式,如Saga、TCC、XA模式等。有,目前业界主要有两种开源方案,其一是阿里开源的Seata,另一个就是DTM。其中Seata仅支持Java、Go和Python语言,因此不在.NET 的选择范围。DTM则通过提供简单易用的HTTP和gRPC接口,屏蔽了语言的无关性,因此支持任何开发语言接入,目前提供了Go、Python、NodeJs、Ruby、Java和C#等语言的SDK。 DTM,全称Distributed Transaction Manager,是一个分布式事务管理器,解决跨数据库、跨服务、跨语言更新数据的一致性问题。它提供了Saga、TCC、 XA和二阶段消息模式以满足不同应用场景的需求,同时其首创的子事务屏障技术可以有效解决幂等、悬挂和空补偿等异常问题。
圣杰
2023-02-10
1.3K0
MassTransit | 基于StateMachine实现Saga编排式分布式事务
状态机作为一种程序开发范例,在实际的应用开发中有很多的应用场景,其中.NET 中的async/await 的核心底层实现就是基于状态机机制。状态机分为两种:有限状态机和无限状态机,本文介绍的就是有限状态机,有限状态机在任何时候都可以准确地处于有限状态中的一种,其可以根据一些输入从一个状态转换到另一个状态。一个有限状态机是由其状态列表、初始状态和触发每个转换的输入来定义的。如下图展示的就是一个闸机的状态机示意图:
圣杰
2023-01-31
9951
MassTransit 知多少 | 基于MassTransit Courier实现Saga 编排式分布式事务
Saga 最初出现在1987年Hector Garcaa-Molrna & Kenneth Salem发表的一篇名为《Sagas》的论文里。其核心思想是将长事务拆分为多个短事务,借助Saga事务协调器的协调,来保证要么所有操作都成功完成,要么运行相应的补偿事务以撤消先前完成的工作,从而维护多个服务之间的数据一致性。举例而言,假设有个在线购物网站,其后端服务划分为订单服务、支付服务和库存服务。那么一次下订单的Saga流程如下图所示:
圣杰
2022-12-13
1.1K0
MassTransit | .NET 分布式应用框架
MassTransit,直译公共交通, 是由Chris Patterson开发的基于消息驱动的.NET 分布式应用框架,其核心思想是借助消息来实现服务之间的松耦合异步通信,进而确保应用更高的可用性、可靠性和可扩展性。通过对消息模型的高度抽象,以及对主流的消息代理(包括RabbitMQ、ActiveMQ、Kafaka、Azure Service Bus、Amazon SQS等)的集成,大大简化了基于消息驱动的开发门槛,同时内置了连接管理、消息序列化和消费者生命周期管理,以及诸如重试、限流、断路器等异常处理机制,让开发者更好的专注于业务实现。 简而言之,MassTransit实现了消息代理透明化。无需面向消息代理编程进行诸如连接管理、队列的申明和绑定等操作,即可轻松实现应用间消息的传递和消费。
圣杰
2022-11-03
1.2K0
Dapr 知多少 | 分布式应用运行时
Dapr 官方团队已于最近(2021.2.17)正式发布Dapr v1.0,Dapr已正式生产可用,可以部署到自托管环境或 Kubernetes 集群。对于绝大多数开发者来说,想必对Dapr只是有所耳闻,而具体是什么(What),可以解决什么样的问题(Why&How),有怎样的应用场景(Where),并不知悉。本文就尝试简要梳理下Dapr,并尝试回答以上问题。
圣杰
2021-02-25
1.4K0
Goodbye 2020,Welcome 2021 | 沉淀 2021
2021年,已开启二月的篇章,农历新年也张灯结彩而来,只不过要留守过年。在这辞旧迎新之际,踏入而立之年之时,正是算账的好时候,数一数今年的成长,讲一讲来年的期望,最重要的还是要理一理欠下的旧账。
圣杰
2021-02-22
3690
Istio 知多少 | 下一代微服务的守护者
在写完eShopOnContainers 知多少[12]:Envoy gateways后,就一直想进一步探索Service Mesh,最近刚在极客时间上学完《Service Mesh入门》,又大致浏览了一遍官方文档,对Istio也算有了基本的认识。下面就根据自己的理解对Istio进行简单的梳理,算是对知识的总结吧。
圣杰
2021-01-13
5000
eShopOnContainers 知多少[12]:Envoy gateways
在最新的eShopOnContainers 3.0 中Ocelot 网关被Envoy Proxy 替换。下面就来简要带大家了解下Envoy,并尝试梳理下为什么要使用Envoy替代Ocelot。
圣杰
2020-10-28
9690
诊断日志知多少 | DiagnosticSource 在.NET上的应用
最近为了解决ABP集成CAP时无法通过拦截器启用工作单元的问题,从小伙伴那里学了一招。借助DiagnossticSource,可以最小改动完成需求。关于DiagnosticSource晓东大佬18年在文章 在 .NET Core 中使用 Diagnostics (Diagnostic Source) 记录跟踪信息就有介绍,文章开头就说明了Diagnostics 一直是一个被大多数开发者忽视的东西。是的,我也忽略了,这个好东西,有必要学习一下,下面就和大家简单聊一聊System.Diagnostics.DiagnosticSource在.NET上的应用。
圣杰
2020-10-16
8300
Orleans 知多少 | Orleans 中文文档上线
Orleans建立在.NET开发人员生产力的基础上,并将其带入了分布式应用程序的世界,例如云服务。 Orleans可从单个本地服务器扩展到云中全局分布的高可用性应用程序。
圣杰
2020-09-01
7050
.NET Core + K8S + Apollo 玩转配置中心
如官网所述:Apollo 是携程打造的开源配置中心,GitHub的星星也快点满22K,因此足见它的成熟度和社区活跃度。因此最近在做配置中心选型的时候,经过一番预演,最终敲定Apollo。
圣杰
2020-08-20
9790
.NET Core + K8S + Loki 玩转日志聚合
最近在了解日志聚合系统,正好前几天看到一篇文章《用了日志系统新贵Loki,ELK突然不香了!》,所以就决定动手体验一下。本文就带大家快速了解下Loki,并简单介绍.NET Core如何集成Loki。
圣杰
2020-07-28
1.3K0
五分钟快速搭建Serverless免费邮件服务
本文将带你快速基于 Azure Function 和 SendGrid 构建一个免费的Serverless(无服务器)的邮件发送服务,让你感受下Serverless的强大之处。
圣杰
2020-07-23
2.9K1
eShopOnContainers 知多少[11]:服务间通信之gRPC
最近翻看最新3.0 eShopOncontainers源码,发现其在架构选型中补充了 gRPC 进行服务间通信。那就索性也写一篇,作为系列的补充。
圣杰
2020-07-13
4820
集群环境下,你不得不注意的ASP.NET Core Data Protection 机制
最近线上环境遇到一个问题,就是ASP.NET Core Web应用在单个容器使用正常,扩展多个容器无法访问的问题。查看容器日志,发现以下异常:
圣杰
2020-06-19
9460
点击加载更多
社区活动
Python精品学习库
代码在线跑,知识轻松学
热点技术征文第五期
新风口Sora来袭,普通人该如何把握机会?
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·干货材料·成员作品·最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档