首页 > 编程语言 >China.NETConf2019 - 用ASP.NETCore构建可检测的高可用服务

China.NETConf2019 - 用ASP.NETCore构建可检测的高可用服务

时间:2024-07-05 09:42:52浏览次数:18  
标签:Core ASP 框架 NETCore NETConf2019 健康检查 NET 日志

一、前言

2019 中国 .NET 开发者峰会(.NET Conf China 2019)于2019年11月10日完美谢幕,校宝在线作为星牌赞助给予了峰会大力支持,我和项斌等一行十位同事以讲师、志愿者的身份公司参与到峰会的支持工作中,我自己很荣幸能够作为讲师与大家交流,分享了主题《用ASP.NET Core构建可检测的高可用服务》,借这篇文章,将主题的内容分享给大家。

 

 

二、为什么应用的可检测性越来越重要

 

随着技术架构的发展,系统的规模不断扩大,尤其是随着微服务架构的流行,应用的拆分颗粒度越来越细,个数越来越多,服务间的调用拓扑也越来越复杂,开发者在故障定位、问题排查、健壮性改进方面投入的时间越来越多。应用程序可检测性的提高,可以帮助我们掌控系统运行的情况,洞悉系统内部发生的事件,给开发者提供持续提升系统高可用能力的决策依据。

 

 

 

 

这里列举出对应用程序的可检测性有依赖的主要场景:

故障自动隔离,应用程序需要具备暴露自己运行状况的能力,与负载均衡、kubernetes等基础设施配合,识别故障并进行隔离

故障定位排查,应用程序给出的故障信息越精准,故障定位的效率越高

服务(接口)的可用率,接口可用率的抖动与系统运行健康状况直接相关,与业务的成功率也直接相关

服务(接口)的性能,系统的性能问题,往往需要细粒度地进行识别和优化,性能检测是打造高可用系统必不可少的工作

 

 

 

三、ASP.NET Core的可检测三件套

1、概述

在构建ASP.NET Core应用时,有三大框架可以帮助我们实现应用的可检测能力,实际上这些框架不止适用于ASP.NET Core,使用.NET Core开发的任何类型的应用,都可以用这三个框架:

l  日志框架

l  诊断框架

l  健康检查框架

 

 

 

2、.NET Core的日志框架

Microsoft.Extensions.Logging日志框架是.NET Core提供的全新框架,将日志记录器抽象为ILogger接口,按照严重程度从低到高定义了日志级别,提供了丰富的内置提供程序,且可扩展性极强,能够轻松地实现自定义日志提供程序,同时社区已经有丰富的实现,大量老牌的日志框架也提供了适配实现。

 

 

 

 

小技巧:由于大量高频的字符串拼接处理会对性能有明显的影响,在编写日志记录代码时,需要特别注意,将日志内容的字符串拼接推迟到日志分析记录的阶段,可以避免无效的字符串拼接执行,降低系统的性能损耗。

 

 

 

3、.NET Core的诊断框架

 

考虑到跨平台的场景,.NET Core为我们带来了全新的诊断框架,提供了两个核心的类型,DiagnosticListener和DiagnosticSource,借助这两个类型,我们可以轻松将诊断代码嵌入到我们的应用和组件中。同时新的诊断框架于.NET原有的诊断框架进行了适配,可以兼容老系统的诊断代码。

 

 

 

 

 

4、.NET Core的健康检查框架

 

为了让我们能够轻松构建与云基础设施协作的应用,ASP.NET Core在2.1版本开始,提供了健康检查组件,我们可以用简单的几行代码实现应用程序健康状况的暴露,健康检查框架有灵活的配置能力和可扩展能力,可以轻松适配各种检测场景。

 

 

 

 

5、与云基础设施融合

 

借助健康检查组件,我们可以将应用的健康状况暴露给负载均衡的健康检查,也可以与Kubernetes的Liveness、Readiness集成,使我们具备故障自动隔离的能力,保障系统在应用重启、滚动发布、回滚等操作时的可用性。

 

 

 

借助日志框架和健康检查框架,我们可以实时暴露系统的运行状况,并以推、拉的方式将信息透出给监控系统,并配置对应的告警策略,我们可以在系统发生异动时,第一时间知晓故障的节点和故障原因,快速做出响应。

 

 

 

6、总结

诊断框架,提供了在运行时侦测任意组件内部事件的能力。

日志框架,提供了将信息透出给系统外部的能力。

健康检查框架,提供了应用程序于云基础设施适配协作的能力。

借助这三个框架,我们可以很便捷地将系统打造为可检测的系统,并与现代化的云基础设施完美协作,实现系统的高可用。

 

