【分布式系统】聊聊高性能设计
每个程序员都应该知道的数字

高性能
对于以上的数字,其实每个程序员都应该了解,因为只有了解这些基本的数字,才能知道对于CPU、内存、磁盘、网络之间数据读写的时间。1000ms = 1S。毫秒->微秒->纳秒-秒->分钟
为什么高性能如此重要的呢,在架构设计中,高性能、高可用、高并发是三高问题。其实背后对应的就是提供系统稳定性的前提下,系统可以更快速的处理用户请求。
对应于高性能来说,最之间体现的就是响应时间、并发、吞吐量。
这个响应时间,其实就是用户发起请求到最后返回请求到总耗时。
并发是同一时间内,比如1分钟100个用户请求。1S中10个用户请求。
吞吐量描述的是系统一定时间内可以处理请求的数量。一般通过TPS、QPS进行衡量。(TPS倾向于写操作、QPT倾向于读操作)。
解决方案
对于高性能架构层面,一般是数据库(读写分离、分库分表)、缓存、异步处理、边缘计算、集群模式。
而除了架构层面进行设计之外,其实还包含基础层、中间件层、数据层、应用层的优化。
其实就是性能优化。
- 基础层
- 系统配置 (CPU、内存、网络、磁盘)配置升级
- 操作系统机制
- 零拷贝
- 多路复用
- 序列化
- 中间件层
- Kafka、Redis 集群模式、副本机制
- 数据层
- 数据库 (读写分离、分库分表、索引优化、存储引擎、SQL优化、数据库连接池等)
- 应用层
- 编码层面、多线程并发、JVM 、批处理、高效率算法
一个总体的思路就是,先找到性能的瓶颈点,然后在在根据瓶颈点进行优化。大多数的时候,其实都在编码层面。
相关文章:
【分布式系统】聊聊高性能设计
每个程序员都应该知道的数字 高性能 对于以上的数字,其实每个程序员都应该了解,因为只有了解这些基本的数字,才能知道对于CPU、内存、磁盘、网络之间数据读写的时间。1000ms 1S。毫秒->微秒->纳秒-秒->分钟 为什么高性能如此重要的…...
自动驾驶数据集汇总
1.Nuscenes 数据集链接:nuScenes nuscenes数据集下有多个任务,涉及Detection(2D/3D)、Tracking、prediction、激光雷达分割、全景任务、规划控制等多个任务; nuScenes数据集是一个具有三维目标注释的大型自动驾驶数…...
面向对象的基本原则
背景 面向对象是抽象技术的一种实现,将对象作为真实世界中实体的抽象,代表了特定的一块密集而内聚的信息。在面向对象设计及实现中,重点考虑的就是如何做到关注点分离。因为对象内的联系通常比对象间的联系更强。关注点分离就是将对象中高频…...
C语言开发基础知识(一)
文章目录 数据类型宏变量函数inline 内联函数static 关键字的作用const 关键字的作用extern 关键字的作用volatile 关键字的作用include 关键字的作用数组、字符串指针堆内存管理结构体文件操作数据类型 C语言中数据类型分有符号和无符号,默认是有符号的。 有符号类型: 数据…...
API网关类型与区别
什么是API网关? 在现代软件架构中,API(应用程序编程接口)网关起着重要的作用。它是一个中间层,用于管理和控制应用程序之间的通信。API网关可以提供一些关键功能,如流量控制,安全认证ÿ…...
linux:nginx网站升级至http2
参考: 怎样把网站升级到http/2 - 知乎 HTTP/2 与 HTTP/1.1:它们如何影响 Web 性能? | Cloudflare 总结: nginx.conf修改 http2需要ssl支持 listen 443 ssl http2;...
Flutter:屏幕适配
flutter_screenutil flutter_screenutil是一个用于在Flutter应用程序中进行屏幕适配的工具包。它旨在帮助开发者在不同屏幕尺寸和密度的设备上创建响应式的UI布局。 flutter_screenutil提供了一些用于处理尺寸和间距的方法,使得开发者可以根据设备的屏幕尺寸和密度…...
中科亿海微ROM使用
标题 ROM(Read-Only Memory,只读存储器)是一种在FPGA(Field-Programmable Gate Array,现场可编程门阵列)中常用的存储器类型。与RAM(Random Access Memory,机存取存储器)…...
Python接口自动化测试之UnitTest详解
基本概念 UnitTest单元测试框架是受到JUnit的启发,与其他语言中的主流单元测试框架有着相似的风格。其支持测试自动化,配置共享和关机代码测试。支持将测试样例聚合到测试集中,并将测试与报告框架独立。 它分为四个部分test fixture、TestC…...
python——案例17:判断某年是否是闰年
案例17:判断某年是否是闰年 判断依据:闰年就是能被400整除,或者能被4整除的年份numint(input(输入年份:))if num%1000: if num%4000: #整百年份的判断print("%s年是闰年"%num) #…...
allure测试报告
使用pytest结合Allure进行测试报告生成的简单教程 allure测试报告 Allure基于Java开发,因此我们需要提前安装Java 8或以上版本的环境。 ◆安装allure-pytest插件在DOS窗口输入命令“pip3 install allure-pytest”,然后按“Enter”键。 下载安装Allure…...
Vue 路由懒加载
Vue 路由懒加载 随着 Web 应用的复杂性不断增加,性能优化成为了开发人员必须面对的挑战之一。Vue 路由懒加载是一项关键技术,它可以帮助我们提高 Web 应用的加载速度,从而提升用户体验。 在本篇技术博文中,我们将深入探讨 Vue 路…...
软件设计师(七)面向对象技术
面向对象: Object-Oriented, 是一种以客观世界中的对象为中心的开发方法。 面向对象方法有Booch方法、Coad方法和OMT方法等。推出了同一建模语言UML。 面向对象方法包括面向对象分析、面向对象设计和面向对象实现。 一、面向对象基础 1、面向对象的基本…...
Qt中将信号封装在一个继承类中的方法
QLabel标签类对应的信号如下: Qt中标签是没有双击(double Click)这个信号的; 需求一:若想双击标签使其能够改变标签中文字的内容,那么就需要自定义一个“双击”信号,并将其封装在QLabel类的派生…...
Docker介绍
1. docker是什么 1.1 为什么会有docker出现? 假设你在开发一个项目的时候,你使用的是windows系统而且你的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。你正在开发的应用依赖于你当前的配置而且还要依赖于某些配置文件。此外…...
C++红黑树
一、红黑树的概念 红黑树是一种二叉搜索树,在其每个节点上增加一个存储位用于表示节点的颜色,可以是Red或Black 通过对任何一条从根到叶子的路径上的各个节点着色方式的限制,红黑树确保没有一条路径比其他路径长两倍 红黑树的性质ÿ…...
LangChain与大模型的学习ing
大模型的菜鸟初学习 一、问题记录1、库的版本问题 二、实例记录1、公司名生成2、提示模板的使用3、LLM Chain4、LLMMemory5、聊天语言API 参考资料 一、问题记录 1、库的版本问题 openai.error.APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(ho…...
Go把Map转成对象
最近使用了Redis的Hash,把一个对象给存储到了hash里面,具体如下: 现在需要从RedisHash缓存里面把结果给取出来,同时赋值到一个对象上面 result, err : global.GVA_REDIS.HGetAll(context.Background(), key).Result() 问题是resul…...
Java-网络编程
TCP TCP(Transmission Control Protocol)是一种在计算机网络中用于可靠数据传输的协议。它是一种面向连接的协议,确保数据在发送和接收之间的可靠性和有序性。以下是TCP是如何工作的简要概述: 建立连接: 当两台计算机…...
[数据集][目标检测]道路坑洼目标检测数据集VOC格式1510张2类别
数据集格式:Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):1510 标注数量(xml文件个数):1510 标注类别数:2 标注类别名称:["keng","…...
Qwen-Image-2512像素艺术生成实战:从提示词设计到风格控制全流程
Qwen-Image-2512像素艺术生成实战:从提示词设计到风格控制全流程 1. 像素艺术创作新选择 最近在尝试用AI生成像素艺术时,发现了一个特别有意思的组合:Qwen-Image-2512模型加上专门优化的Pixel Art LoRA。这个搭配能生成质量惊人的像素风格图…...
Ubuntu动态库路径管理全攻略:从LD_LIBRARY_PATH到ldconfig实战
1. 动态库路径管理基础 当你第一次在Ubuntu上运行程序时,看到"error while loading shared libraries"这样的报错,是不是感觉一头雾水?这其实是Linux系统在告诉你:"我找不到程序需要的动态库文件啦!&q…...
从入门到精通:Java 编程语言全解析 —— 夯实编程基础,开启开发之旅
从入门到精通:Java 编程语言全解析 —— 夯实编程基础,开启开发之旅 在编程世界里,Java 凭借其跨平台、安全稳定、生态完善的优势,稳居主流编程语言榜首数十年。无论是桌面应用、后端开发、移动安卓程序,还是大数据、云…...
【数据结构与算法】第46篇:算法思想(一):递归与分治
一、递归的本质 1.1 什么是递归 递归就是函数调用自身。一个递归函数通常包含两部分: 终止条件:什么时候停止递归 递推公式:如何将大问题转化为小问题 c // 阶乘的递归实现 int factorial(int n) {if (n < 1) return 1; // 终…...
天问ESP32C3-Pro语音大模型对话:从硬件连接到云端部署的完整实践
1. 硬件准备与接线指南 想要实现语音大模型对话功能,首先得搞定硬件部分。我用的是一套性价比极高的组合:ESP32C3-Pro开发板搭配INMP441麦克风模块和MAX98357功放模块。这套设备总成本不到百元,但效果却出乎意料的好。 先说说INMP441麦克风的…...
Grafana仪表板安全嵌入实践:解决iframe跨域与登录验证难题
1. 为什么需要安全嵌入Grafana仪表板 在企业监控系统开发中,我们经常需要将Grafana仪表板集成到自有系统中。直接使用iframe嵌入看似简单,但实际操作时会遇到两个棘手问题:首先是浏览器控制台频繁报错"Refused to display in a frame&qu…...
从婴儿学步到AI进化:具身智能如何模仿人类学习过程?
从婴儿学步到AI进化:具身智能如何模仿人类学习过程? 在东京大学的一个实验室里,一台人形机器人正尝试用机械手指捏起桌上的积木。它失败了37次,却在第38次成功时将动作数据上传至云端——这个场景像极了人类婴儿第一次成功抓取玩具…...
从手动压枪到智能补偿:罗技鼠标宏如何革新绝地求生射击体验
从手动压枪到智能补偿:罗技鼠标宏如何革新绝地求生射击体验 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 在《绝地求生》这类战术竞…...
Cursor Pro破解工具完整指南:免费解锁AI编程助手高级功能
Cursor Pro破解工具完整指南:免费解锁AI编程助手高级功能 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your …...
AudioSeal Pixel Studio快速上手:Streamlit本地启动+模型缓存路径配置指南
AudioSeal Pixel Studio快速上手:Streamlit本地启动模型缓存路径配置指南 1. 工具简介 AudioSeal Pixel Studio 是一款基于Meta开源的AudioSeal算法构建的专业音频水印工具。它能够在保持原始音频质量的前提下,为音频文件嵌入几乎不可察觉的数字水印&a…...
