基于go语言实现高并发推荐系统架构设计

ArchSummit全球架构师峰会 ArchSummit全球架构师峰会     2022-11-28     470

关键词:

本文由 InfoQ 整理自小年糕算法中台后端架构师封幼林在 QCon+ 大厂案例(2021 冬季北京站)的分享《高并发推荐系统架构设计》。  
作者|封幼林
编辑|贾亚宁

你好!我是封幼林,在小年糕负责推荐系统,主要从事服务架构相关工作。今天我要和你分享的话题是《高并发推荐系统架构设计》。

这次分享主要分为以下这几个部分:

  1. 推荐系统的基本架构

  2. 旧版线上架构的并发瓶颈问题

  3. 新版线上架构编程语言的选择

  4. 印象深刻的 Go 踩坑经历

执行系统调用的时候,其关联的 P 可以被其他 M 抢占,保证了资源的利用率。内部,编码方式对开发者友好;

3.GMP 调度模型在多核 CPU 上有很好的扩展性,能充分发挥系统的计算能力;
4.闭包的捕获列表会尽量捕获值,只有变量会被修改时捕获地址。
最后,如果我再做一遍这个项目,我可能会从两个角度上再优化一下:
1.要落实系统、全面的测试。尤其在进行重构的时候,我们遇到过的很多问题,都是因为测试不完善,或者测试环境不能模拟真实环境所致。很多本来是可以避免的,所以落实系统、全面的测试真的很有必要。
2.避免过度设计。我们从一入行就被告知,写的程序要灵活易于扩展。长此以往之后,很多人实际上会做过度设计。反思我自己也有这种问题,代码中的各种设计模式,还有服务模块的拆分等等。不仅造成了较高的维护成本,还会在一定程度上影响性能。所以一定要结合实际需求进行设计。

最后送你一句话,知其所以然,磨刀不误砍柴工。

作者简介
封幼林,小年糕 算法中台后端架构师
现为小年糕公司推荐系统后端架构负责人,带队用 Go 重写了推荐系统的整个线上架构。此前任职于猎豹移动国内工具部门,负责国内新闻推荐系统相关服务的开发与演进。喜欢使用 C++ 和 Go 语言,对底层实现原理感兴趣。微信公众号“幼麟实验室”的作者(B 站和知乎同名账号),著有《深度探索 Go 语言》一书(即将出版)。
活动推荐
2022 年 4 月 24-25 日,将在上海·宝华万豪酒店举办 ArchSummit 全球架构师峰会,议题更加聚焦纵深,更加丰富,内容涵盖业务场景、行业应用、一线实践。议题都是经过组委会和专题出品人层层筛选出来的,讲师也都是业界大公司的技术骨干,技术大拿。在讲师的演讲表现上,我们也会要求讲师提前远程试讲,打磨 PPT,把最好的内容和最棒的讲师呈现在听众面前。目前会议 7 折末期,想要购票的可以直接扫描下方二维码或者联系票务经理小倩:18514549229(同微信)

13.go语言高并发与微服务实战---综合实战:秒杀系统的设计与实现

13.综合实战:秒杀系统的设计与实现 秒杀系统设计原则: 1.数据要尽量少 2.请求数尽量少 3.路径要尽量短 4.依赖要尽量少 5.尽量不要有单点       查看详情

2.go语言高并发与微服务实战---微服务概述

....2常见的微服务框架 2.2.1Java中的SpringCloud与Dubbo框架 2.2.2Go语言中的GoKit与GoMicro框架2.3微服务设计的六大原则 1.高内聚,低耦合 2.高度自治 3.以业务为中心 4.弹性设计 5.日志与监控 查看详情

2.go语言高并发与微服务实战---微服务概述

....2常见的微服务框架 2.2.1Java中的SpringCloud与Dubbo框架 2.2.2Go语言中的GoKit与GoMicro框架2.3微服务设计的六大原则 1.高内聚,低耦合 2.高度自治 3.以业务为中心 4.弹性设计 5.日志与监控 查看详情

架构高可用高并发系统的设计原则

...构的反映–按照业务闭环进行系统拆分/组织架构划分,实现闭环、高内聚、低耦合,减少沟通成本–如果沟通出现问题,应该考虑进行系统和组织架构的调整–适合时机进行系统拆分,不要一开始就吧系统、服务拆分拆的非常... 查看详情

