自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 问答 (2)
  • 收藏
  • 关注

原创 服务端缓存

对于大部分互联网应用,数据访问频次分布通常满足二八定律,头部的20%数据往往占据超过80%的访问流量。在业务早期,由于流量较小,数据库就可以满足所有的访问流量,随着业务的发展,数据库无法抗住所有的流量,此时通常会引入高性能的缓存,用于缓解数据库的访问压力。得益于数据的二八分布,缓存的容量通常远远小于数据库的总容量,但是却能保证大部分的热点数据请求命中缓存。

2023-12-15 13:49:21 55

原创 聊聊trace:微服务背景下的调用栈追踪

微服务真正的崛起是在 2014 年,相信阅读此文的大多数读者,也是从 Martin Fowler 与 James Lewis 合写的文章《Microservices: A Definition of This New Architectural Term》中首次了解到微服务的。这并不是指各位一定读过这篇文章,应该准确地说——今天大家所了解的“微服务”是这篇文章中定义的“微服务”。

2023-12-06 23:56:10 108

原创 cdn技术简介(偏直播方向)

CDN的全称为Content Delivery Network,即内容分发网络,是一个策略性部署的整体系统,主要用来解决由于网络带宽小、用户访问量大、网点分布不均匀等导致用户访问网站速度慢的问题。如果把某个互联网系统比喻为一家企业,那内容分发网络就是它遍布世界各地的分支销售机构。一个运作良好的内容分发网络,能为互联网系统解决跨运营商、跨地域物理距离所导致的时延问题,能为网站流量带宽起到分流、减负的作用。网站服务器接入网络运营商的链路所能提供的出口带宽。

2023-11-26 15:31:14 306

原创 php静态代码分析工具设计与实现

项目地址:背景:1.阅读调用栈复杂的业务代码很多业务代码由于时间的积累调用链较深,不能随便执行(xhprof等工具只能执行时采集调用栈,并且覆盖不到分支维度),通过IDE查看麻烦(要记住之前看的每一层,很容易迷路)2.找到历史遗留的无效代码经常有些代码被添加到代码库,但是一直没有调用,或者调用方是一个临时活动,入口已经删除了但没有删除干净,后面的model层还有遗留的代码,而IDE对应类中的共有方法是不会标明没有调用的,要一个一个手动翻看,工作量巨大。3.下线数据源下线数据源要

2020-12-03 21:25:07 731 4

原创 模仿php-fpm用php实现一套多进程管理框架

之前我分析过fpm中的进程管理,是采用纯c语言实现的,其实php本身的pcntl拓展也提供了进程创建,信号管理的功能。于是我打算模仿fpm在php里实现一套进程管理工具。TODO列表 使用pcntl_signal 处理,SIGCHLD 和 SIGINT 创建多个进程,父进程记录pids,在子进程退出的时候更新pids 创建多个进程,父进程记录pids,在子进程退出的时候重启子进程,让子进程的数量固定 通过向父进程发送 SIGQUIT 实现退出所有进程 通过向父进程发送 SIGUSR2 实现重启

2020-10-25 13:51:16 349

原创 mongo 中的数组操作

mongo中的数组可以应对复杂的业务场景,不需要先查出后更新,或者先找到一个大范围的集合然后进一步过滤,可以直接更新或直接找到目标文档。假设我们有个用户发布文章的平台,里面的文档都类似这样{ "_id": "5f86e6a5323f7d11e96f5fdf", "articleId": 1, "content": "如何问候", "tag": [ "生活", "股市", "营销" ], "comments": [ { "commentI

2020-10-14 20:58:32 763

原创 mongo报错排查:can‘t backfill array to larger than 1500000 elements

mongo报错排查:can’t backfill array to larger than 1500000 elements问题这合格报错是因为mongo在操作一个数组时是没有边界检测的,可以动态的往很大的下标插入一个数据,前面没有的元素默认填充为null> db.test.insert({“field1":[]}); // 插入一个数据只有一个key value 为数组WriteResult({ "nInserted" : 1 })> db.test.findOne(){ "_id

2020-09-30 14:24:07 192

原创 如何实现一个优雅的派单系统

背景如果一个app有ugc(用户内容),比如快手,抖音,陌陌,那么一定对应的要有对内容质量的保证,和平台生态的维护工作。其中一定就是要有审核系统。比如有人举报进来,或模型召回的数据,然后交给审核员工派单,审核后对用户进行一定的限制策略。这里考虑实现一套通用的派单 和 入库逻辑,并且满足下面几个要求。1.可能存在工单优先级的情况,比如一些特定用户(比如主播的举报)要能够提前派到工单2.可能存在优先级被改变的情况,比如某些工单累计时间比较久要放到优先队列前面3.可能存在很长时间没有审核员,然后工单累计

2020-09-26 19:45:38 5212 5

原创 PHP-FPM中进程管理的实现

背景fpm是一个php进程管理工具,是php sapi的一种官方实现,盗用一张《PHP7底层设计与源码实现》中的图片,如果学习php,那基本上就是web后端,那么就离不开fpm,了解fpm的重要性可想而知,而fpm中的进程管理也是fpm能在高并发环境中让php有一席之地的原因。1.fpm的启动过程先来一张流程图,这个是fpm启动时调用的一些函数,其中1,2,3,4是公有的(也就是fork之前父子进程都会存在的一些东西)5是fork完成之后只有父进程才会有的,while accept循环是只有子进程

2020-08-22 13:51:12 678

原创 用vscode调试php源码

1111

2020-07-31 23:10:19 2822

原创 phpredis中的事务

phpredis中的事务背景事务的定义redis中的事务欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流...

2020-04-17 01:00:04 447

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除