四、愿景

 

开发者的幸福感,应该来自于通过技术实现的社会价值和商业价值,而.NET强大的生产力能力,正是开发者的有力武器。作为.NET社区的一员,也期望.NET生态能够帮助更多的开发者,借助强大的Visual Studio以及Visual Studio Code工具,高效地实现价值,持续提高开发者的幸福感。

 

 

 

2024-07-05 09:34:41【出处】:https://www.cnblogs.com/xiaoweiyu/p/11880549.html

=======================================================================================

标签:Core,ASP,框架,NETCore,NETConf2019,健康检查,NET,日志
From: https://www.cnblogs.com/mq0036/p/18285142

相关文章

  • Asp .Net Core 系列:基于 Castle DynamicProxy + Autofac 实践 AOP 以及实现事务、用户
    目录什么是AOP?.NetCore中有哪些AOP框架?基于CastleDynamicProxy实现AOPIOC中使用CastleDynamicProxy实现事务管理实现用户自动填充什么是AOP?AOP(Aspect-OrientedProgramming,面向切面编程)是一种编程范式,旨在通过将横切关注点(cross-cuttingconcerns)从主要业务逻辑......
  • C#面:ASP.NET Core ⽐ ASP.NET 更具优势的地⽅是什么?
    ASP.NETCore相对于ASP.NET具有以下几个优势:跨平台支持:ASP.NETCore是跨平台的,可以在Windows、Linux和macOS等多个操作系统上运行。这使得开发人员可以选择更适合他们的操作系统来进行开发和部署。更轻量级:ASP.NETCore是一个轻量级的框架,它具有更小的内存占用和更快的启动......
  • Pgsql帮助类 netcore
    十年河东,十年河西,莫欺少年穷学无止境。精益求精usingNpgsql;usingSystem;usingNpgsqlTypes;usingSystem.Data;usingSystem.Collections.Generic;usingSystem.Reflection;usingSystem.Configuration;usingswapCommon;namespacePgSqlHelper{publiccla......
  • asp.net core 通过SFTP下载文件
     引用第三方库:Ssh.Net try{using(varclient=newSftpClient(ftpHost,ftpPort,ftpUsername,ftpPassword)){client.Connect();IEnumerable<ISftpFile>fileEnumerable=client.ListDirectory(remoteDirectory,null).Where(g......
  • linux安装netcore nginx postgresql ssh
    sudosu1.安装软件$sudoaptinstall软件名2.卸载软件$sudoaptremove软件名3.更新可用软件包列表$sudoaptupdate4.更新已安装的包$sudoaptupgrade通常安装完ubuntu之后,可以先使用upgrade更新一下当前系统中可以升级的的软件包$sudoaptupdate$sudoap......
  • ASP.NET Core Blazor 5:Blazor表单和数据
      本章将描述Blazor为处理HTML表单提供的特性,包括对数据验证的支持。1准备工作  继续使用上一章项目。  创建Blazor/Forms文件夹并添加一个名为EmptyLayout.razor的Razor组件。本章使用这个组件作为主要的布局。@inheritsLayoutComponentBase<divclass="......
  • Asp.Net Core -Authorizationz授权
    授权的内部实现参考动态授权参考 动态授权基于权限的授权1.定义权限-PermissionspublicclassPermissions{publicconststringAdmin="Admin";publicconststringUsers="Users";publicconststringUserCreate=Users+".Create";......
  • Asp.NET identity以及Owin
    》》》Identity是集成到Owin框架中中●Microsoft.AspNet.Identity.Core:Identity的核心类库,实现了身份验证的核心功能,并提供了拓展接口。●Microsoft.AspNet.Identity.EntityFramework:Identity数据持久化的EF实现。●Microsoft.AspNet.Identity.OWIN:基于Identi......
  • Ubuntu24.04配置支持asp.net framework 4.0的apache服务器
    参考《在Linux(Ubuntu/openSUSE/CentOS)下配置ASP.NET(Apache+Mono)》,但由于操作系统版本不一样,部分命令要修改1、安装apachesudoapt-getinstallapache22、安装mono及apache支持模块,这里安装很正常,并没有文中提到的卡死情况,应该是已经修复这个bug了。sudoaptinstallmon......
  • NetCore的全局日志记录
    Http进来的数据和出去的数据都记录在log中publicclassHttpLoggingMiddleware{privatereadonlyRequestDelegate_next;privatereadonlyILogger<HttpLoggingMiddleware>_logger;publicHttpLoggingMiddleware(RequestDelegatenext,ILogger<HttpLoggingM......