【成为架构师3-4】服务化:必须支持高并发

2024-02-21 09:18

本文主要是介绍【成为架构师3-4】服务化:必须支持高并发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系列文章是博主对沈剑的《架构师训练营》分享内容的个人笔记总结,原内容公众号“成为架构师”。

目录

        • 高并发指标
        • 垂直扩展(Scale up)
        • 水平扩展(Scale out)
          • 数据库的水平扩展

本篇是对微服务架构中高并发一个通用思路的阐述,侧重的是要实现高并发的架构基础,也就是提升性能,并不涉及任何实现的细节,也不对应某个具体的业务场景(前面的文章也基本上是这样的风格)

高并发指标
  1. 响应时间 (Response Time)
  2. 吞吐量(Throughout)
  3. 每秒查询率QPS(Query Per Second)
  4. 并发用户数

这些内容的解释之路:QPS、TPS、吞吐量等性能指标的理解

垂直扩展(Scale up)
  1. 增加单机硬件性能
  2. 提升单机架构性能

垂直扩展是有极限的,但是如果垂直扩展就能hold住,那么应该优先考虑垂直扩展

水平扩展(Scale out)

端到反向代理、反向代理到站点、站点到服务的高并发的水平扩展和高可用的冗余的集群本质上是一样的,它们的集群方案在保证高可用的同时也支持高并发

数据库的水平扩展

数据库的水平扩展指的是两方面:

  1. 存储能力的扩展,理论上要达到无限的存储能力
  2. 读写能力的扩展,理论上要达到无限的读写能力

对于存储能力的扩展,就是数据库分片,分片既扩展了存储能力,也提高了读写性能

最简单的两种分片方式是:范围分片、Hash分片

范围分片
在这里插入图片描述

  1. 根据数据库主键Id以范围来划分数据库,比如1-1000w为库1,1000w-2000w为库2
  2. 实现非常的容易,微服务路由也十分容易
  3. 这种方式的好处是可以很容易的进行扩展,数据的划分也是均衡的(新库早期不均衡)
  4. 但是它的访问是不均衡的,新产生的数据,如新用户总是比老用户要活跃

Hash分片
在这里插入图片描述

  1. 根据主键的hash来进行划分和路由,规则也同样很简单,比如说奇数库、偶数库
  2. 数据划分是均衡的,访问也是均衡的,只要id是完全随机的
  3. 不利于水平扩展,当增加新节点的时候要重新计算hash,并对数据进行迁移

上一篇回顾:【成为架构师3-3】服务化:必须保证高可用
下一篇更精彩:成为架构师3-5】服务化:必须搞定负载均衡

这篇关于【成为架构师3-4】服务化:必须支持高并发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/731263

相关文章

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

Nginx实现高并发的项目实践

《Nginx实现高并发的项目实践》本文主要介绍了Nginx实现高并发的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用最新稳定版本的Nginx合理配置工作进程(workers)配置工作进程连接数(worker_co

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

高并发环境中保持幂等性

在高并发环境中保持幂等性是一项重要的挑战。幂等性指的是无论操作执行多少次,其效果都是相同的。确保操作的幂等性可以避免重复执行带来的副作用。以下是一些保持幂等性的常用方法: 唯一标识符: 请求唯一标识:在每次请求中引入唯一标识符(如 UUID 或者生成的唯一 ID),在处理请求时,系统可以检查这个标识符是否已经处理过,如果是,则忽略重复请求。幂等键(Idempotency Key):客户端在每次