xorm与go-sql-driver的时区问题

go-sql-driver时区的默认配置是零时区,xorm默认的是本地时区,那么在DSN的配置中,加上loc=Local,让go-sql-driver与xorm使用相同的时区,这样就能避免我们在使用time.Time传递参数时,各个模块时间转换不一致的情况出现。…

Prometheus TSDB 的设计与实现

TSDB(时序数据库)是 Time Series Database(时间序列数据库)的简称,TSDB是一种高性能、低成本、稳定可靠的在线时间序列数据库服务,提供高效读写、高压缩比存储、时序数据插值及聚合计算等服务,广泛应用于物联网(IoT)设备监控系统、企业能源管理系统(EMS)、生产安全监控系统和电力检测系统等行业场景,除此以外,还提供了时空场景的查询和分析的能力。…

媒体推广业务架构演进

在互联网APP项目推广中,媒体在线推广是市场推广中重要的推广手段之一,通常在运营中称之为买量或者付费推广,在推广的过程中,广告主需要与媒体进行对接,广告主需要对媒体侧下发的点击信息进行接收,用户下载完成激活后,还需要通过媒体下发的点击信息对新增或者沉默后又活跃的用户进行识别,主要识别来源于哪个平台及具体的广告效果,最后还需要回传通知广告平台激活用户设备相关的信息,从而实现广告平台与广告主之间推广及效果追踪溯源的链路闭环。七猫的媒体推广业务架构也随着业务的发展进行了一系列的演进,本文整理了整个过程中重要的调整节点,介绍整个架构的演进过程。…

StarRocks之视图及物化视图的实践

StarRocks提供了高效查询和数据处理的功能。为了方便用户进行复杂的查询操作,StarRocks引入了视图和物化视图技术,在 StarRocks在七猫的应用(二)中也提到视图与物化视图的作用。…

探索Go函数式编程:提升你的代码品质与可维护性

在2014年软件工程基础(FSE)大会上发表的一篇学术论文“A Large Scale Study of Programming Languages and Code Quality in Github”声称,函数式编程范式具有更低的代码错误率等四个结论。Go 支持一等函数、高阶函数、用户定义的函数类型、函数文字、闭包和多个返回值。 这些丰富的功能正好支持一门强类型语言编写出函数式编程风格的代码。…

OpenResty + Lua 实现灰度发布

七猫作为一家成熟的互联网公司,业务有超百万QPS的高并发。我们的产品开发逃不开的特色就是不停的升级升级再升级。随着敏捷小组的建立,发版频率也逐渐提升至每两周一次或者每周一次。然而系统升级总是会伴随着各种风险,一些系统风险比如:宕机风险,服务不可用的风险;还有一些用户体验风险:业务改动使得用户体验改变导致用户流失等风险。为了规避或者提前预知这些风险,灰度发布的概念应运而生。…

七猫日志接收系统之架构设计(上)

七猫日志接收系统系列文章将会向大家介绍七猫日志接收系统及相关的埋点 SDK,总共分为四篇,本文为系列的第一篇,将带大家一起回顾七猫 2020 年至今,七猫日志接收系统近四年来的演化历程。如果您之前未了解过统计埋点系统,强烈推荐您阅读本站发布的七猫统计埋点实践一文。…

领域驱动分层设计-达人平台

领域驱动设计(DDD)是一种架构设计方法,它利用领域、子域、核心域、通用域、界限上下文、自顶向下的概念作为黏合剂,利用实体、值对象、聚合和聚合根等构造物作为砖头,将复杂的系统构造成多个从整体到局部高内聚、低耦合的子系统。…

七猫算法推荐引擎架构演化之路

转眼间,七猫的算法推荐平台已走过了近三个年头,三年来,算法推荐引擎从0到1,经过一次次迭代更新,逐渐变得完善。这篇文章主要从我们推荐引擎的技术架构出发,给大家分享一下我们的架构演化之路,以及对未来演进方向的展望。…

七猫分布式追踪实践

Metrics(指标)、Logging(日志记录)、和Tracing(追踪)通常被称为可观测性的三大支柱。在微服务架构下,分布式追踪是一种关键工具,用于帮助排查和理解服务问题,它允许跟踪请求流程并提供关键的信息,以便更容易发现和解决问题。…

七猫消息推送系统演进之路

七猫推送系统经过近两年的开发迭代,已逐渐稳定完善,作为成本较低的拉活手段,已成为七猫越来越不可缺少的基础能力。本文将带大家一起回顾七猫推送系统从诞生到成熟稳定的演进…

