containerd源代码分析: 整体架构 本文从代码的大的整体组织上来熟悉containerd项目 containerd项目总的说是一个cs模式的原生控制台程序组。containerd作为服务端来接收处理client的各种请求,如常用的拉取推送镜像,创建查询停止容器,生成快照,发送消息等。client/server之间通过grpc和ttrpc框架进行交互。 我们可以先看一下contanerd源代码中的cmd下文件夹如图: 每一个目录都会生 云计算 2024-03-22 Escape
掌握Go语言:Go语言结构体,精准封装数据,高效管理实体对象(22) 在Go语言中,结构体(Struct)是一种自定义的数据类型,用于封装不同类型的数据字段。结构体可以看作是一种用户自定义的数据结构,用于组织和管理相关的数据。结构体由一组字段(Fields)组成,每个字段可以是不同的数据类型,可以是基本类型(如整数、浮点数、布尔值等)、复合类型(如数组、切片、映射等)、或者其他自定义的结构体类型。 Go语言结构体的基本特性 自定义数据类型:结构体是一种自定义的数据类 云计算 2024-03-22 大树
在 GraalVM 静态编译下无侵入实现可观测探索 作者:铖朴、层风 GraalVM 静态编译 背景介绍 随着云原生浪潮的蓬勃发展,利用云原生技术为企业应用提供极致的弹性能力是企业数字化升级的核心诉求。但 Java 作为一种解释执行+运行时实时编译的语言,相比于其他静态编译型语言天生具有如下不足,严重影响了其快速启动与扩缩容效果。 冷启动问题 Java 程序启动运行详细过程如图 1 所示: 图 1:Java 程序的启动过程分析 [ 1] Java 云计算 2024-03-22 剑圣无痕
万字心路历程:从十年老架构决定重构开始 作者:笃敏 概述 走近iLogtail iLogtail是一款高性能的轻量级可观测数据采集器,由阿里云SLS团队官方提供,可以运行在包括服务器、容器和嵌入式等多种环境中,其宗旨在于帮助开发者构建统一的数据采集层,助力可观测平台打造各种上层应用场景。iLogtail多年来一直稳定服务阿里集团、蚂蚁集团以及众多公有云上的企业客户,目前已经有千万级的安装量,每天采集数十PB的可观测数据,广泛应用于线上监 云计算 2024-03-22 捡田螺的小男孩
运维人少,如何批量管理上百个微服务、上千条流水线? 作者:周静 随着微服务和云原生技术的发展,一个业务系统往往由多个微服务应用组成,多个业务方向涉及几十上百应用。每个应用研发过程又划分为测试、预发、生产多条流水线,也即成百上千条流水线。而一个企业下通常只有 1~2 个运维或架构师负责这些应用的配置管理工作。该场景下你是否会遇到以下苦恼: 业务应用太多啦,一个应用配置的修改就得修改几十上百遍,还有可能错改、漏改? 流水线太多啦,怎么分组管理,快速找到 云计算 2024-03-22 穿过生命散发芬芳
谈谈我对 AIGC 趋势下软件工程重塑的理解 作者:陈鑫 今天给大家带来的话题是 AIGC 趋势下的软件工程重塑。今天这个话题主要分为以下四大部分。 第一部分是 AI 是否已经成为软件研发的必选项;第二部分是 AI 对于软件研发的挑战及智能化机会,第三部分是企业落地软件研发智能化的策略和路径,第四部分是我们现有的可采纳的、可落地的工具,在这一部分我也会重点介绍通义灵码整体的产品能力和概况。 AI 已经成为软件研发的必选项 这张图是麦肯锡最近发 云计算 2024-03-21 大猫
RocketMQ 流存储解析:面向流场景的关键特性与典型案例 作者:林清山(隆基) 前言: 从初代开源消息队列崛起,到 PC 互联网、移动互联网爆发式发展,再到如今 IoT、云计算、云原生引领了新的技术趋势,消息中间件的发展已经走过了 30 多个年头。 目前,消息中间件在国内许多行业的关键应用中扮演着至关重要的角色。随着数字化转型的深入,客户在使用消息技术的过程中往往同时涉及交叉场景,比如同时进行物联网消息、微服务消息的处理,同时进行应用集成、数据集成、实时 云计算 2024-03-21 泡泡
云效 AppStack + 阿里云 MSE 实现应用服务全链路灰度 作者:周静、吴宇奇、泮圣伟 在应用开发测试验证通过后、进行生产发布前,为了降低新版本发布带来的风险,期望能够先部署到灰度环境,用小部分业务流量进行全链路灰度验证,验证通过后再全量发布生产。本文主要介绍如何通过阿里云 MSE 微服务引擎和云效应用交付平台AppStack 实现灰度发布。 读完本文,你将了解到: 以 SpringCloud 应用为例,了解全链路灰度场景及其工作原理; 如何基于云效 Ap 云计算 2024-03-21 张二河
掌握Go语言:利用Go语言的单向通道和select语句,提升库存管理效率(21) 在Go语言中,我们已经学习了通道的基本操作和规则,今天我们将深入探讨通道的高级玩法,特别是单向通道。首先,让我们回顾一下通道的基本操作。 基本操作回顾 通道是双向的,即可以用于发送和接收数据。我们可以使用以下方式声明一个通道: var ch chan int ch = make(chan int, 1) 上述代码创建了一个int类型的通道ch,容量为1。接着,我们可以使用通道进行发送和接收操作: 云计算 2024-03-21 贤蛋大眼萌
在 Excel 里使用 ODBC 读取云平台上 CDS view 的数据 笔者的日常工作中,会使用 API Business Hub 这个 portal 上提供的各种 Restful API,同客户的第三方系统进行集成: 在 API Business Hub 网站上,这些 Restful API,分为 SOAP,OData 和 REST 三类。 SOAP,即简单对象访问协议,是一种标准的通信协议,它定义了如何在网络中传输消息。SOAP 基于 XML(可扩展标记语言),旨 云计算 2024-03-21 大树
KubeSphere DevOps 基于 Jenkins + Argo 实现单集群的持续交付实践 作者:周靖峰,青云科技容器顾问,云原生爱好者,目前专注于 DevOps,云原生领域技术涉及 Kubernetes、KubeSphere、Argo。 背景 KubeSphere v3.3.0 引入了 Argo CD,可以直接通过内置的方式实现 GitOps,不需要额外安装,并且在 UI 上也适配了基本功能。 今天就来介绍下如何通过 KubeSphere 3.4.0 内置的 Argo CD 实现持续交 云计算 2024-03-21 Escape
基于Jenkins + Argo 实现多集群的持续交付 作者:周靖峰,青云科技容器顾问,云原生爱好者,目前专注于 DevOps,云原生领域技术涉及 Kubernetes、KubeSphere、Argo。 前文概述 前面我们已经掌握了如何通过 Jenkins + Argo CD 的方式实现单集群的持续交付,明白了整个 CI/CD 过程中不同工具在流水线中的关系。所以接下来我们将更深入的了解 Argo CD 的特性。 前文链接:KubeSphere Dev 云计算 2024-03-21 法医
云原生最佳实践系列2:基于 MSE 云原生网关同城多活 方案概述 分布在同城多个机房内的应用同时对外提供服务。同城机房物理距离较小,一般小于 50 公里。同城多活架构的难点有三个: 当某机房出现故障,能不能做到机房级的快速切换? 如何实现非对等部署下的全局的流量负载均衡? 对流量的精细化管控? 常见的同城多活实现方式(如下图),在这个架构里。DNS 本身存在缓存,DNS 的域名是映射到机房的网关 IP,网关又是每个机房一个局部的。很难做到机房级故障的秒 云计算 2024-03-20 泡泡
掌握Go语言:Go语言通道,并发编程的利器与应用实例(20) 通道(Channel)是用来在 Go 程序中传递数据的一种数据结构。它是一种类型安全的、并发安全的、阻塞式的数据传输方式,用于在不同的 Go 协程之间传递消息。 基本概念 创建通道:使用make()函数创建一个通道。 ch := make(chan int) // 创建一个整型通道 发送数据:使用<-操作符向通道发送数据。 ch <- 42 // 将整数42发送到通道ch中 接收数据: 云计算 2024-03-20 法医
作者推荐|剖析云原生服务框架中服务发现机制的核心原理与实现机制 本文为稀土掘金技术社区首发签约文章,30天内禁止转载,30天后未获授权禁止转载,侵权必究! 本文介绍 本文旨在深入探讨和分析微服务架构以及云原生架构中的服务发现机制原理。我们将重点关注K8S(Kubernetes)服务发现的原理和实现机制,以期为读者提供全面而深入的理解。通过对这些核心原理的剖析,我们能够更好地理解服务发现在现代分布式系统中的重要性和应用价值,从而为实际应用提供有力支持。 下面是历 云计算 2024-03-19 共饮一杯
阿里云 SelectDB 联合 DTS ,一键实现 TP 数据实时入仓 大数据时代背景下,高效的数据流转与实时分析能力对于企业的竞争力至关重要。近日,飞轮科技与阿里云联合共建的新一代云原生实时数据仓库:阿里云数据库 SelectDB ,进一步强化了与阿里云数据传输服务(DTS)的深度融合,在提供亚秒级响应和海量数据查询能力的同时,实现一键从多种源数据库迁移或同步至阿里云 SelectDB 全托管服务,让企业在数据同步迁移过程中享受到更便捷和更稳定的体验。 适用场景 如 云计算 2024-03-19 竹子爱熊猫
掌握Go语言:探索Go语言指针,解锁高效内存操作与动态数据结构的奥秘(19) 指针是一个变量,它存储了另一个变量的地址。在Go语言中,指针提供了直接访问内存地址的能力,允许程序直接操作内存,这在某些场景下非常有用。 Go语言指针的详细使用方法 声明指针 可以使用*符号来声明指针变量,例如: var ptr *int // 声明一个整型指针 获取变量地址 使用&操作符可以获取变量的地址,例如: var num int = 10 ptr := &num // 将 云计算 2024-03-19 法医
炼丹师的优雅内功一:TensorFlow on kubernetes TensorFlow 基础 是什么 tensorflow 是一个采用数据流图(data flow graph)技术来进行数值计算的开源库 tensor 表示传递的数据为张量(多维数组),flow 代表使用计算图进行运算。数据流图是一个有向图,使用节点 (nodes)和线(edges)来描述数学计算。节点一般表示数学操作(operation),也可以表示数据输入起点和输出终点,边表示节点之间的输入/ 云计算 2024-03-18 三掌柜
云原生最佳实践系列 1:如何快速实现kafka性能压测 消息队列 Kafka 版实例类型的性能表现除了跟实例本身的规格相关外,与创建实例时选择的云盘类型也强相关,本实验通过相同规格的实例,不同的云盘类型来验证该因素的影响。 消息队列 Kafka Serverless 版本身实例未提供具体的云盘类型来选择,其性能表现只与购买实例时预留的写入、读取的指标有关, 写入峰值为预留写入的 2 倍,读取峰值为读取预留的 2 倍。 应用场景 借助 CADT 迅速的搭 云计算 2024-03-18 法医
掌握Go语言:Go语言中的字典魔法,高效数据检索与应用实例解析(18) 在Go语言中,字典通常指的是map类型,它是一种用于存储键值对的数据结构。字典在Go中非常常见,是一种高效的数据结构,用于快速查找和检索数据。 字典的详细使用方法 创建字典 可以使用make函数来创建字典,并指定键值对的类型: myDict := make(map[string]int) 添加键值对 使用键来索引字典并赋值: myDict["apple"] = 5 myDict["banana"] 云计算 2024-03-18 宇宙之一粟