首页 文章 精选 留言 我的

精选列表

搜索[卡顿],共9806篇文章
优秀的个人博客,低调大师

PHP 依赖镜像出问题后,阿里工程师的一“神操作“令人叫绝!

阿里妹导读:上个月,PHP开发者在网上纷纷反映出现 Composer 镜像无法访问的问题。阿里云内部一位 90 后工程师顾咏连夜开工排查,快速解决问题后,他在问题群里收到了一大波来自用户的红包。顾咏最后谢绝了红包,接受了阿里技术的邀请,来聊一聊这次事件问题背后的技术。 一则消息 前段时间,因为国际网络不稳定问题,国内各大Composer镜像都出现了间歇性无法访问情况,这对国内PHPer的生产工作造成了极大的影响。受此影响,国内各家Composer服务都出现了相同的问题,而阿里工程师的这个解决方案堪称“简单粗暴”,效率高到没朋友! 阿里云的 PHP Composer 最初研发灵感源自阿里内部一位 90 后工程师顾咏。作为负责开发阿里云产品的 PHP SDK的工程师,他在工作中经常遇到同一个问题:尽管已经根据PHP 最新版本发布了新的 SDK,但由于镜像工具没有实时同步版本,导致用户安装不成功。此外,云效平台企业开发者对镜像工具的使用体验,同样受到这个问题的困扰,为此,阿里技术团队一起设计开发并开源了这套阿里云版镜像工具。 此次国际网络不稳定导致的镜像问题,阿里工程师顾咏第一时间响应了PHPer的诉求,连夜排查问题。“我们程序员都离不开这个,越早解决越好”,最后终于成功定位问题、完成系统更新,解决了大家的燃眉之急。群里的开发者主动发红包向其致谢,顾咏十分感动,然后拒绝了他:“应该做的,红包不能收。” 对于PHP 开发者来说,Composer 是必不可少的依赖包管理工具,作为存储 Composer 依赖包的 Packagist,却时常因为网络问题让国内开发者头痛不已,国内开发者安装依赖通常很慢,或者超时导致无法安装,却又没有稳定的镜像服务可以使用。Packagist 鼓励开发者建立镜像,但目前的镜像也有诸多不稳定、不可靠的情况。 阿里云Composer 镜像的推出 今年七月,阿里云提供了 Packagist/Composer 全量镜像服务,其秒级同步的能力、快速稳定的下载服务、页面上的动态数据展示得到了开发者的一致好评。 阿里云Composer 镜像的升级 11月16日开始,由于Composer 镜像出现了间歇性无法访问情况,不少网友通过阿里云钉钉服务群反应阿里云镜像出现不可用的情况,主要 zlib_decode 和 404 错误。在测试其他镜像作对比时发现,其他镜像也存在此类情况。接到反馈后,我们第一时间进行问题排查: 问题定位:阿里工程师立即查看系统状态和日志,未发现异常。初步怀疑是由于 CDN 接入层收国际网络延迟导致不可用。 验证:阿里工程师笔将相同的数据回传至国内 Bucket ,在今经多次、多地域直接访问测试,均成功。 决心升级:以往偶尔遇到这种问题,都被当做正常现象对待,而此次持续时间较长,影响面广,为了彻底解决这类问题,阿里决定升级镜像系统部署方案,直接将最新数据传回国内。 已知现有 Packagist 镜像的问题 1)同步的数据不是 Packagist 的根数据。事实上,官方的根数据不对外公开,开发者平时所访问的数据是镜像,甚至是镜像的镜像。当客户端发起请求后,请求会被官方 DNS 指向其他的镜像站,这些镜像数据与根数据之间已经存在延迟。而由于国际网络或系统设计原因,曾经出现初次官方镜像站与根数据长达数小时不同步 的情况。 2)没有处理代码包 dist。大多数依赖包的源代码存储在在github、gitlab上,因为网络问题,也会导致使用者下载速度慢,甚至下载失败。这也是镜像站需要关注处理的,一般镜像只提供 meta 数据(包数据)。例如官方推荐的 Webysther's mirror code 镜像同步系统就不处理dist。 3)本地文件存储。目前已知的其他镜像系统,是将文件存储在本地,或至少先存储在本地再上传,这样不仅会消耗大量本地磁盘空间,还存在系统最大子目录限制,会使得系统存在致命瓶颈。优化版本使用的软连接方案也会随着包的无限增长需要重构。 4)单进程,性能表现不佳,消耗 CPU、内存资源大。且处理数据耗时长,更新速度慢,系统的设计导致任务不能分发,且同步时间间隔越长,同步的时间越常。 5)没有数据错误统计,官方源数据存在错误,也需要直观的展示,让开发者了解情况。 6)系统同步状态、数据不可视化,镜像是否已更新?什么时候更新?今天更新了多少?下一次什么时候更新?这些数据开发者都不知道。 阿里云镜像的优势 阿里云镜像的架构核心目标是实时、快读、稳定、可移植、可扩展,且具备对数据进行自我修复的能力。那么阿里云镜像和其他镜像有什么区别?阿里云镜像又是如何做到秒级同步的呢? 官方合作 在数据上,阿里云与 Packagist 官方合作,经过和 Packagist 沟通,阿里云在距离官方根数据最近的城市节点部署了服务器,同时阿里云的服务器 IP地址 被加入 Packagist 白名单,允许直接、频繁地访问其根数据(Meta)。获取和解析 Meta 后,系统从代码仓库中下载源代码压缩包,再通过阿里云洛神网络不限带宽的将数据传回国内,这从最大程度上保证了国内用户可以及时、快速地获取最新数据。开发者使用 Composer 安装依赖的数据,都是镜像,甚至是镜像的镜像。例如官方在新加坡的镜像,就数次出现长达数小时的不更新,以此为镜像源的镜像站就无法为开发者提供正常的服务。 实时 阿里云实时同步源数据,对于以下场景的用户具有十分重要的意义: 1. 迫切需要更新补丁依赖包的使用者。当一个依赖包被发现有bug,得到修复后使用者往往需要第一时间升级更新,镜像同步的越及时、服务越稳定,使用者的补丁修复的也就越早,止损也就更及时。 2. 检查依赖包发布状态的包开发者来说。对于包的开发者,在发布包后,能尽快的检查发布状态,通过安装命令验证其作品的可用性。 自主研发高性能系统 同步系统由阿里云自主研发,采用 Golang 编写,使用 Redis 做任务队列,心跳协程将更新的数据文件分发到任务队列,30个协程各自分工获取数据传回国内OSS。这意味着所要同步的数据不再是一个单进程按照顺序一个一个传输,而是多个协程,甚至是多台机上的多个协程一起分工,这又将同步时间大幅度缩短。 只分发有效任务 在任务分发的机制上,实现了任务不重复,由于内存会记录已经成功处理过的任务和已分发的任务,所以不会分发旧文件,也不会发布相同的任务,这避免无效、重复工作,更是大幅度的减少了工作量,降低延迟。 重试机制 对于数据获取错误的情况,系统具有重试机制,对于因为网络问题暂时访问错误的源数据、代码包,系统会重试请求。 文件存储 阿里云 Composer 全量镜像,依靠阿里云强大的 OSS 存储源数据和代码压缩包,不占用本地磁盘,在避免最大子目录的问题的同时,还能轻松移植、扩展系统。 错误记录 记录和统计官方错误,阿里云将官方记录当中的一些错误记录下来,在方便内部随时排查问题的同时,也能更准确的了解 Packagist 的情况。 自我修复 处理不成功的任务不会被记录,在间隔时间极短的下一次同步中会得到修复。而执行错误的任务则会使用重试修复。 如果需要人工修复,只需删除响应的 KEY,系统即可重新执行并更新状态。 CDN 支撑 镜像数据对外,接入了阿里云全国 CDN 节点,阿里云强大的网络基础设施保证了开发者如丝般顺滑的使用体验。 状态数据可视化 镜像系统数据状态可视,在阿里云 Composer 全量镜像的官方页面上,动态显示 Packagist 最后更新时间,阿里云同步耗时、下一次刷新 CDN 的时间,系统同步的状态和数据让开发者“心中有数”。 免费全量镜像站,开发者的福音 阿里做镜像站的历史最早可追溯至2011年,从最开始阿里内部的需求,扩展到为更广大的开发者免费投入资源,提供更快、更稳定的镜像资源。从最初的几台设备,成长为现在覆盖主流语言和主流操作系统的全量镜像站。并且,在这个过程中,一直坚持免费为开发者提供镜像资源,不断追求更快、更稳定的服务。 目前阿里云镜像站不仅提供Centos、Ubuntu、 Fedora、Arch Linux、 Deepin 等10多个发行版的软件安装源和ISO下载服务, 还提供Python, Php 等多款开发语言的包管理镜像服务以及nvidia-cuda, homebrew, kubernetes等 10 多款垂直仓库的镜像服务。每月下载包文件数量已经超过 7 亿次。 国内镜像所做的是缓存所有安装包和元数据到自己的服务器,并通过国内 CDN 进行加速,实现 Composer require/install/update 的操作,并达到最快速度。阿里云的 PHP Composer 全量镜像能够实现与 PHP Packagist 官方实时同步,通过自研的镜像同步系统,实现多协程分工同步、数据自我修复的能力,在保证快速同步的同时,也能快速修复因网络不稳定造成的数据错误。 最后,欢迎在留言区说出你的使用体验。 原文发布时间:2019-12-24作者:顾咏 本文来自阿里云合作伙伴“阿里技术”,了解相关信息可以关注“阿里技术”。

