一个架构师的缓存修炼之路

一位七牛的资深架构师曾经说过这样一句话:

Nginx+业务逻辑层+数据库+缓存层+消息队列,这种模型几乎能适配绝大部分的业务场景。

这么多年过去了,这句话或深或浅地影响了我的技术选择,以至于后来我花了很多时间去重点学习缓存相关的技术。

我在10年前开始使用缓存,从本地缓存、到分布式缓存、再到多级缓存,踩过很多坑。下面我结合自己使用缓存的历程,谈谈我对缓存的认识。

阅读全文

实战篇,一个核心系统 3 万行代码的重构之旅

经典著作《重构》这本书中有这么一段话:

一开始,我所做的重构都停留在细枝末节上。随着代码趋向简洁,我发现自己可以看到一些设计层面的东西了,这些是我以前理解不到的,如果没有重构,我达不到这种高度。

重构,着实是一件让程序员兴奋的事情。

今年年初,我们团队完成了一个复杂项目的重构工作,它属于广告系统最核心的引擎部分,大概有 300 多个文件,3 万多行代码。

阅读全文

程序员,是否应该有自己的职业规划

很早之前有读者微信我,希望我能够拿自己的职业路径为例子写一篇关于职业规划的文章。

刚好前几天,一个靠技术移民国外的程序媛朋友主动和我分享了下面的内容,她已经工作20年了,目前是亚马逊的架构师。看到她发的这些内容后,真的很感动。

阅读全文

23张图,带你入门推荐系统

做广告业务1年多时间了,但是平时的工作主要和 广告工程 有关,核心的广告算法由 AI 部门支持,对我们而言可以说是「黑盒般」的存在,只需要对训练好的模型进行调用即可。

近期,我打算系统性地学习下广告中的搜索和推荐算法,当然更多是从工程的视角去弄清楚:算法的基本原理、以及面对线上海量数据时算法是如何解决性能问题的?整个过程,我会将有价值的技术点输出成系列文章。

阅读全文

魔幻的2020年,请程序员们收下这份秋招建议

金九银十,又到一年秋招季。这场规模巨大的校园招聘,承载了近千万毕业生的梦想。不过,在这特殊的2020年,这场秋招也变得非比寻常。

本周,我们公司的校园招聘也正式启动了,我担任了3天的二面面试官。这是我毕业8年后,第一次以另外一种身份参与到秋招中。虽然没有应聘者的那种压力感,却能深深感受到他们身上的紧张、诚挚和渴望,当年自己参与秋招的画面也历历在目,甚是感慨。

阅读全文

干货,广告系统架构解密

广告、增值服务、佣金,是互联网企业最常见的三种盈利手段。在这3大经典中,又以广告所占的市场份额最大,几乎是绝大部分互联网平台最主要的营收途径,业务的重要性不言而喻。

从技术角度来说,广告业务涉及到 AI算法、大数据处理、检索引擎、高性能和高可用的工程架构 等多个方向,同样有着不错的技术吸引力。

阅读全文

公号写作,可当做一场修行

从元旦节开始写公号,转眼已经半年多了,粉丝数在上周达到了5000,非常感谢读者们的关注。

写作,本身是一件不太容易的事情,能把它坚持下来,还是挺让自己感动的。虽然称不上牛逼,但是的确很锻炼人的耐力,基本上占用了我周末大部分的时间。

平时忙于工作,累计只输出了19篇文章,但一直把质量当做自己的底线,希望能对得起读者们的时间。半年下来,心态上也经历了不少变化。

越发觉得:当你把公号当做自己的个人品牌去运营,算得上「一场修行」。

阅读全文

监控系统选型,这篇不可不读!

之前,我写过几篇有关「线上问题排查」的文章,文中附带了一些监控图,有些读者对此很感兴趣,问我监控系统选型上有没有好的建议?

目前我所经历的几家公司,监控系统都是自研的。其实业界有很多优秀的开源产品可供选择,能满足绝大部分的监控需求,如果能从中选择一款满足企业当下的诉求,显然最省时省力。

阅读全文

总监路上的第1年,聊聊几点感受

今天一大早,收到了HR发的入职1周年邮件,顿时有一丝小感慨。

一方面,时间真的猝不及防,过得很快;另一方面,过去这1年里自己在努力地做出改变,虽然找到了一些节奏,但是内心依旧没法做到平淡如水,不迷茫却略带点焦虑。

阅读全文

YGC问题排查,又让我涨姿势了!

在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在Stop The World问题,因此很容易导致服务超时,引发性能问题。

我们团队负责的广告系统承接了比较大的C端流量,平峰期间的请求量基本达到了上千QPS,过去也遇到了很多次GC相关的线上问题。

阅读全文