用ASP.NET Core构建可检测的高可用服务--学习笔记

摘要
随着现代化微服务架构的发展,系统故障的定位与快速恢复面临着诸多挑战,构建可检测的服务,帮助线上保障团队时刻掌控应用的运行状况越来越重要。本次分享会讲解如何让 ASP .NET Core 应用与现代化云基础设施完美融合,提升服务的可检测性,保障线上系统的可用率。
技术架构进化史
- 单体架构
- 服务化架构(SOA)
- 微服务架构
- Service Mesh
架构进化带来的挑战
- 应用越拆越多
- 拓扑越来越复杂
- 故障定位难上加难
哪些场景需要应用可检测
- 故障自动隔离
- 故障定位排查
- 服务可用性检测
- 服务性能测试
.NET Core 的可检测性支持
- 日志框架(Logging)
- 诊断框架(Diagnostics)
- 健康检查框架(HealthChecks)
.NET Core 的日志框架 -- Microsoft.Extensions.Logging
.NET Core 的日志框架特性

.NET Core 的日志框架适用场景
- 用户请求日志
- 异常日志记录
- 外部接口的调用日志
- 复杂组件的调试警告输出
日志小技巧

.NET Core 的诊断框架 -- System.Diagnostics
主要类:
System.Diagnostics.DiagnosticListener
System.Diagnostics.DiagnosticSource
.NET Core 的诊断框架特性
- 事件发布订阅的设计模型
- 支持任意对象追踪
- 支持动态开关
- 支持监听筛选
.NET Core 的诊断框架适用场景
- 日志组件无法满足需求时
- 期望对组件内部执行过程跟踪时
- 期望特定事件发生时,在外部修改组件对象
.NET Core 的诊断框架的应用案例
- HttpClient
- MySql.Data
- CAP 组件
- SkyWalking .NET
ASP .NET Core 的健康检查框架 -- Microsoft.AspNetCore.Diagnostics.HealthChecks
ASP .NET Core 的健康检查框架特性

ASP .NET Core 的健康检查框架应用场景
- 检查应用端口是否可访问
- 检查应用依赖服务是否可访问
- 检查应用内组件是否正常工作
与云服务融合实现故障隔离
- 负载均衡的健康检查
- K8S 的 LivenessProbe
与监控系统打通
- 监控系统探针访问健康检查接口
- 主动推送健康检查结果到监控系统
愿景
持续提高开发者的幸福感
视频链接


本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
如有任何疑问,请与我联系 (MingsonZheng@outlook.com) 。
用ASP.NET Core构建可检测的高可用服务--学习笔记的更多相关文章
- China.NETConf2019 - 用ASP.NETCore构建可检测的高可用服务
一.前言 2019 中国 .NET 开发者峰会(.NET Conf China 2019)于2019年11月10日完美谢幕,校宝在线作为星牌赞助给予了峰会大力支持,我和项斌等一行十位同事以讲师.志愿者 ...
- .NET 云原生架构师训练营(ASP .NET Core 整体概念推演)--学习笔记
演化与完善整体概念 ASP .NET Core 整体概念推演 整体概念推演到具体的形式 ASP .NET Core 整体概念推演 ASP .NET Core 其实就是通过 web framework ...
- 使用ASP.NET Core构建RESTful API的技术指南
译者荐语:利用周末的时间,本人拜读了长沙.NET技术社区翻译的技术标准<微软RESTFul API指南>,打算按照步骤写一个完整的教程,后来无意中看到了这篇文章,与我要写的主题有不少相似之 ...
- 在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序
前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...
- 魅族资深DBA:利用MHA构建MySQL高可用平台
龙启东 魅族资深DBA 负责MySQL.Redis.MongoDB以及自动化平台建设 .擅长MySQL高可用方案.SQL性能优化.故障诊断等. 本次分享主要包括以下几方面: 如何利用MHA 改造MHA ...
- ASP.NET Core 入门教程 1、使用ASP.NET Core 构建第一个Web应用
一.前言 1.本文主要内容 Visual Studio Code 开发环境配置 使用 ASP.NET Core 构建Web应用 ASP.NET Core Web 应用启动类说明 ASP.NET Cor ...
- 【Asp.Net Core】在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序
前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...
- RabbitMQ(四):使用Docker构建RabbitMQ高可用负载均衡集群
本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群.受限于自身条件,本 ...
- ASP.NET Core基于K8S的微服务电商案例实践--学习笔记
摘要 一个完整的电商项目微服务的实践过程,从选型.业务设计.架构设计到开发过程管理.以及上线运维的完整过程总结与剖析. 讲师介绍 产品需求介绍 纯线上商城 线上线下一体化 跨行业 跨商业模式 从0开始 ...
随机推荐
- JavaScript中使用正则表达式
JavaScript中正则表达式的使用 创建正则对象 RegExp 对象是带有预定义属性和方法的正则表达式对象. 方式一: var reg = new RegExp("\d", ' ...
- C#斐波那契数列求法(比较阶乘和循环所用时间)
using System; namespace ConsoleApp3 { class Program { static void Main(string[] args) { Console.Writ ...
- js 对 只包含简单类型数据的对象 为元素 组成的数组 进行去重
/** * 对于由简单类型数据组成的对象为元素组成的数组进行去重操作 * @params {Array} 需要去重的对象数组 * @returns {Array} 去重后的对象数组 */ functi ...
- Vue-element-admin实现菜单根据用户权限动态加载
之前有一些网友对我那个IT部门信息管理系统(http://caijt.com/it)的前端感兴趣,我已经开源到github(https://github.com/Caijt/itsys-ui) 上面有 ...
- Web前端基础(18):jQuery基础(五)
1. 事件 前面我们介绍完js的事件流的概念之后,相信大家对事件流也有所了解了.那么接下来我们看一下jquery的事件操作. 在说jquery的每个事件之前,我们先来看一下事件对象 . 1.1 事件对 ...
- SpringCloud(四):使用Feign实现声明式服务调用
一.Feign介绍Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单.使用Feign,只需要创建一个接口并注解.它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解 ...
- 平时代码中用不到设计模式?Are you kidding me?
引子 平时我是个反应非常慢的人.有多慢呢?大概是两年前有次团队内部开会时,我听到同学说平时代码中用不到设计模式,我当时没有回答.两年后我终于反应过来了:“Are you kidding me?我每天都 ...
- HTML实例之搜索栏(附源码)
1. 简书类 实现效果 html代码 <div class="container"> <form action="" class=" ...
- JS&Jquery基础之对象和数组以及类型转换
一.{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数. 如:var LangShen = {"Name":"Langshen",&qu ...
- 微信小程序开发——上传代码片段到git仓库
微信开发者工具除了自带的git版本管理(本地服务)之外,还可以推送到在线git仓库中去,这样别人也可以通过git来拉取你的代码片段或小程序. 一.1.登录git 一.2.点击创建项目 一.3.填写项 ...