码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 性能测试 架构层(二) 从性能测试层面了解架构设计 分布式项目实施过程中的常见难点,测试架构层面思考性能测试应该如何做?自行思考解决方案是什么?


    目录

    前言

    架构预览

     小节

    一、访问层架构设计

    1、LVS

    2、Nginx

    二、API 网关层架构设计

    1、分布式会话管理

    2、接入层控制   Filter过滤器

    三、核心服务层架构设计

    1、核心服务层架构设计之服务通信

            1.1dubbo服务治理

    2、异步化消息服务

            2.1 异步消息业务流程

            2.2 Kafaka消息服务,内部流程 

    3、核心服务层架构设计之调度

    1、任务调度

            1.1 单机调度方式

            1.2  分布式调度方式及实现

                    1.2.2 Quartz 分布式版本

                     1.2.2 Elastic-Job 分片分布式

    4、核心服务层架构设计之池化

    5、核心服务层架构设计之缓存、隔离、队列

            1. 缓存技术

                    1.1 缓存分类

                    1.2 缓存写入

                     1.3 缓存失效

                    1.4 多级缓存,层级关系。缓存设置离用户越近越好

            2、隔离术

                    2.1 线程隔离 + 调用隔离

                     2.2 读写隔离

                     2.3 热点隔离

            3、队列术

                    3.1 流量削峰

    四、数据存储及接入层架构设计

    1、数据存储

    2、代理访问

             2.1 MyCat数据库代理 水平分库分表

            2.2 TwemProxy代理Redis

            2.3 代理服务器的作用和有无区别 

    五、 监控,限流,降级

    1、监控

    2、限流

            2.1 限流算法代码

    3、降级

    结束语


    前言

             性能测试层面了解架构设计 分布式项目实施过程中的常见难点,从架构层面思考性能测试应该如何做?发现问题后应该怎么解决?

            列举一个生活场景:People去体检或检查后得出检查报告,报告标注异常指标箭头,医生会根据超出正常范围值的大小,再得出结论可能会是什么问题对症下药直至药到病除,遇到疑难杂症当然一次检查也不一定能准确定位到问题原因,再者就是论经验……

            思考:何为指标?指标的正常与异常范围怎么界定或制定。

            既然需要得出报告后分析指标,那么必了解其项目的架构层设计。


    架构预览

     小节


    一、访问层架构设计

    1、LVS

    > ip层,负载均衡策略
    > 三种模式:LVS/NAT、LVS-DR、LVS/TUN 

    2、Nginx

    > 接入层:请求解析、请求业务路由,业务负载均衡,响应压缩
    > 服务层:应用负载均衡、缓存调度、授权认证、业务逻辑、业务限流、业务降级
    > 三大作用:服务负载均衡,动静分离,代理缓存


    二、API 网关层架构设计

    1、分布式会话管理

    > cookies - sessionid
    > cookies - key=value
    > token = value
    风控安全:异地访问主动失效,过期机制

    2、接入层控制   Filter过滤器

    > 身份证验证 - 用户凭证登陆与鉴权
    > 流量控制    -  实现流量控制
    > 路由器服务 -  据url找到响应服务、判断服务状态做路由调用
    > 记录调试或统计信息  - 切面打印日志调试信息,切面打印cat监控


    三、核心服务层架构设计

    1、核心服务层架构设计之服务通信

            1.1dubbo服务治理

     1、zookeeper注册中心(这一个服务),中心常规理解所有的东西都到集中管理分发,A请求中心,中心告诉A请求应该到B服务器
    > zookeeper服务

    2、B生产服务器开发和定义具体方法和Java Bean后连接并注册到zookeeper上
    > zookeeper客户端,注册服务

    3、A消费者通过连接zookeeper上实例化Java Bean获取到B生产服务的实现远程调用并执行B生产服务的功能逻辑。
    > zookeeper客户端,调用服务

    PS:dubboAdmin后台管理服务,Zookeeper也可实现负载均衡调度

    2、异步化消息服务

    > kafaka 流式处理
    发布订阅:客户端将消息发送主题,消息队列存放主题,订阅者消费主题消息,消息持久化到队尾,消费通过客户端指针,吞吐量高

            2.1 异步消息业务流程

            2.2 Kafaka消息服务,内部流程 

     RocketMQ:继承Kafafa,消息队列维护高可用,并支持事务回溯机制

    3、核心服务层架构设计之调度

    1、任务调度

            1.1 单机调度方式

            1.2  分布式调度方式及实现

                    1.2.2 Quartz 分布式版本

                     1.2.2 Elastic-Job 分片分布式

    4、核心服务层架构设计之池化

    减少系统消耗、提示系统性能
    > 对象池,利用复用对象来减少创建对象,垃圾回收的开销。如线程池复用线程提升性能
    > 连接池,数据库连接池、Redis、Http,复用TCP连接来减少创建和释放连接的时间

     常见连接及对象池

    1、Java线程池
    2、数据库连接池
    3、HttpClient连接池
    4、Redis连接池
    5、Tomcat连接及线程池
    6、Dubbo连接及线程池

    5、核心服务层架构设计之缓存、隔离、队列

            1. 缓存技术

                    1.1 缓存分类

    1、CDN缓存(CDN服务器)

    2、反向代理缓存

    3、分布式Cache(Redis)

    4、本地应用缓存(JVM Guava)

                    1.2 缓存写入

    1、实时写入,异步写入

    2、读取时实时写入,读取时异步写入

                     1.3 缓存失效

    固定时间

    相对时间

                    1.4 多级缓存,层级关系。缓存设置离用户越近越好

    缓存不一致,容忍性,异步更新性

            2、隔离术

    1、硬件隔离(虚拟机)

            > 不同的服务部署在不同的主机上


    2、操作系统隔离(容器虚拟化)

            > 主系统 + 虚拟机 + docker虚拟化


    3、进程隔离(系统拆分)

    4、线程隔离(线程池独立)

            > 线程隔离 + 调用隔离


    5、读写隔离(读写分离)
    6、动静隔离(动态资源静态资源分离)
    7、热点隔离(热点账户,热点数据等)

                    2.1 线程隔离 + 调用隔离

                     2.2 读写隔离

                     2.3 热点隔离

            3、队列术

    队列在数据结构中是一种线性表,从一段插入数据,然后从另一端删除数据

                    3.1 流量削峰

    排队有时候比并发效率更高

    排队可以控制并发流量涌入


    四、数据存储及接入层架构设计

    1、数据存储

    2、代理访问

             2.1 MyCat数据库代理 水平分库分表

    通过MyCat代理实现查询不同时间走不同的数据库,从而达到水平分库分表

      /*hint-master*/ 注释不被Mysql识别,但是可被mycat解析

            2.2 TwemProxy代理Redis

            2.3 代理服务器的作用和有无区别 

     


    五、 监控,限流,降级

    1、监控

    硬件指标 - Cpu idel Time、Free Memory、IO Wait、NetWork Free

    > Zabbix监控

    软件指标 - Cpu load Averag、ParNewCount、ParNewTime、Old GC Count、Old GC Count

    >Cat heart beat监控

    接口指标 - url/dubbo failure times、url/dubbo 95,99.9,99.99 lines

    > Cat transaction监控

    异常指标 - Exception times and content

    > Cat exception监控

    大盘指标 - 基线成功率、基线失败率、总体响应时间指标

    > 关键业务的实时数据,往日数据基线实时对比,判断业务异常率

    2、限流

    限流维度一 - URL、Dubbo接口、SQL操作数
    限流维度二 - 限制TPS/QPS、限制并发数、限制总数

            2.1 限流算法代码

    3、降级

    舍弃功能,保护系统、保护用户体验、排查问题
    怎么降级?
    关闭接口并设置默认返回
    降级逻辑 - 详情页页面 销量或库存,其中一个功能出现问题则降级不显示


    结束语

             “走马观花”的了解常见大型分布式项目的架构,从架构层面分析不同层级的具体作用与对应应对方法,分布式架构最终目的为了实现提供更高性能的访问和响应速度。

            性能测试仅是项目中的一环,测试攻城狮是否有相对全面了解呢?知道了然后呢?……

  • 相关阅读:
    GBase 8c 存储技术---内存引擎(三)
    unity官方教程 -- Hi Shader学习笔记 Chapter 1
    本地部署Llama3-8B/70B 并进行逻辑推理测试
    中国设备工程杂志中国设备工程杂志社中国设备工程编辑部2022年第18期目录
    王道数据结构C语言单链表基本操作实现
    Ubuntu虚拟机使用桥接网络设置静态IP
    基于单片机的智能家居安防系统设计
    GIT 使用
    Excel 从多个文件提取指定的多行(固定行)进行汇总的工具
    深入理解HTTPS协议原理
  • 原文地址:https://blog.csdn.net/qq_25305833/article/details/125553659
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号