首页 文章 精选 留言 我的

精选列表

搜索[自托管研发协作平台],共10000篇文章
优秀的个人博客,低调大师

夜莺监控成为首个 CCF 托管开源项目

夜莺监控(Nightingale)是一款开源云原生监控分析系统。采用 All-In-One 的设计,集数据采集、可视化、监控告警、数据分析于一体,与云原生生态紧密集成,提供开箱即用的企业级监控分析能力。已有众多用户选择将Prometheus + AlertManager + Grafana 的开源组合方案升级为使用夜莺监控方案。 2022年5月11日,中国计算机学会(下文简称“CCF”)在中科院计算所报告厅举行了夜莺监控开源项目捐赠仪式,夜莺监控成为CCF开源发展委员会(下文简称“CCF ODC”)成立后接受捐赠的首个开源项目。 夜莺监控项目缘起 云原生监控,仅有Prometheus还不够 虽然 Prometheus 已成为了云原生监控领域的事实标准,但是其重心是在定标准、打造基础能力、构建生态,这个定位和认知无限加强了其在监控的基础能力和标准层面的影响力,这也制约了Prometheus 在企业级产品化方向上的发展,Prometheus 在企业级监控场景下落地,仍然存在着较多的痛点,譬如: 现有开源组合方案 Prometheus + Alertmanager + Grafana 的多个系统较为割裂,无法开箱即用; 通过修改配置文件来管理 Prometheus、Alertmanager ,学习难度高,用户较多时协同困难; 数据量过大而无法有效扩展 Prometheus 集群; 生产环境运行多套 Prometheus 集群,面临分区管理和使用成本高的问题; 从纷繁复杂的监控数据到产生有价值的洞见,缺乏场景化的方法论支撑; 业务往云原生架构转型,推动我们开发了夜莺监控 公司在 2016 年初,开始往云原生架构转型,重度采用 K8S 和容器化技术栈,同时在架构转型的过程中,传统的物理机架构和云原生架构,会持续的并存和交织。在这个“漫长”过程中,对新一代的企业级监控提出了更高的要求,如何以一套监控产品,来保障大规模异构环境的可观测性,在支撑10亿级别活跃时间线数据量的同时,提供良好的用户体验,减少业务在架构转型过程中的风险和摩擦。 于是,我们从当时公司自身的云原生架构转型需求出发,结合 Prometheus 构建的标准化能力,以及在公司大规模场景的实践经验,采用 All-In-One 的设计原则,为提供企业级的功能特性、开箱即用的产品体验,打造了“新一代云原生监控分析系统” —— 夜莺监控。夜莺监控于2020年3月在 Github 上以 Apache License V2 授权协议开源。 开源之后,凭借其优秀的产品设计,夜莺监控快速发展为国内最活跃的企业级云原生监控方案。迄今为止,在Github上已经迭代发布了65个版本,获得了4500个Star,同时有了60多位外部代码贡献者。产品快速的迭代,也让夜莺监控的用户群越来越大,涉及各行各业。越来越多的用户选择将Prometheus + AlertManager + Grafana的开源组合方案升级为夜莺监控。 CCF开放创新的开源治理架构,会让夜莺监控更具生命力 监控,是一个历史悠久、又再次焕发勃勃生机的 IT 技术领域,长期以来都是由国外商业化软件和开源软件所主导。伴随着云原生和微服务架构的普及,监控逐步演化为更广义的“可观测性”的概念,成为系统设计天然不可分割的有机组成部分。从 CNCF Landscape of Observability 统计数据来看,来自国内开发团队的项目占比大概为6%,如果再加上“国产&开源”这个组合条件,比例就降到了 3%。国产开源云原生监控方案,缺位已久。 中国计算机学会创建开源发展委员会(CCF Opensource Development Committee, CCF ODC),是 CCF 落实国家十四五规划纲要提出的“支持数字技术开源社区等创新联合体发展”的重要举措,旨在构建产学研项目成果共享孵化机制,加速产教研深度融合的开源生态建设。 开源项目要更有生命力,离不开开放的治理架构和源源不断的开发者共同参与。CCF作为国内顶级计算机专业学会,其开源发展委员会,有众多开源领域和学界泰斗级别的大师领衔,秉持的开放、中立、创新、产学研融合的开源理念。其助力我国开源生态建设发展的初衷和夜莺监控项目专注打造一流云原生监控开源监控的长期目标深度契合。 我们相信,夜莺监控项目加入CCF 开源大家庭后,能在计算机学会的支持和带动下,进一步结合云原生、可观测三支柱、国产化等多个技术发展的需求,建立开放、中立的开源治理架构,吸纳更多来自高校、企业等各方面对云原生技术感兴趣、有热情的计算机专业人士,打造更专业、有活力的开发者社区,在国产开源云原生监控领域填补空白、做精做强。期待夜莺监控成为国内开源项目建设、社区治理、开源与产学研创新结合的标杆之一,创造更大的社会价值。 关于夜莺监控 Github::https://github.com/ccfos/nightingale Proposal & Issues: https://github.com/ccfos/nightingale/issues Docs: https://n9e.github.io

