Faas在哈啰AI平台的落地实践、缓存与数据库双写一致性几种策略分析 | 每日掘金第 217期

832 阅读7分钟

Hello,又到了每日掘金时间。酱酱们的每日掘金新增优质作者介绍和码上掘金板块,专注于发掘站内优质创作者和优质内容,欢迎大家多提宝贵意见!

本文字数2100+,阅读时间大约需要 15分钟。

  • 【本期每日掘金】亮点:
  • 缓存与数据库双写一致性几种策略分析
  • Faas在哈啰AI平台的落地实践
  • 2023 最新最细 vite+vue3+ts 多页面项目架构,建议收藏备用!
  • Monorepo 解决方案之 Remote Execution
  • 🔥面试官:谈谈一段JS代码是如何执行的
  • 不用刷新!用户无感升级,解决前端部署最后的问题
  • ……

筛选规则:文章发布时间在本期「酱酱们的每日掘金」发布时间的 1-3 天内,且符合社区推荐标准,也会同步发布在掘金相关技术社群。

今日主理人|每日掘金

本期每日掘金由 帅气的法医 负责制作,法医是一个长期活跃于沸点的最佳摸鱼手,热爱Coding,喜欢分享,五湖四海皆兄弟,欢迎大家一起在沸点摸鱼,在掘金创作。

每日干货|每日掘金

主理人们会对近期(1-3 天)社区深度技术好文进行挖掘和筛选,优质的技术文章有机会出现在下方列表,排名不分先后。

『前端』

不久前我司需要重新部署一个前端项目,由我来负责这个项目的搭建。因为这个项目是需要和app混合开发的h5页面,包括以后可能会做一些运营h5,所以自然不能采用常规的SPA单页面应用架构(因为大部分页面耦合度低,全都塞一个项目里的话,即使打开个纯静态页都要跑起来整个项目,严重影响页面的加载速度)

本文主要介绍了Remote Execution在iOS Monorepo方案中的作用,原理和实现。作为和Monorepo配套的基础设施,Remote Execution很好的解决了仓库体积膨胀背景下,构建性能方面遇到的新挑战。

我们一直在写JS代码,但是不是发现自己却并不太明白我们写的JS代码究竟是如何执行的? 尤其是当被面试官问到这种问题时,如果一句话都搭不上,在面试官的心中会留下不好的印象的。那么下面我们来弥补一下这方面的知识点吧~

前端部署需要用户刷新才能继续使用,一直是一个老大难的用户体验问题。本文将围绕这个问题进行讲解,揭晓问题发生的原因及解决思路。

在计算机所有的内容中,无论是文字、数字、图片、音频、视频最终都会使用二进制展示。JavaScript 可以处理非常直观的数据,例如字符串,无论是宽字节字符串或者是单字节字符串,通常我们展示给用户的也是这些内容,但是 JavaScript 处理图片这些就显得无能为力了,实际上在网页端,图片一直是交给浏览器去处理的,我们只是负责告诉浏览器一个图片的地址,浏览器最终显示出来。

『后端』

客户端1和客户端2都去抢锁,如何确定锁的唯一性?不是redis自身实现的(类似于zk实现的),而是由客户端来代替了leader角色。俩客户端去抢锁,要是zk的话 ,客户端给zk的leader就可以了,zk自己去同步。

作为一名互联网程序员,经常需要面对高并发的场景,为了更好地提高系统的吞吐量和响应速度,我们通常采用并发编程。而线程池技术也是Java并发编程中的一个重要组成部分。本文将分享我的Java线程池使用经历,以及Java线程池在转转平台的实践。

数据库的索引从不同的角度可以划分成不同的类型,聚簇索引便是其中一种。聚簇索引英文是 Clustered Index,有时候小伙伴们可能也会看到有人将之称为聚集索引等,与之相对的是非聚簇索引或者二级索引。

在高并发场景中,为防止大量请求直接访问数据库,缓解数据库压力,常用的方式一般会增加缓存层起到缓冲作用,减少数据库压力。引入缓存,就会涉及到缓存与数据库中数据如何保持一致性问题,本文将对几种缓存与数据库保证数据一致性的使用方式进行分析。为保证高并发性能,以下分析场景不考虑执行的原子性及加锁等强一致性要求的场景,仅追求最终一致性。

一是运维复杂问题,AI平台有多种不同语言的模型推理服务, 如python、C++(tf-serving)、Java等,各自管理上百个不同类型的模型;架构也很复杂,存在大型单体应用、多container应用、小型GPU应用等多种服务组织方式;同时,手动运维有余,自动化工具不足。

『移动端』

由于Flow相对来说比较复杂,所以笔者单独整理了一篇;Kotlin Flow流是协程的一个特性,它用作响应式编程框架。Flow流旨在处理异步数据流。它类似于 Kotlin 中的Sequences,也具有响应式编程的好处。本文笔者通过思考关于Flow的一些问题,来验证是否初步了解掌握Kotlin Flow

前段时间写了流畅性三板斧的系列文章,比较系统性但不是很精细的梳理了下在Android端如何做帧率监控、主线程耗时监控、以及ANR 的监控。在写作过程中也参考了大厂在这方面对外分享的技术文章,本文就此梳理下这些文章,一是为了更好的吸收消化这些方案从中汲取营养,另一方面也算是致敬这些帮助我们成长的无私分享。

本文从一例业务中遇到的问题出发,以FLAG_ACTIVITY_NEW_TASK这一flag作为切入点,带大家探究Activity启动前的一项重要的工作——栈校验。

Swift 作为现代、高效、安全的编程语言,其背后有很多高级特性为之支撑。『 Swift 最佳实践 』系列对常用的语言特性逐个进行介绍,助力写出更简洁、更优雅的 Swift 代码,快速实现从 OC 到 Swift 的转变。

过长的启动时间对于用户体验是非常的不好的,苹果建议的启动时间不要超过400ms,大约0.4秒,并且启动时间超过20s将被系统直接杀死,所以优化启动时间是极其必要的。

📖 投稿专区|每日掘金

👉 大家可以在评论区推荐认为不错的文章,并附上链接和推荐理由,有机会登上下一期。文章创建日期必须在近 1-3 天内;可以推荐自己的文章、也可以推荐他人的文章。