go get 本地_使用 Go 优化我们的接口

本文介绍了如何使用 Go 语言优化接口性能,主要涉及缓存优化和并发策略。首先讨论了内存缓存优于 Redis 的原因,并提出了三种缓存更新方案,最终选择了被动更新策略。接着探讨了 Go 中的 Goroutine 支持的并发优化,以及为何 Golang 中的 map 不是线程安全的。最后,提到了通过策略模式优化代码结构,实现更高效和易维护的代码。
摘要由CSDN通过智能技术生成

使用 Go 优化我们的接口

标题起的是有点大,不过还好本片文章主要也是使用 Go 来优化 HTTP 服务的,也算打个擦边球吧~

背景

特征数据暴增,导致获取一个城市下所有的特征的接口延时高,下面是监控上看到的接口响应耗时,最慢的时候接口响应时间能达到 5s 多。

800c4be495d851d1ed7c4a2bc65a978e.png

缓存优化方案

代码优化思路:

1,使用缓存。

1.1为什么使用内存,而不是 Redis?

分析业务需求,当前需要存储起来的数据是ObjectId,ObjectId 是一个长度为14左右的字符串,我们假设平均下来ObjectId是长度为16的字符串,这样算下来就是每个 ObjectId 占用的内存大小是2个字节,当前业务需要存储的ObjectId大概是30万条,这样算下来当前业务需要存储的 ObjectId 要占用的内存在 0.5M 完全可以在内存中进行操作。相比于使用 Redis 来说没有网络开销,效率更高。

1.2 缓存初始化:当服务启动时,本地缓存初始化为空。

1.3 关于缓存版本的概念。

缓存版本是离线特征生产任务更新后将数据版本更新到 DB 中。

下面三种方案都是基于内存存储 ObjectId 数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值