计算机程序设计思想越来越有意思,充满了哲学的味道,今天总结下分层的设计优化思想:最上层面向业务、和最底层面向硬件。

面向业务编程
面向业务编程,就好比样本决定算法(数据工程师),而不是拿模型套问题(机器学习工程师)。比如:

  1. 如果是做cache,意味着输入的复用高,那么不仅可以做内容缓存,还可以进行计算缓存
  2. 调优最有效的往往是减少输入,或者根据输入的特性特殊处理

与其说面向业务编程不如说面向业务设计,同样是短视频业务,客户也会针对不同的业务类型划分不同的域名。比如短视频美女美妆类的命中率能达98%,而个人生活随拍类热点却很低,通过区分域名,从CDN 角度而言,再给CDN加速 成本相对较低。
再举一个例子:
问题
squid 针对磁盘利用率有自己的逻辑统计,用以决定是否删除缓存。分段缓存功能文件可以是不完整的内容,在磁盘上查看可能只有50m,而squid逻辑统计根据cl头100m,逻辑大小和物理大小不一致。如果根据逻辑统计利用率,则会额外删除更多的其他缓存,导致删除过程中是否负载偏高。那么我们是否需要将分段缓存的逻辑统计改为真是占用物理大小呢?这样就不会删除额外更多的缓存了。

为什么当初没有改为真实物理占用大小统计呢?

  1. 如果改为真实物理大小统计,那么以后会出现(曾经老东家遇到过)分段缓存无法填充完整。当前是已经预支了完整的大小 所以不会有问题。
  2. 需要更改squid 原生的一些接口,我们改动代码尽可能避免。

解决方案
我们抛开“怎么将逻辑统计判断更改为真实物理的统计”问题 ,而是怎么解决“分段缓存预支空间导致删除了更多其他缓存的问题”。再来想想预支一定有错吗?
如果缓存很快被填满并且很热,那么预支是完全没问题的。
但是线上却有很多 短视频 业务 而且 很冷。比如像快手,我刷一个视频不感兴趣可能马上切下一个视频,如此每次只下开头一部分。
那么我们实际要解决的是这种业务问题:
方案一,业务拆分 宏观的解决思路
方案二,程序中热点缓存(降低命中率),或者对那些 只访问一次(refrence),且很久没有(lastreftime)访问 的删除,使用mgr:objects 统计 只访问一次 占比 50% 访问两次占比30%。这也是程序设计运营 mgr:objects 面向业务的一个设计。

如此 我们不用再纠结 “怎么将逻辑统计判断更改为真实物理大小的统计”

面向硬件编程
面向硬件是大部分有追求的程序员重点关注的事情,比如合并顺序写有利于磁盘,循环展开等等,后续再详细描述这些技巧

在开源软件中更改一定要注意设计思想的初衷,如果不遵循这个思想,大家后续代码最终会南辕北辙,臃肿不堪。

面向业务和面向硬件编程相关推荐

  1. 面向大数据处理的数据流编程模型和工具综述

    点击上方蓝字关注我们 面向大数据处理的数据流编程模型和工具综述 邹骁锋, 阳王东, 容学成, 李肯立, 李克勤 湖南大学信息科学与工程学院,湖南 长沙 410008 论文引用格式: 邹骁锋, 阳王东, ...

  2. 面向汽车应用的硬件推理芯片

    面向汽车应用的硬件推理芯片 Hardware inference chip targets automotive applications 总部位于匈牙利的AImotive是一家基于软件和硬件的自动驾 ...

  3. [置顶] 面向业务开发应用

    自从计算机出现后,快速便捷的从太平洋一样的文海中找到水滴大小的资料真正成为了可能,而能够帮助人们实现这一愿望的程序员就像中世纪的航海家一样用神秘的代码程序指引着计算机一步一步实现的需求.而他们所用的被 ...

  4. 数据科学的5种基本的面向业务的批判性思维技能

    批判性思维 As Alexander Pope said, to err is human. By that metric, who is more human than us data scient ...

  5. 面向业务的立体化高可用架构设计

    通常情况下我们在谈论高可用架构设计的时候,主要关注的是系统结构的高可用,例如主备架构.集群架构.多中心架构.我们做架构设计的时候,也主要是从系统结构本身出发,例如我们把单机改为双机.双机改为集群.单机 ...

  6. arcgis下的python编程-面向ArcGIS的Python脚本编程

    面向arcgis的python脚本编程是一本指导ArcGIS for Desktop专业用户进行Python开发的指南,本书将教会您如何通过编写Python代码处理空间数据并在ArcGIS中自动化实现 ...

  7. 基于arcgis的python脚本编程视频-面向ArcGIS的Python脚本编程 PDF 高清版

    给大家带来的一篇关于Python相关的电子书资源,介绍了关于ArcGIS.Python.脚本编程方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小49.9 MB,Paul编写,目前豆瓣.亚 ...

  8. 面向过程和面向对象的编程思想 复习原型 构造函数和实例对象和原型对象之间的关系

    体会面向过程和面向对象的编程思想 <!DOCTYPE html> <html lang="en"> <head><meta charset ...

  9. python for arcgis_面向ArcGIS的Python脚本编程 ([美]赞德伯根) 中文pdf扫描版[50MB]

    Python作为一种高级程序设计语言,凭借其简洁.易读及可扩展性日渐成为程序设计领域备受推崇的语言.使用Python作为ArcGIS的脚本语言将大大提升ArcGIS数据处理的效率,更好地实现ArcGI ...

最新文章

  1. OpenCV 笔记(04)— OpenCV2 升级到 OpenCV3/CV4 的改动(去掉 CV_前缀、使用新的前缀替换、使用新的命名空间宏)
  2. WP7 开发(十) 处理Html标记
  3. 将功能绑定到Twitter Bootstrap Modal关闭
  4. oracle中的listener.ora和tnsnames.ora
  5. Python基础入门:使用openpyxl读写Excel文件
  6. ConneR and the A.R.C. Markland-N CodeForces - 1293A(暴力)
  7. 打造扛得住的MySQL数据库架构-第一课--影响数据库性能的因素
  8. Android ViewPager示例教程
  9. 命令行下对apk签名
  10. 广义注意力- saliency map 关注图、gaze、Att
  11. Error running ‘Tomcat8.5‘ port out of range-1 (moments ago)
  12. rtmp协议发送mp3和aac裸流的方法
  13. 计算机图形学 8.2 平面几何投影
  14. php guzzle,php – 如何使用Guzzle 6记录所有API调用
  15. 联想集团:2021/22财年第一季度业绩
  16. 我的性格分析和对未来职业的规划
  17. 博客常见线条背景动效-JavaScript
  18. 咕泡p5人工智能CV+NLP技术项目实战
  19. Tal Ben-Shahar 积极心理学_课程小结
  20. STL和FIG文件的结构

热门文章

  1. Makefile 实现工程的本地部署
  2. 使用HAProxy、PHP、Redis和MySQL支撑10亿请求每周架构细节
  3. heartbeat+drbd+mysql构建mysql高可用群集
  4. IRP_MJ_CREATE
  5. sa执行命令方法总结
  6. windows redis sentinel install
  7. Case when then esle end
  8. maven 的依赖传递
  9. postgresql的安装与配置
  10. linux shell awk 中括号 方括号 分割 []