优秀的个人博客,低调大师

倒计时 2 天|Meetup 议题已公开,Copilot 月等你来拿!

「AI时代下的基础软件」 10 月 25 日(周六),欢迎来到深圳 MoonBit 技术沙龙 ,一起探讨 AI 时代的基础软件新范式与编程语言的未来。 活动时间: 10月25日 (周六)14:00 - 17:00 活动地点: 深圳市福田区保税区市花路5号长富金茂大厦1号楼二层多功能厅 报名链接: https://hdxu.cn/1z5w9 一、MoonBit 发展 & 展望 张宏波 粤港澳大湾区数字经济研究院基础软件中心首席科学家,MoonBit 团队负责人 整体回顾MoonBit 3年来的发展历程,介绍其在编译器技术、生态建设、以及AI相关领域中的最新进展,并展望MoonBit如何成为下一代智能软件基础设施的关键一环。 二、Maria:用 MoonBit 写个 Code Agent 费浩祥 MoonBit核心开发工程师 Maria 是用 MoonBit 从 0 开发的 Code Agent 。Maria 使用 MoonBit 构建,为 Code Agent 的可靠运行提供了坚实的基础,并以 SDK 的方式向外提供接口,方便外部开发者以 Code Agent 为基础进行二次开发,并集成到具体的工作流中。 1. 如何使用 Maria: Maria 提供了启动 Maria agent和监听事件的能力,用户可以基于事件系统定制渲染、日志以及自动化任务等功能。Maria 也支持自定义工具、添加会话来实现更加复杂或者灵活的需求。 2. 如何进行工具设计: 工具是扩展 LLM 能力的重要手段。 工具提供的 JSON schema 应该尽量扁平、简单。复杂的 JSON schema 通常会导致 tool call 失败。 工具应该是 future proof 的。固定工作流的工具可能在当下很好用,能解决问题,但是随着模型能力的提升,可以完全通过模型自身的能力替代。 工具的状态和输出都应该是临时的:让 LLM 自己重建对项目的理解。 三、MoonBit Pilot 以及AI工具的一些使用技巧 刘子悦 MoonBit核心开发工程师 本次将与大家分享一些如何让AI(包括Moon pilot或者cursor等工具)写出更好的MoonBit代码的一些技巧,主要包括以下三个方面: 1. 扁平化面向对象的设计 ,MoonBit本身有非常良好的pattern match语法和AI工具链,使用更加扁平化的类设计可以更好的让AI看懂代码,写出更好的代码。 2. 善用pattern match ,而并非不安全的数组索引,或者unwrap。pattern match的语法有助于AI快速地写出正确的代码。 3. API设计,文档和测试的写法和技巧 。好的文档与测试会极大地帮助AI定位Bug,写出更好的代码。 四、AI 与 MoonBit 如何提高我们的生产力 鲍志远 MoonBit核心开发工程师 随着大模型能力的提升,AI已经越来越多地参与到我们的日常开发中,并且正在切实地提升我们的生产力。本次将与大家分享: 1. 我在日常开发中觉得AI很好用的场景 2. MoonBit工具链为了提升大模型生成MoonBit代码的能力而做的工作 五、MoonBit 异步编程系统介绍 刘请 MoonBit核心开发工程师 近期,MoonBit 发布了异步编程运行时 moonbitlang/async,有了较完整的异步编程支持。moonbitlang/async 的开发者将分享: 1. MoonBit 异步编程系统的整体设计和现状 2. moonbitlang/async 中的结构化并发设计 3. MoonBit 的异步编程系统的未来规划 六、MoonBit 自举 parser & formatter 进展和应用 陈玉斌 MoonBit核心开发工程师 本次分享将与大家介绍 MoonBit 自举解析器和格式化器的进展,并演示如何使用这些库编写有用的代码处理工具。主要包含以下方面: 1. moonbitlang/parser 模块的实现 包括如何使用moonyacc、实现性特性lexmatch、Guard语句与is表达式、snapshot test等工具和特性,来完成词法解析、语法解析、错误恢复的功能,简化自举的工作。 2. moonbitlang/formatter 模块 自举格式化器的设计思路和当前进展。 3. moonlint 代码检查工具 如何利用 moonbitlang/parser 开发基于语法的代码检查工具。 4. 代码生成工具开发 如何结合 moonbitlang/parser 和 moonbitlang/formatter 实现自定义 deriving、FFI 包装生成等实用的代码生成工具。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册