Skip to content
ABFree Studio

Blog

TurboRepo Docker镜像优化指南:轻松打造轻量级镜像

最近往我的TurboRepo中添加了几个后端项目,然后使用Docker部署到服务器上,网上的TurboRepo的打包部署教程比较少,而且有些文章给的方法让Docker的镜像变得很大,所以我这里记录一下我是怎么减少镜像大小的。

API进化论(一):从REST到GraphQL的蜕变之路

这也是一篇公司内布道文章,因为GraphQL在已有服务的改造成本太高,在项目内没有引入,但是其中的很多概念和开发体验还是打动了一些同事。GraphQL目前的状态不温不火,加之一些同构RPC框架的出现,开发者的选择有了更多选项。至少笔者认为GraphQL至少让接口类型安全被重视。

使用tRPC制作网关

trpc本身的架构不似GraphQL那样复杂,没有DSL,没有Schema,没有复杂的类型系统,没有复杂的查询语言。类型定义是通过TypeScript的类型系统来定义的,查询语言是通过函数调用来定义的。这样的设计使得trpc的学习成本非常低,上手非常快。

首先我们得提前了解一下几个知识点:

RPC:Remote Procedure Call,远程过程调用,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 微服务:Microservices,是一种架构风格,是一种将单一应用程序划分为一组小的服务的方法,每个服务运行在自己的进程中,并与其他服务通过HTTP API进行通信。

Diagram
direction: right
Alice -> John: "Hello John, how are you?"
John -> Alice: "I feel great!"
Alice -> John: "John, can you hear me?"
John -> Alice: "Hi Alice, I can hear you!"
Alice -> John: "Did you want to go to the game tonight?"
John -> Alice: "Yeah! See you there."

使用tRPC制作网关

direction: down
main-server: main-server服务
share: share
pub-auth: pub-auth
worker-gateway: worker-gateway
ui: ui
main-server -> share: 依赖
main-server -> pub-auth: 依赖
main-server -> worker-gateway: 依赖
share -> ui: 依赖
pub-auth -> ui: 依赖
worker-gateway -> ui: 依赖
direction: right
手动触发 -> 生成对应任务
自动触发 -> Cron -> 生成对应任务
生成对应任务 -> {
访问对应网址 -> 保存mhtml -> 上传到R2 -> 生成对应PreviewURL
}
插件 -> 预览 -> 上传 -> 解析 -> 存储 -> CDNPreview
保存mhtml -> {
gateway -> worker -> postgre: 保存数据
}

Cloudflare R2 预览svg的行为会变成下载,


© 2024 ABFree Co. All rights reserved.