【成为架构师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

相关文章

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

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

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

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

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