优秀的个人博客,低调大师

NetCore如何使用托管服务执行后台任务

关于我 作者博客|文章首发 我们经常要使用NetCore控制台或者AspNetCore来定义一些通用的后台服务。如果自行编码的话,对后台服务的理解应该体现在启动一个线程,使用while循环执行任务,每次时间间隔N秒,这是最简单的一种实现方式。 既然NetCore现在的稳定版本都已经是3.1了,难道官方没有考虑到这种最基本的使用场景吗。当然不会,下面我们就本着参考官方文档的角度解析一下后台服务在Core控制台中的使用。 初始化准备 首先我们创建一个控制台项目,下载基础包 nuget install Microsoft.Extensions.Hosting 初始化Program.cs文件 public static class Program { static async void Main(string[] args) { var builder = new HostBuilder().ConfigureServices((context, service) => { }); await builder.RunConsoleAsync(); } } 使用详解 一般后台服务 开始使用 注入后台服务非常简单,调用service.AddHostedService方法将自定义的服务进行注入。 service.AddHostedService<CustomerJob/Service>(); 自定义的后台服务类需要满足定义的接口,才可以被正常使用,下面我引用一个官方的案例进行说明 定时后台任务使用 [System.Threading.Timer]类。 计时器触发任务的 DoWork 方法。 在 StopAsync 上禁用计时器,并在 Dispose 上处置服务容器时处置计时器: 继承IHostedService接口,实现StartAsync和StopAsync方法即可将服务正常注入后台任务中。 IDisposable的作用主要是在进程关闭时释放定时器资源 public class TimedHostedService : IHostedService, IDisposable { private int executionCount = 0; private readonly ILogger<TimedHostedService> _logger; private Timer _timer; public TimedHostedService(ILogger<TimedHostedService> logger) { _logger = logger; } public Task StartAsync(CancellationToken stoppingToken) { _logger.LogInformation("Timed Hosted Service running."); _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5)); return Task.CompletedTask; } private void DoWork(object state) { var count = Interlocked.Increment(ref executionCount); _logger.LogInformation( "Timed Hosted Service is working. Count: {Count}", count); } public Task StopAsync(CancellationToken stoppingToken) { _logger.LogInformation("Timed Hosted Service is stopping."); _timer?.Change(Timeout.Infinite, 0); return Task.CompletedTask; } public void Dispose() { _timer?.Dispose(); } } 内容整合 将上文中的内容进行一个整合,得到的效果是 public static class Program { static async void Main(string[] args) { var builder = new HostBuilder().ConfigureServices((context, service) => { service.AddHostedService<TimedHostedService>(); }); await builder.RunConsoleAsync(); } } Ctrl+F5即可查看执行效果 其他说明 以上说明的是后台任务在Core控制台中的应用,那么在AspNetCore【Web项目】中是怎么使用的呢。当然都是一样的,只是注入的地方发生了小小的改变,在AspNetCore中注入通常发生在StartUp.cs中的方法ConfigureServices。使用方法和控制台一致。 public void ConfigureServices(IServiceCollection services) { service.AddHostedService<TimedHostedService>(); } 带作用域的服务 适用于Web项目中涉及数据库等外连接操作的场景,例如 每一次web请求对应一个数据库上下文[DbContext],这个时候就要用要带作用域的服务。 带作用域的服务使用也非常简单,可以参考官方文档,这里我就不做其他介绍 参考 https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-5.0&tabs=visual-studio https://blog.csdn.net/weixin_34174105/article/details/86015664 推荐阅读 Redis工具收费后新的开源已出现 GitHub上Star最高的工程师技能图谱 中国程序员最容易发错的单词 推荐!!! Markdown图标索引网站 最后 本文到此结束,希望对你有帮助 😃 如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。 更多精彩技术文章汇总在我的 公众号【程序员工具集】,持续更新,欢迎关注订阅收藏。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册