案例研究:Pinterest 过去、现在和未来稳固在云原生上 公司:Pinterest 地点:加利福尼亚州旧金山 行业:网站和移动应用程序 挑战: 经过八年的发展,Pinterest已经成长成为1,000 对各种解决方案进行评估后,Pinterest选择了Kubernetes。 影响: “通过迁移到Kubernetes,团队能够构建按需扩展和新的故障转移政策,此外还简化了Jenkins等复杂基础架构的整体部署和管理,”Pinterest的云计算和数据基础设施组产品经理Micheal 在KubeCon + CloudNativeCon 2017奥斯汀,Michael Benedict@Pinterest分享了Pinterest从虚拟机到容器的旅程,这里可以重温: 链接以了解更多。 在KubeCon + CloudNativeCon 2017柏林,Michael Benedict@Pinterest也分享了大规模地管理微服务的生命周期,这里可以重温: 链接以了解更多。
Pinterest 在官方博客上发布了自己对于 ZooKeeper 的运用经验,下面一起看下 Pinterest 是如何应用 ZooKeeper 及遇到的问题和解决方式 应用场景 1服务发现 Pinterest 把配置放在了 Zookeeper 中,Data Service 对其进行监听,配置数据有变化后,Data Service 可以立即进行更新 ZooKeeper 出现问题的因素 Pinterest 在使用 ZooKeeper 的过程中也遇到了一些问题,引发问题的因素主要包括: 1连接数太多 Pinterest 服务规模较大,与 ZooKeeper 的连接数过多,这会导致 ZooKeeper 尝试使用多个 ZooKeeper 集群,不同集群负责不同的功能,例如部署系统使用一个集群,HBase 使用一个独立的集群 有效,但还不是彻底的解决方案 4回退到静态文件 Pinterest 中 对 ZooKeeper 解耦的思路很不错,值得借鉴 原文地址: https://engineering.pinterest.com/blog/zookeeper-resilience-pinterest
原文 https://medium.com/pinterest-engineering/pinterest-is-now-on-http-3-608fb5581094 文 / Liang Ma, Scott Beardsley, Haowei Yuan 译 / 核子可乐 技术审校 / Liang Ma 图一:Pinterest的HTTP/3架构 现在,HTTP/3已经在Pinterest落地。 这些优势与Pinterest用例显然高度契合——实现更快的连接建立速度(首请求首字节时间)、更好的拥塞控制(我们掌握着大体量媒体)、保证多路复用时不存在TCP队头阻塞(同时多次下载),并可在Pinterest 这样,当用户在Pinterest上挥洒灵感之时,他们将获得更快、更可靠的使用体验。 在Pinterest落地HTTP/3 策略 安全和指标永远第一。 流量:Pinterest多CDN边缘网络上的各主要生产域均已启用HTTP/3。
原文 https://medium.com/pinterest-engineering/managing-videos-on-android-f59da9601d5f 2016年Pinterest安卓应用上发布的视频模块 我们还提取了所有Pinterest特定的分析代码,用以来聚焦在视频管理器(管理和播放视频)功能上,同时让这个管理组件和应用程序之间保持独立。
作者 | Rafal Gancarz 译者 | 明知山 策划 | 丁晓昀 Pinterest 开源了其通用的 PubSub 客户端库 PSC,该库已在生产环境中使用了一年半。 Pinterest 在其平台上重度使用消息传递基础设施,包括 Apache Kafka、Apache Flink 和 MemQ。 Pinterest 的工程师开发了一种 Flink-PSC 连接器,可以实现基于 Flink 的工作负载的无缝迁移。 PSC 对 Flink 作业重启的影响(来源:Pinterest 工程博客) Pinterest 计划进一步在 PSC 中引入增强功能,包括自动处理更多可修复的错误,例如检测和刷新即将过期的 SSL 证书 Pinterest 还在开发 C++ 版本的客户端,并计划开发 Python 版本。Pinterest 的平台团队希望利用客户跟踪功能来支持客户扣款,以便将基础设施成本归入项目和团队。
Pinterest 是一个图片社交平台,拥有庞大的用户群。 Pinterest 的 K8s 之旅 对 Pinterest 团队来说,采用 Kubernetes 意味着诸多风险,它不仅需要支持 Pinterest 如此大规模的工作负载,还要打造工程师们喜欢的平台。 Pinterest 中一个非常常见的模式是多个作业并行运行相同的容器,每个作业占用了一部分工作负载,而又彼此不依赖; PinterestCronJob 是本机 cron 作业的封装,支持 Pinterest 以上是 Pinterest 内部对服务工作负载的典型运行时支持的示例。 原文地址: https://medium.com/pinterest-engineering/building-a-kubernetes-platform-at-pinterest-fb3d9571c948
这是一家基于兴趣的社交分享网站,网站为用户提供了一个简单地采集工具,帮助用户将自己喜欢图片重新组织和收藏。网站布局美观合理,内容丰富。此原型模板所用到的组件有按钮栏、菜单栏、搜索框、水平分割线。交互动作有鼠标悬停文字按钮颜色改变效果,鼠标按下文字按钮颜色改变效果,按钮跳转页面,利用按钮栏实现table切换效果。
Monarch 是 Pinterest 的批处理平台,由30多个 Hadoop YARN 集群组成,其中17k+节点完全建立在 AWS EC2 之上。 本文分享 Pinterest 将 Monarch 升级到 Hadoop 2.10.0 的经验。 这些内部补丁中的大多数都是 Pinterest 特有的,需要大量时间投入才能将它们移植到 Hadoop 2.10。 因此,将 Pinterest Hadoop 2.7 的更改应用到社区的 Hadoop 2.10 上并非易事。 本文翻译自:Large Scale Hadoop Upgrade At Pinterest https://medium.com/pinterest-engineering/large-scale-hadoop-upgrade-at-pinterest-a23a112deb73
Pinterest 的机器学习工程师 Aayush Mudgal 在 2023 年旧金山 QCon 上发表了一场关于解析 Pinterest 广告排名系统机制的演讲。 在分享中,他介绍了 Pinterest 如何使用深度学习和大数据为其用户量身定制各种广告。 与大多数在线平台一样,个性化体验是 Pinterest 的核心能力。 例如,Pinterest 过去使用 XGBoost 进行训练,然后将其转换为 TensorFlow 模型,再将其转换为 Pinterest 的服务语言 C++。 过去,Pinterest 的每个团队都有许多管道:大家都在重新构建同一个轮子。Pinterest 需要以更具扩展性的方式做到这一点。去年大多数迭代都是针对这件事的。 为了能够调试系统,Pinterest 开发了几种工具。关键之一是了解广告投放渠道:检索、预算、索引和广告客户。Pinterest 的工具可帮助他们定位广告从漏斗中移除的位置。
寻求灵感,Pinterest 核心基础设施系统的需求增长的比以往任何时候都快。 本文中,我们将对支持 Pinterest 的大规模缓存集群的架构进行深入的技术研究。 2分布式缓存的骨干:Memcached 和 Mcrouter Memcached 和 mcrouter 构成了 Pinterest 分布式缓存基础架构的骨干,并且在 Pinterest 的存储基础架构中起着至关重要的作用 尽管从 Pinterest 早期开始,memcached 一直就是 Pinterest 基础架构的一部分,我们对其客户端的拓展策略在这些年来也在不断进化。 原文链接: https://medium.com/pinterest-engineering/scaling-cache-infrastructure-at-pinterest-422d6d294ece
作者:Anson Qian,译者:冯旭松,原文:https://stackshare.io/pinterest/scaling-kubernetes-with-assurance-at-pinterest 自上次我们分享 Pinterest 的 Kubernetes 之旅 [1] 已过去一年有多。 在 Pinterest 的 Kubernetes 平台上,不同命名空间的工作负载是由不同项目的不同团队所拥有,平台用户使用 Pinterest CRD 来配置他们的工作负载。 鸣谢 Pinterest 的许多工程师在扩展 Kubernetes 平台以赶上业务增长这过程中做出了很多努力。 引用链接 [1] Pinterest 的 Kubernetes 之旅: https://medium.com/pinterest-engineering/building-a-kubernetes-platform-at-pinterest-fb3d9571c948
Pinterest近日完成2亿美元的融资,使得公司的市值达到了50亿美元。 Pinterest逐渐建立了自己独有的模式:通过可视化搜索引擎,允许人们分享和搜索自己感兴趣的对象。 Pinterest中的许多图像都与人们想要购买的物品有关——家居装饰,服装,食品等等,使得Pinterest成为了电子商务网站一个给力的入口,也为了消费者发现新品牌的地方。 同时,Pinterest的目标也是走向世界各地。 销售广告也是Pinterest想要力推的对象,现在Pinterest已经推出了它的第一个广告产品Promoted Pins。 通过建立自己的产品,Pinterest得以在激烈的竞争中站稳脚跟,在试探性地推出Promoted Pins后,Pinterest得到了卡夫和Gap这两个客户,他们向Pinterest付钱来突出它们的品牌内容
在 Pinterest,流数据处理支持广泛的实时用例。 近年来,由 Flink 提供支持的平台通过提供近乎实时的内容激活和指标报告,已被证明对业务具有巨大价值,并有可能在未来解锁更多用例。
作者 | Pinterest Engineering 译者 | 王强 策划 | 蔡芳芳 Pinterest 的内部搜索引擎 Manas 是一个通用的信息检索平台。 如今,Manas 支持大多数 Pinterest 产品的搜索功能,包括广告、搜索、Homefeed、Related Pins、Visual 和 Shopping。 原文链接: Manas Realtime — Enabling changes to be searchable in a blink of an eye https://medium.com/pinterest-engineering
注:本文作者 Fanshu Jiang 和 Lu Niu 任职于 Pinterest 流处理平台团队。 Pinterest 流处理已赋能多项实时用例。 更多 Pinterest 流处理参考资料: Pinterest 的统一 Flink 源:流数据处理(Unified Flink Source at Pinterest: Streaming Data Processing ): https://medium.com/pinterest-engineering/unified-flink-source-at-pinterest-streaming-data-processing-c9d4e89f2ed6 基于 Apache Flink 的 Pinterest 实验性实时业务平台(Real-time experiment analytics at Pinterest using Apache Flink ): https://medium.com/pinterest-engineering/real-time-experiment-analytics-at-pinterest-using-apache-flink
下面将介绍 Redis 是如何被利用在“美版小红书” Pinterest 中的。 哈希表在 Pinterest 中的应用 在 Pinterest 的应用里,每个用户都可以发布一个叫 Pin 的东西,Pin 可以是自己原创的一些想法,也可以是物品,还可以是图片视频等,不同的 Pin 可以被归类到一个 所以 Pinterest 将很多这些关系图都保存在了 Redis 里面,从而不必从数据库中读取内容。 从 Pinterest 公布的工程论文中可以知道,他们会将一个用户所关注的其他用户保存在 Sorted Sets 里。 Pinterest 也会将对于一个 Board 的所有关注用户存放在 Redis 的 Hash 里。
来自Pinterest的开发人员以及斯坦福大学的研究人员合作推出PinSage,这是一种基于深度学习的高级推荐框架,用于社交网络中的广告和购物推荐。 “随着使用Pinterest的月活跃用户数超过2亿,图像保存数量也越来越多,我们必须不断建立新技术,不仅要跟上,还要提出更明智的建议,”Pinterest工程师Ruining He在一篇博文中表示。 Pinterest工程师说,“我们的模型依赖于此图形信息来提供上下文,并允许我们消除(视觉上)相似但在语义上不同的Pins的歧义。
作者 | Pinterest Engineering 译者 | Sambodhi 策划 | 蔡芳芳 众所周知,应用程序的大小(下载大小 [1] [2])是非常重要的,并且在应用程序的大小和客户参与度之间存在关联 近来,我们对 Pinterest 的 iOS 版 v9.1 进行了改进,使其体积大大减少: 表 1:iPhone 11 Pro 是我们的目标机型。 关于 Pinterest 的背景,我们使用 Bazel 进行 iOS 版本构建。加入你不熟悉 Bazel,这篇文章值得一读。 举例来说,它是 /path/to/Pinterest.app/PlugIns/SiriExtension.appex/ 而非 /path/to/Pinterest.app/。 [2] 本地安装大小是指实际应用在你的手机磁盘上的大小(设置应用→iPhone 存储→Pinterest→应用大小)。它是为你的手机型号瘦身的,所以通常比通用体积小。
Pinterest是世界上最大的图片社交分享网站。网站允许用户创建和管理主题图片集合,例如事件、兴趣和爱好。以下为来自Pinterest工程师关于代码审查的一些思考。 相似度信号在 Pinterest 被广泛用于各种用例,从改进基于相似图像的推荐到删除垃圾邮件和滥用内容。 具体来说,我们想解决以下两个问题: 给定一张图片,查找之前在 Pinterest 上是否使用过相同的图片(或轻微的变化,也就是 NearDup) 给定一张图片,找到 Pinterest 上使用的所有相似图片的列表 出于实际原因,Pinterest 使用的整个图像世界被分解为一组不重叠的集群。 挑战 Pinterest 上的大量图像在可扩展性和稳健性方面提出了一系列挑战。
在本次发布的 Pinterest Lens 中,我们还将物体检测运用到了 Pinterest 数百万的图片当中,使得需查询物体可以和目录图片里的其它相似物进行匹配。 而第七和第八部分是关于我们发布 Pinterest Flashlight 和最新的 APP Pinterest Lens 的相关经验。 PINTEREST RELATEDPINS Related Pins 是一个图钉推荐系统,在 Pinterest 大量人们自己设计的内容中,它能够通过查询图钉来推荐其他的个性化图钉。 PINTEREST FLASHLIGHT ? 如图9所示,Falshlight 是一个视觉搜索工具,帮助用户搜索 Pinterest 图片中的所有物体。 PINTEREST LENS 如图12所示,Pinterest Lens 是一种基于手机相机的全新探索体验。 ?