摘要

随着现代化微服务架构的发展,系统故障的定位与快速恢复面临着诸多挑战,构建可检测的服务,帮助线上保障团队时刻掌控应用的运行状况越来越重要。本次分享会讲解如何让 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

与监控系统打通

  • 监控系统探针访问健康检查接口
  • 主动推送健康检查结果到监控系统

愿景

持续提高开发者的幸福感

视频链接

用ASP.NET Core构建可检测的高可用服务

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

如有任何疑问,请与我联系 (MingsonZheng@outlook.com) 。

用ASP.NET Core构建可检测的高可用服务--学习笔记的更多相关文章

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

    一.前言 2019 中国 .NET 开发者峰会(.NET Conf China 2019)于2019年11月10日完美谢幕,校宝在线作为星牌赞助给予了峰会大力支持,我和项斌等一行十位同事以讲师.志愿者 ...

  2. .NET 云原生架构师训练营(ASP .NET Core 整体概念推演)--学习笔记

    演化与完善整体概念 ASP .NET Core 整体概念推演 整体概念推演到具体的形式 ASP .NET Core 整体概念推演 ASP .NET Core 其实就是通过 web framework ...

  3. 使用ASP.NET Core构建RESTful API的技术指南

    译者荐语:利用周末的时间,本人拜读了长沙.NET技术社区翻译的技术标准<微软RESTFul API指南>,打算按照步骤写一个完整的教程,后来无意中看到了这篇文章,与我要写的主题有不少相似之 ...

  4. 在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序

    前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...

  5. 魅族资深DBA:利用MHA构建MySQL高可用平台

    龙启东 魅族资深DBA 负责MySQL.Redis.MongoDB以及自动化平台建设 .擅长MySQL高可用方案.SQL性能优化.故障诊断等. 本次分享主要包括以下几方面: 如何利用MHA 改造MHA ...

  6. ASP.NET Core 入门教程 1、使用ASP.NET Core 构建第一个Web应用

    一.前言 1.本文主要内容 Visual Studio Code 开发环境配置 使用 ASP.NET Core 构建Web应用 ASP.NET Core Web 应用启动类说明 ASP.NET Cor ...

  7. 【Asp.Net Core】在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序

    前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...

  8. RabbitMQ(四):使用Docker构建RabbitMQ高可用负载均衡集群

    本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群.受限于自身条件,本 ...

  9. ASP.NET Core基于K8S的微服务电商案例实践--学习笔记

    摘要 一个完整的电商项目微服务的实践过程,从选型.业务设计.架构设计到开发过程管理.以及上线运维的完整过程总结与剖析. 讲师介绍 产品需求介绍 纯线上商城 线上线下一体化 跨行业 跨商业模式 从0开始 ...

随机推荐

  1. salt-api 获取服务器信息,minion批量执行cmd命令

    import requests import json try: import cookielib except: import http.cookiejar as cookielib # 使用url ...

  2. Python三级菜单作业实现

    数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, ...

  3. jQuery 源码解析(二十二) DOM操作模块 复制元素 详解

    本节说一下DOM操作模块里的复制元素子模块,该模块可以复制一个DOM节点,并且可选择的设置是否复制其数据缓存对象(包含事件信息)和是否深度复制(子孙节点等),API如下: $.clone(elem, ...

  4. Java题库——Chapter5 方法

    1)Suppose your method does not return any value, which of the following keywords can be used as a re ...

  5. 每日一题LeetCode 8. 字符串转换整数 (atoi)

    问题描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将 ...

  6. 在Asp.Net或.Net Core中配置使用MarkDown富文本编辑器有开源模板代码(代码是.net core3.0版本)

    研究如何使用Markdown你们可能要花好几天才能搞定,但是看我的文章或者下载了源码,你搞定一般在10分钟之内.我先给各位介绍下它: Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯 ...

  7. 基于asp.net(C#)MVC+前端bootstrap+ztree+lodash+jquery技术-Angel工作室通用权限管理

    一.Angel工作室简单通用权限系统简介 AngelRM(Asp.net MVC Web api)是基于asp.net(C#)MVC+前端bootstrap+ztree+lodash+jquery技术 ...

  8. Spring Boot 2 构建可部署的war包

    默认情况下Spring Boot使用了内嵌的Tomcat服务器,项目最终被打成jar包运行,每个jar包可以被看作一个独立的Web服务器.传统的Web开发,一般会将Web应用打成一个war包,然后将其 ...

  9. Python的range、enumerate和zip函数用法

    range函数可创建一个整数列表.如果需要知道当前元素在列表中的索引,推荐用enumerate代替range.zip函数用于同时遍历多个迭代器. 一.range 函数 range函数可创建一个整数列表 ...

  10. android binder 进程间通信机制2 - Binder进程间通信库实现原理

    1.Service组件 使用模板类BnInterface描述,称为Binder本地对象,对应于Binder驱动程序中的Binder实体对象 实现原理图如下: