随着微服务技术的快速发展,其在各个领域都形成了一系列事实标准,在 Kubernetes 和容器技术加持下,云原生微服务已经成为了主流解决方案。而 Go 语言作为云原生领域最受欢迎的开发语言,正被越来越多的企业作为微服务开发的首选语言,其中比较流行的包括 Go-micro、Go-zero、Dubbo-go 等。作为 Dubbo 微服务体系中多语言实现的一员,在 2022 年 Dubbo-go 以微服务领跑者的角色积极拥抱云原生标准,探索了 Proxyless Mesh 形态,配合适配 Pixiu 云原生网关,形成了完善的 Dubbo-go 微服务生态矩阵。 以 Dubbo-go 为中心的微服务体系在多个知名企业中成功落地和实践,框架的稳定性在实际场景下经受住了考验。截止今年已有 60+ 家企业在我们的用户列表中登记,其中较为典型案例请参考文章《小米电商 Apache Dubbo-go 微服务实践》。小米电商选用了 Dubbo-go + Nacos + sidecar + etcd + mirpc 为核心的微服务体系,除了看中了 Dubbo-go 的互联互通和服务治理能力
当周末躺在被窝里,点外卖时;双 11 的零点,疯狂提交订单时;假期和基友激情开黑,五杀超神…在这个精彩纷呈的互联网世界里,这些应用背后又隐藏着什么?每一次点击行为在 IT 世界里会流经哪些节点,调用哪些服务,带来哪些变化?这一切庞杂且精密,超出了人力探索的边界,而分布式链路追踪就是追溯请求在 IT 系统间流转路径与状态的一门技术。接下来,让我们通过对分布式链路追踪的来了解这个 IT 世界! 说到分布式链路追踪,就绕不开分布式系统与微服务的兴起。早期 IT 系统非常简单,几乎所有程序都运行在同一个节点,互相之间也没有什么依赖。但随着硬件技术突飞猛进,硬件成本大幅下降,软件复杂度却越来越高。单一系统性能无法满足复杂的数据计算任务,而软件逻辑的复杂性也导致维护成本大幅上升。另外,单节点的可靠性也难以保障,不可避免的会偶尔出现宕机等行为,影响软件的可用性。“性能、可维护性和可用性”这三大因素促使了分布式系统与微服务的诞生。
在日常生活中,我们可能都经历过以下场景:去医院看病就诊,但预约页面迟迟无法打开;新款手机发布日促销秒杀,下单页面一直卡住转菊花;游戏大版本更新,在线人数过多,导致人物一直在“漂移”。这些问题令产品体验变得非常差,有耐心的同学还会吐槽几句,没耐心的同学早已转身离开。试想一下,作为该系统开发/运维人员,又该如何避免此类问题发生,或者快速定位止损?
在前面文章里面,我们介绍了单链路的筛选与轨迹回溯,是从单次请求的视角来分析问题,类似查询某个快递订单的物流轨迹。但单次请求无法直观反映应用或接口整体服务状态,经常会由于网络抖动、宿主机 GC 等原因出现偶发性、不可控的随机离群点。当一个问题发生时,应用负责人或稳定性负责人需要首先判断问题的实际影响面,从而决定下一步应急处理动作。因此,我们需要综合一段时间内所有链路进行统计分析,这就好比我们评估某个物流中转站点效率是否合理,不能只看某一个订单,而要看一段时间内所有订单平均中转时间与出错率。 统计分析是我们观察、应用分布式链路追踪技术的重要手段。我们既可以根据不同场景要求进行实时的后聚合分析,也可以将常用的分析语句固化成规则生成预聚合指标,实现常态化监控与告警。相对于链路多维筛选,统计分析需要明确分析对象与聚合维度。其中,分析对象决定了我们对哪些指标进行聚合操作,比如请求量、耗时或错误率。而聚合维度决定了我们对哪些特征进行统计对比,比如不同应用、接口、IP、用户类型的统计量对比。接下来,我们先了解下分析对象和聚合维度的具体概念,再介绍实时分析与监控告警的具体用法。
ChatGPT 的 Debug 功能,有人应用化了。 ChatGPT 这几天可谓是风头无两。作为一个问答语言模型,它最大的优点就是可以回答与编程相关的问题,甚至回复一段代码。
在 Sentry,我们采用了持续交付实践,也就是说,代码一旦被合并到主分支就可以立即发布。我们因此能够快速地迭代产品,尽可能频繁地在生产环境中提供新功能、进行错误修复、配置变更和实验。我们每月合并超过 700 个 PR。自动化测试——特别是我们大型的 React 代码库自动化测试——是我们 CI/CD 流程的重要组成部分,确保我们的产品可以按照预期运行。 在这篇文章中,我们将讨论如何将我们的组件测试从 Enzyme 迁移到 React Testing Library(RTL)。这项工作花费了一年零四个月的时间,有 17 名工程师参与,涉及 803 个测试套件和 4937 个测试,其中每一个测试都需要做出修改。
对于 Android 客户端开发者来说,Activity 是我们再熟悉不过的一个组件了。它是 Android 四大组件之一,是一个直接与用户交互的展示型 UI 组件。在开发过程中,启动并创建一个 Activity 流程非常简单,而在系统底层实际上做了大量的工作,之所以使用这么简单,得益于系统底层对于 Activity 的良好封装。本篇内容我们着重来分析一下 Framework 层 Activity 的启动与创建的过程。
在用户体验越发重要的今天,关注页面性能、提升页面展现速度及交互体验对前端开发越来越重要。 为了监测页面性能,chrome 开发团队就提出过监测网页性能的一些指标,比如 FP、FCP等,还有我们公司自己的北斗网站的秒开率、快开比等。但是这些指标具体怎样获取呢,今天我们就来仔细了解下这个性能监控有关的 API:PerformanceObserver。