系统测试中的Go代码覆盖率统计

传统软件测试技术主要基于测试人员对业务的理解,但由于经验的局限性、被测系统的复杂性以及与真实业务数据的差距,肯定存在测试不充分的情况,所以,虽然整个测试流程很规范,但最终软件质量还是不尽如人意。随着分布式、微服务架构、大数据技术的出现,软件越来越复杂,迭代越来越快,测试的挑战性越来越大。引入系统测试的代码覆盖率统计,可以帮助研发识别无效代码,辅助测试提高测试覆盖度等…

使用ARMS+LTS监控告警应用实践

鉴于之前调研的夜莺等一体化监控告警工具,我们综合总结下来,使用阿里云提供的ARMS告警系统,以减轻运维成本,目标是解决当前多而繁杂的业务系统中各式各样的告警机器人治理问题,我们需要一个聚合的,可容错的,可削峰的,可溯源的监控告警系统…

多种数据同步方案在七猫的实践

伴随着七猫的发展,大数据团队针对不同业务场景和不同数据功能,调研和运用多种技术栈和数据库来来解决了各类数据存放和使用的问题。本文将七猫大数据团队在实践过程中的一些开发技巧和代码示例进行整理,一是用于技术的沉淀记录,二是希望通过该文章能帮助大家对各种数据库同步场景所有启发。…

flink 规则引擎技术实现

当前有两类实时任务需要频繁重启:第一类任务是,实时报表新增维度,此类任务中,Flink 消费 Kafka 实时数据,处理后按照维度聚合,使用聚合函数计算出指标后写入 StarRocks ;第二类任务是实时 ETL 任务,此类任务中,Flink 消费 Kafka 实时数据,经过字段提取、数据过滤再将结果回写 Kafka。这两类实时任务加字段(维度)需求较频繁、需求重复度高、需要重启程序,影响数据的准确性、及时性以及迭代速度较慢。因此,我们实现了基于配置化的方式,在不重启作业的情况下,快速满足新增字段(维度)的需求。…

基于行为驱动开发框架Behave+Python的自动化设计与实现

七猫自有DSP项目主要由三大平台及广告引擎组成,其中平台包括效果平台、账户管家平台、管理员平台。广告引擎包括广告投放、引擎DRS(数据接收/消费等)。随着项目业务的增长、功能复杂度的提高,确保项目的稳定运行,自有DSP的自动化成为测试中必不可少的一部分。目前平台接口自动化巡检起到了一定的监控作用,可提前发现问题并及时解决问题,保证平台的可用性及稳定性。引擎接口自动化用于日常迭代测试及回归测试,可减少人工成本,提高测试效率,降低错误率,提高覆盖度保证广告投放的正确性。本文主要是介绍自有DSP项目自动化框架设计及实现方法。…

七猫多云元数据管理应用实践

当前七猫大数据在多云环境下的数据开发过程中,库表信息依赖各个云平台进行管理,缺乏统一的元数据查询工具入口,导致了寻表困难的问题。在早期的快速开发阶段,我们追求高效率,忽视了元数据的管理和维护,这给后续的数据治理带来了一定的"技术债务"。为了解决这个问题,七猫大数据团队已经开始着手多云环境下的元数据管理解决方案。该解决方案旨在提供一个统一的元数据管理平台,使用户能够方便地查找和访问各个云平台中的库表信息。通过该平台,用户可以快速搜索和浏览库表的元数据,包括表结构、字段信息、数据来源等关键信息。这将大大简化数据开发过程中的寻表工作,提高开发效率和准确性。…

Kylin5 对接 Starrocks 数据源

Apache Kylin5 是一个 OLAP 分析引擎,他通过构建引擎来读取数据源数据生成预计算索引数据。他通过查询引擎来查询预计算好的索引数据,也可以通过 Pushdown 能力,将查询下压给数据源引擎。StarRocks 是一款 MPP 架构的分析型数据库,可以高效支持大数据量级的多维分析、实时分析、高并发分析等多种数据分析场景。…

自定义封面功能

自定义封面功能,从最初的产品需求,到方案调研,到开发完成,再到功能组件化,经历了漫长的过程。开发中所依赖的fabricjs库也是我们第一次使用,它的功能还是非常强大的,帮助我们高效的开发出了一个简单的封面生成工具,不过也遇到了一些奇怪的兼容性问题,例如百分比渐变色在某些浏览器不生效等问题,目前也还在优化迭代中,如果大家有遇到类似的功能,欢迎来一起探讨。…