解读Raft(二 选举和日志复制)
Raft采用心跳机制来触发Leader选举。Leader周期性的发送心跳(如果有正常的RPC的请求情况下可以不发心跳)包保持自己Leader的角色(避免集群中其他节点认为没有Leader而开始选举)。
Follower在收到Leader或者Candidate的RPC请求的情况下一直保持Follower状态。而当一段时间内(election timeout)没有收到请求则认为没有Leader节点而出发选举流程。
Raft采用心跳机制来触发Leader选举。Leader周期性的发送心跳(如果有正常的RPC的请求情况下可以不发心跳)包保持自己Leader的角色(避免集群中其他节点认为没有Leader而开始选举)。
Follower在收到Leader或者Candidate的RPC请求的情况下一直保持Follower状态。而当一段时间内(election timeout)没有收到请求则认为没有Leader节点而出发选举流程。
本文介绍了如何使用 Docker 和 EFK(Elasticsearch、Fluentd、Kibana)套件构建日志管理系统,通过 Fluentd 将 NACOS 和业务日志集中发送至 Elasticsearch,方便数据分析和故障排查。文章提供了 `docker-compose.yml` 配置文件示例,解决了插件安装、权限设置和健康检查等常见问题,为构建灵活高效的日志管理系统提供了实用方法。
本文介绍了如何在 OpenTelemetry 中使用 MDC(映射诊断上下文)实现日志与链路追踪的集成,帮助开发者快速定位问题。通过将 `trace_id` 等信息写入日志 MDC,实现日志和分布式追踪系统的无缝对接。在 Java 中结合 Logback 或 Log4j 并借助 OpenTelemetry agent,可以自动生成包含 MDC 的日志,便于多线程环境中的问题排查。
本文介绍了 Read-Write Quorum 系统及其在 Raft 一致性算法中的应用,深入探讨了读写集合的差异和其在分布式系统中的优化。通过实际案例分析,文章为分布式系统中的一致性问题提供了新的视角。如果你对分布式系统的性能优化和一致性算法感兴趣,不妨看看这篇详细解读!
Nginx日志的分析,尤其是加白,在不是特别清楚功能和作用的情况下,还是应该细粒度的操作,比如先按照Content-Type加白,就比按照domain维度的加白粒度会更细一点,比按照uri来加白要更方便和准确一点。简单记录一下,方便后面有需要的时候参考。
本篇讲讲Kratos日志组件的使用方式。
在服务上线后,我们可以使用日志来观察程序的行为、诊断问题或者配置相应的告警等。定义良好的结构化日志,能够提高日志的检索效率,使处理问题变得更加方便。
通常我们的南北流量的链路是从云的 LB 到服务器的 Nginx 集群,为了利用好 lb 自动检测 Nginx 的功能,通常你会打开健康检查,此时,Nginx 的日志当中就会打印大量的健康检查日志,令人不胜其烦。
最近在做一个 Android APP 的日志改造,我搜了一下「Android 日志框架」,大多网友推荐的是 logger、timber、xLog 等等,看着也不错。不过出于几年后端开发的经验和习惯,我进一步了解,发现熟悉的 log4j 和 logback 在 Android 上也有人做过适配,所以最终决定使用 slf4j + logback,以在前后端开发中取得一致的体验。
本文精选了美团技术团队被KDD 2023收录的7篇论文进行解读,论文覆盖了Feed流推荐、多模态数据、实例分割、用户意图预测等多个方向。这些论文也是美团技术团队与国内多所高校、科研机构合作的成果。希望给从事相关研究工作的同学带来一些启发或者帮助。
传统虚拟机、物理机环境下,日志文件通常存放于固定的路径下,当应用重启或出现异常退出的情况,日志也会留存下来,不受影响。而 Kubernetes 环境下,提供了相比前者更为细粒度的资源调度,容器(或 Pod)的生命周期是十分短暂的,当主进程退出,容器(或 Pod)便会被销毁,随之而来的是其关联资源也会被释放。因此,在日志采集的这个点上,Kubernetes 场景相比传统环境而言,会更为复杂,需要考虑的点更多。
最近拜读了 Artech 大佬的新文章 《几个Caller-特性的妙用》,可以说是受益匪浅。不过,对我而言,最大的收获当属这篇文章里的第二主角,即 ActivitySource 和 Activity,这组 API 可以认为是微软针对 OpenTelemetry 规范的一种实现,即:每一个 Activity 都对应着一个 Span 。经过数日的探索,我有了一点小小的收获。因此,今天这篇博客我想和大家分享的是,分布式链路追踪系统如何和日志系统进行整合。