微服务架构

...级设计进行记录。一、背景&问题  之前框架是一个基于SOA思想设计的分布式框架。各应用通过服务方式提供使用,服务之间通信是RPC方式调用,具体实现基于.NET的WCF通信平台。框架存在如下2个问题:  1、高并发处理能... 查看详情

基于redis和nginx实现高并发缓存架构(代码片段)

目录1缓存架构设计1.1缓存架构设计2Redis集群高级应用3Nginx缓存3.1OpenRestry安装3.2浏览器缓存3.2.1NginxWeb缓存配置3.2.2Http缓存控制头3.3代理缓存3.3.1proxy_cache3.3.2缓存操作4Canal的使用1缓存架构设计一谈到缓存架构,很多人想到的是... 查看详情

互联网架构是怎么实现“高并发”的

一、什么是高并发高并发(HighConcurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。高并发相关常用的一些指标有响应时间(ResponseTime),吞吐量(Throughpu... 查看详情

1.go语言高并发与微服务实战---云原生架构

1.1云计算的历史 1.1.1云计算的基础:虚拟化技术 1.1.2基于虚拟机的云计算 1.1.3容器的横空出世和容器编排大战 1.1.4云计算演进总结1.2云原生是什么 1.2.1云原生出现的背景 1.2.2云原生的定义 1.2.3云原生与12因素1.3云原生的基础架构 ... 查看详情

1.go语言高并发与微服务实战---云原生架构

1.1云计算的历史 1.1.1云计算的基础:虚拟化技术 1.1.2基于虚拟机的云计算 1.1.3容器的横空出世和容器编排大战 1.1.4云计算演进总结1.2云原生是什么 1.2.1云原生出现的背景 1.2.2云原生的定义 1.2.3云原生与12因素1.3云原生的基础架构 ... 查看详情

302|高并发架构设计方法:面对高并发,怎么对症下药?

...,服务器就会崩溃,整个系统将无法正常使用。今天我将基于高并发系统的技术挑战,来为你介绍典型的分布式解决方案。这节课的内容,会被应用到后面的大部分实战案例中。所以我希望通过这节课,带你做个简单的预习,同... 查看详情

全流程开发go实战电商网站高并发秒杀系统

获取资源点击这里:全流程开发GO实战电商网站高并发秒杀系统第1章课程介绍【学前须知】本章对这门课程进行说明,包括:秒杀系统涉及模块的介绍,秒杀核心的知识点的介绍,课程的学习规划等。 1-1课程介绍试看第2章... 查看详情

go语言实战抽奖系统

第1章课程介绍课程内容的整体介绍以及学习建议。1-1Go抽奖系统导学第2章6种抽奖活动来一遍看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙... 查看详情

go语言实战抽奖系统

第1章课程介绍课程内容的整体介绍以及学习建议。第2章6种抽奖活动来一遍看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下... 查看详情

1开篇词|“附身”大厂架构师,身临其境设计高并发系统

...也没有完成任务后的喜悦与轻松,学到的各种技术就无法基于这种真实的现场感而融汇成自己的观点,最后还是一些零碎的知识。正所谓:听过很多道理,依然过不好这一生。说到底,还是因为缺乏实践。当然了,大厂能为我们... 查看详情

4.go语言高并发与微服务实战---go语言高级特性

...发模型,一种是我们常见的共享内存并发模型;另一种是基于Go语音推荐的CSP(顺序通信进程)并发模型。Go语音使用了一种特殊的MPG 查看详情

4.go语言高并发与微服务实战---go语言高级特性

...发模型,一种是我们常见的共享内存并发模型;另一种是基于Go语音推荐的CSP(顺序通信进程)并发模型。Go语音使用了一种特殊的MPG 查看详情

大型网站的架构设计问题----大型高并发高负载网站的系统架构

...网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的 查看详情

李智慧·高并发架构实战课课程大纲

...如何下载千亿级网页?605|网盘系统设计:万亿GB网盘如何实现秒传与限速?706|短视频系统设计:如何支持三千万用户同时在线看视频?807|海量数据处理技术回顾:为什么分布式会遇到CAP难题?908|秒杀系统设计:你的系统可以应... 查看详情