摘要:
比较微服务中的分布式事务模式 译自:Distributed transaction patterns for microservices compared 作为Red Hat的顾问架构师,曾有幸参与过无数个客户项目。每个客户都存在各自的挑战,但我发现其中存在一定的共性。其中,客户最想了解的一件事情是 阅读全文
摘要:
面向数据的架构 译自:Data-Oriented Architecture 2007年,Rajive Joshi在RTI 白皮书中首次提出了面向数据的架构,后在2017年,Christian Vorhemus 和 Erich Schikuta 在维也纳大学的这篇iiWAS论文中再次进行了阐述。DOA 阅读全文
摘要:
访问kubernetes CRD的几种方式 最近在使用代码操作VictoriaMetrics Operator的CRD资源的过程中,探究了几种访问CRD资源的方式。下面以VictoriaMetrics Operator的CRD为例介绍。 方式1:使用dynamic client 这种方式最原始,使用 阅读全文
摘要:
Prometheus告警规则分发服务,根据一致性哈希将规则分发到多个节点,使用多个goroutine处理应用告警,在服务增加时可以增加goroutine,服务减少时降低goroutine数目。 规则下发服务 规则下发服务和规则处理服务是一对客户端和服务端的实现,前者可以对接多个集群,后者为集群中的某 阅读全文
摘要:
golang []byte和string的高性能转换 在fasthttp的最佳实践中有这么一句话: Avoid conversion between []byte and string, since this may result in memory allocation+copy. Fasthtt 阅读全文
摘要:
最近项目组在做Prometheus指标采集和告警,其中用到了Prometheus的exemplar特性,由于该特性比较新,当前支持该特性的存储有比较少。因此需要自行实现exemplar功能。 我在github上创建了一个代码库,内容如下: 功能支持列表 支持从kafka消费Prometheus指标数 阅读全文
摘要:
从头编写一个时序数据库 本文介绍如何去设计一个时序数据库,可以学习一下文章中提及的一些技术点。需要注意的是,本文编写的时间为2017年4月,因此文中需要改善的也是老版本的Prometheus存储存在的问题。 译自:Writing a Time Series Database from Scratch 阅读全文
摘要:
解析PromQL 目前对Prometheus 的promQL 的解析文章比较少,且Prometheus官方也没有提供一个公共的库来对其进行解析。下面实现对promQL的解析,并实现注入label功能。 表达式类型 AggregateExpr 对应聚合操作,如sum without (instance 阅读全文
摘要:
存储和节点的创建 raftexample中的存储其实有两种,一个是通过raft.NewMemoryStorage()进行创建的raft.raftStorage,关联到单个raft节点,另一个是通过newKVStore创建的kv存储,用于服务来自外部的访问。 节点启动时raft.raftStorage 阅读全文
摘要:
本文仅介绍wal的基本处理,如create、open、close、read等操作,从wal目录中加载snapshot,wal文件的创建,以及读取wal目录中的所有数据(主要是entryType、stateType、metadataType这几类)和接收到node.Ready()之后的写操作。 WAL 阅读全文