一、前言

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、总结

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

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

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

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

四、愿景

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

用ASP.NETCore构建可检测的高可用服务相关推荐

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

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

  2. 用简单的方法构建一个高可用服务端

    2019独角兽企业重金招聘Python工程师标准>>> 一. 什么是高可用性 服务端,顾名思义就是为用户提供服务的. 停工时间,就是不能向用户提供服务的时间. 高可用,就是系统具有高 ...

  3. 构建eureka高可用服务

    大家有没有注意到一个点,我们这里部署的eureka是单点的,就一台,我们只有一个实例,我们之前学过eureka的高可用,那如何在rancher上部署eureka高可用呢,如何在java -jar做到高 ...

  4. JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

    一.什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的.停工时间,就是不能向用户提供服务的时间.高可用,就是系统具有高度可用性,尽量减少停工时间.如何用最简单的方法来搭建 ...

  5. Hystrix面试 - 用 Hystrix 构建高可用服务架构

    Hystrix面试 - 用 Hystrix 构建高可用服务架构 Hystrix 是什么? 在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也 ...

  6. heartbeat+drbd+mysql构建mysql高可用群集

    heartbeat+drbd+mysql构建mysql高可用群集 1. 试验环境: 操作系统:Red Hat Enterprise Linux 5.4 所需的软件包: mysql-5.5.22.tar ...

  7. 亿级流量电商详情页系统实战:缓存架构+高可用服务架构+微服务架构

    <缓存架构+高可用服务架构+微服务架构>深入讲解了亿级流量电商详情页系统的完整大型架构.同时最重要的是,在完全真实的大型电商详情页系统架构下,全流程实战了整套微服务架构,包含了基于领域驱动 ...

  8. 阿里云应用高可用服务公测发布

    产品介绍: 应用高可用服务 AHAS 是一款专注于提高应用高可用能力的 SaaS 产品,提供应用架构自动探测.故障注入式高可用能力评测和一键应用限流降级等功能,可以快速低成本地提升应用可用性. 适用客 ...

  9. 如何设计不宕机的 Redis 高可用服务?

    随着业务的不断发展和扩张我们需要更加稳定和高效的 Redis 服务,这是业务发展的必然趋势也是个人能力进阶的最高境界,我们需要一个高可用的 Redis 服务,来支撑和保证业务的正常运行. 我们本文的面 ...

最新文章

  1. 利用蒙特卡罗法,国外老哥成功制造出 100% 投篮命中的篮板!
  2. golang日期时间格式format()
  3. centos7部署两个mysql_一文掌握mysql实用工具--pt-online-schema-change、innotop部署
  4. js显示PHP源代码命令,layedit富文本编辑器中如何添加显示源码功能(代码)
  5. 上下双刘海设计感受下!夏普新旗舰亮相:骁龙855加持
  6. win10删除开机密码_教你电脑如何设置开机密码_win10教程
  7. 大学生活没钱你会学习还是打工? C2 翻译有感
  8. 给路由器刷 padavan 改造家庭无线网络
  9. 关于 Unbalanced calls to begin/end appearance transitions
  10. 中英文字数统计以及信息熵的计算
  11. 输入数字怎么变成大写python_Python将阿拉伯数字转化为中文大写
  12. 什么是开关量,I/O区分详细解答
  13. Excel如何快速插入图片?
  14. Openpyxl 修改单元格长宽
  15. iptables匹配功能length
  16. 华为机考108题(c++)(41-51)
  17. 1×pbs缓冲液配方_【pbs缓冲液配制】动物细胞培养pbs缓冲液配制
  18. PLC学习笔记(三):PLC结构(2)
  19. 收集-网站后台优秀文章
  20. 记一次升级了编译器后VSCode中产生的问题

热门文章

  1. DataForm 中通过外面的按钮进行提交时,出错
  2. Office SharePoint Server 2007
  3. 财税、管理知识,离您那么远吗?
  4. latex插入gif_如何将照片和GIF插入Google幻灯片
  5. 手机主题随手机壳改变_无线充电可以与手机壳一起使用吗?
  6. 腾讯地图判断点是否在区域内
  7. springcloud~Eureka实例搭建
  8. 亿方云CEO程远:转型第一式:链接企业人与数据
  9. Windows 7 下右键发送到菜单项没了
  10. 李洪强iOS开发之- 实现简单的弹窗