Comments (1)
设计高并发系统主要围绕以下三个方面:
-
分布式架构
由于采用分布式架构,所以相比于单体应用就要围绕分布式架构做一系列的调整,所以在数据一致性上必须引用分布式锁来防止资源竞争,所以就需要用到Redis或者zookeeper这种保证原子性的软件,这里通常会采用Redis,因为Redis同时会作为缓存使用,同时由于一个服务对应有多个机器,所以我们就需要有服务治理的软件,如etcd, eureka, zookeeper等作为服务注册发现,那服务与服务之间内部的调用一般采用远程调用协议,常用的是gRPC,因为它支持服务发现机制,非常适合分布式架构。由于分布式架构,服务与服务之间如果靠同步请求将会造成请求极度缓慢,所以就必须采用消息队列来实现异步请求,那就需要用到Kafka, Pulsar和RabbitMQ这些消息队列服务; -
负载均衡
我们采用分布式架构进行平行扩展,减轻单个机器承载的并发量,那并发量具体怎么分配就会涉及到负载均衡,常用的如nginx的负债均衡,云平台的网关或者第三方网关等; -
数据库优化
数据库常常是高并发下最大的瓶颈,首先最常用的是采用Redis来缓存从而减少直接对数据库的请求,另外就是根据业务性质选择合适的数据库,如对于大量历史数据的存储可以采用NoSQL的数据库,如MongoDB等,而对于事务性数据才存储在关系型数据库如MySQL,如果使用的MySQL还可以针对MySQL进行读写分离,分库分表,优化连接数,优化索引等优化措施;
而除了以上三个方面,还需要在日志记录,链路追踪,服务监控,容错等等方面考虑更细节的问题。
from daily-question.
Related Issues (20)
- 多阶段构建并不需要 docker-compose HOT 1
- 【Q742】大文件上传,如何获取到读取进度? HOT 1
- 代码
- [feature request]面试题添加难度排序以及一键生成一份面试题的工具 HOT 2
- 【Q747】如何实现一个 omit/omitBy 函数 HOT 6
- 【Q748】在 babel 编译为低版本 ES 时,为何能够编译可选链之类语法,但无法编译 API HOT 1
- 【Q743】实现 batchFn 函数,可以批量执行函数 HOT 4
- 【开源自荐】推荐一个每日更新的前端面试题库 HOT 1
- 【Q474】在 react 中,以下父子组件的 useEffect/useLayoutEffect 顺序如何 HOT 1
- 【Q745】webpack 的打包流程是什么样的 HOT 1
- 【Q744】数据库中更新一条记录时,如何自动更新其 updated_at 字段
- 【Q746】如何避免 SQL 攻击
- 【Q749】React18 有哪些新特性
- 【Q750】React19 有哪些新特性
- 【Q752】实现 useDebouncedCallback
- 【Q753】你是如何学习前端的
- 【Q754】实现 LazyMan
- 【Q755】简述 WebWorker API
- 【Q756】Promise.race 与 Promise.any
- 【Q757】如何解决深拷贝问题中的循环引用
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from daily-question.