探索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库也是我们第一次使用,它的功能还是非常强大的,帮助我们高效的开发出了一个简单的封面生成工具,不过也遇到了一些奇怪的兼容性问题,例如百分比渐变色在某些浏览器不生效等问题,目前也还在优化迭代中,如果大家有遇到类似的功能,欢迎来一起探讨。…

七猫社区Timeline Feed架构演进

七猫社区Timeline Feed架构演进是一个旨在改进和优化社区动态展示功能的项目它是书友圈中一个不可获缺的tab。2.0通过对现有架构进行演进,我们可以提升用户体验、优化性能,并满足不断增长的用户需求。…

H5调试大全

H5页面调试是移动端开发过程中不可或缺的一环,综合运用这些工具,我们可以快速定位问题、优化页面性能,并提升用户体验,随着移动端技术的发展,H5调试技术也会持续进步。我们可以期待更加智能化的调试工具,以及更加全面的性能分析功能。…

服务端测试注意点剖析

随着用户体量的增大,对性能的要求越来越高,使用到的技术栈也越来越多,测试需要考虑的点也越来越多。本文从接口测试、脚本测试、中间件、上线流程等四个方面分析一些注意点。…

基于 DolphinScheduler 的数据质量监控在七猫的实践

七猫正处于一个高速发展的阶段,数据分析和业务的发展方向非常注重数据的正确性。为了保证数据质量,我们之前的做法为在相关任务中加上自定义逻辑来检查数据是否正确。但是随着业务的快速迭代,数据量的高速增长和数据链路的复杂化,这种纯人工开发逻辑的方式已经难以跟上迭代速度,所以需要找到一个工具来帮助解决现状。…