最近AIGC的爆发引发了非常多行业的恐慌也包括程序员群体。如何掌握工具例如Copilot等是下一个时代最重要的能力。但是在当前苹果封闭的生态下,对于先进的生产力的渴望也是促使这篇文章诞生的原因。 Xcode是苹果的用于研发苹果软件生态的集成研发环境(IDE)相信作为苹果最强生态的iOS研发应该完全不陌生。这个让人又熟悉又陌生的老兄弟跟着iOS的辉煌也已经快20岁了,笔者差不多是从3.x年代开始使用Xcode研发iOS 3.x的而这15年唯一不变的可能就是在商店里糟糕的评分和社区中不怎么好的口碑。
很高兴有机会在第一届可观测性峰会上向大家介绍我们的产品 DeepFlow,我相信它会是今天 eBPF 含量最高的一个分享。DeepFlow 的能力很多,而我今天的分享会聚焦于一个点上说透,希望大家由此感知到 eBPF 带给可观测性的变革。那么我今天要分享的内容就是,DeepFlow 如何利用 eBPF 技术,在不改代码、不改配置、不重启进程的前提下,自动绘制云原生应用的全景拓扑。全景应用拓扑能解决我们很多问题:观测任意服务的全景依赖关系、观测整个应用的瓶颈路径、定位整个应用中的故障位置。 在开始之前,我大概也介绍一下自己的背景:从清华毕业以来,我一直在云杉网络工作,我们从 2016 年开始开发 DeepFlow,我们基于 eBPF 等创新技术打通云基础设施和云原生应用的全栈环节,零侵扰的实现应用的可观测性。今天的分享分为四个部分:第一部分介绍传统的解决方案如何绘制应用拓扑;第二部分介绍如何用 eBPF 完全零侵扰的实现应用拓扑的计算;第三部分介绍如何利用 eBPF 实现进程、资源、服务等标签的注入,使得开发、运维、运营都能从自己熟悉的视角查看这个拓扑;最后第四部分介绍一个全链路压测
虽然官方文档记录了 ClickHouse 物化视图很多详细信息,但是使用物化视图还是有很多小细节需要注意,更别说一些最佳实践。本文总结了 ClickHouse 物化视图使用上的各种问题,并展示三个实际案例。
今天我们来来讲解如何在Spring boot的项目中操作Elasticsearch,本章采用的API是官方的Java High Level REST Client v7.9.1。在学习本章以前,你最好已经掌握基本的Java后端开发知识并会使用Spring boot开发框架。由于篇幅的限制,本章只讲解比较常用的代码实现,很多代码可以复用,大家可以在实际项目中举一反三。
本文介绍了 API 网关、Kubernetes 网关和服务网格的综合指南。API 网关和 Kubernetes 网关解决了边缘问题和 API 抽象化,而服务网格解决了服务之间的通信挑战。文章还介绍了如何在不同的网关中配置金丝雀部署,并讨论了 Kubernetes Gateway API 的发展和服务网格接口(SMI)规范。最后,文章提供了一些关于何时使用哪种网关的建议。
近年来,基于云原生架构的新一代消息队列和流处理引擎 Apache Pulsar 在大数据领域发挥着愈发重要的作用,其应用场景和客户案例也在不断地丰富与扩充。 火山引擎是字节跳动的企业服务品牌,主要面向 To B 业务场景。火山引擎中 Stateless 云原生开源大数据平台 E-MapReduce(简称 EMR)为用户提供了云上的端到端的大数据解决方案。与此同时,Apache Pulsar 的一个十分重要的特性也是云原生。先进的存算分离的架构使其非常适合在云化的环境中部署、运维,而 Topic 数据的存储方式也使其扩容操作大为简化,不需要数据的 rebalance 过程。于是,将 Pulsar 集成到火山引擎 EMR 的生态系统中便是一件水到渠成且极具价值的事情。
狭义上的 WebAssembly 是 W3C 标准化组织制定的一个可移植、体积小、加载快并且兼容 Web 的全新二进制格式,在前面章节中已经对此做过详细的阐述;然而,随着 WebAssembly 技术的演进和广泛应用,它的内涵也在不断的外延,广义的 WebAssembly 可以理解为基于 WebAssembly 演化出来的完整生态
20年以来内容标注结果搜索就是社区中后台业务的核心高频使用场景之一,为了支撑复杂的后台搜索,我们将社区内容的关键信息额外存了一份到Elasticsearch中作为二级索引使用。随着标注业务的细分、迭代和时间的推移,这个索引的文档数和搜索的RT开始逐步上升。
最早接触JVM中的安全点概念是在读《深入理解Java虚拟机》那本书垃圾回收器章节的内容时。相信大部分人也一样,都是通过这样的方式第一次对安全点有了初步认识。不妨,先复习一下《深入理解Java虚拟机》书中安全点那一章节的内容。 书中是在讲解垃圾收集器-垃圾收集算法的章节引入安全点的介绍,为了快速准确地完成GC Roots枚举,避免为每条指令都生成对应的OopMap造成大量存储空间的浪费,只在“特定的位置”生成对应的OopMap,这些位置被称为安全点。然后,书中提到了安全点位置的选择标准是:是否能让程序长时间执行;所以会在方法调用、循环跳转、异常跳转等处才会产生安全点。 书中还提到了JVM如何在GC时让用户线程在最近的安全点处停顿下来:抢先式中断和主动式中断。抢先式中断不需要线程的执行代码主动去配合,在GC发生时,系统首先把所有用户线程全部中断,如果发现有用户线程中断的地方不在安全点上,就恢复这条线程执行,让它一会再重新中断,直到跑到安全点上。而主动式中断的思想是当GC需要中断线程时,不直接对线程操作,仅仅简单地设置一个标志位,各个线程执行过程时不停地主动去轮询这个标志