目录

前言

架构预览

小节

一、访问层架构设计

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、降级

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

结束语

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

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

性能测试 架构层(二) 从性能测试层面了解架构设计 分布式项目实施过程中的常见难点,测试架构层面思考性能测试应该如何做?自行思考解决方案是什么?相关推荐

  1. TCP/IP协议十二:关于MAC地址和IP地址在传输过程中变与不变的问题

    TCP/IP协议十二:关于MAC地址和IP地址在传输过程中变与不变的问题 1. 结论 2. 原因: 3. 例子 4. 参考: 1. 结论 mac变,ip不变. mac地址在同一个广播域传输过程中是不变 ...

  2. 【读书笔记】【WebKit 技术内 幕(一)】浏览器架构与浏览器内核;chromium、webkit和blink的渲染过程;chromium、webkit的架构与代码结构;webkit2架构

    文章目录 前言 Something great 第1章 浏览器和浏览器内核 浏览器 用户代理和浏览器行为 内核特征 WebKit与blink 第2章 HTML网页和结构 网页构成与结构 WebKit的 ...

  3. dao层如何调用对象_以k8s集群管理为例,大牛教你如何设计优秀项目架构

    架构设计一直是技术人的关注热点,如何设计一个更优的架构对于实际的业务来说至关重要.本文腾讯云专家将从自身从事的一个k8s集群管理项目为例,重点剖析在项目开发过程中的三次架构演进历程,即针对项目最早版本 ...

  4. 重读《从菜鸟到测试架构师》-- 测试专家的第一步

    无论是大学毕业的第一份工作还是工作多年后重新入职新公司,我们都不可避免的会遇到上班第一天,在这第一天的时间里我们需要完成领设备.装系统等准备工作,当然,不可或缺的还有新人培训,这本书的第一章也直白地使 ...

  5. 资深架构师助你上手软件领域驱动设计 DDD

    作者:faryrong,腾讯 CSIG 后台开发工程师 最近看了一本书<解构-领域驱动设计>,书中提出了领域驱动设计统一过程(DDDRUP),它指明了实践 DDD 的具体步骤,并很好地串联 ...

  6. 58同城沈剑:好的架构是进化来的,不是设计来的

    虽然这篇文章写的比较早,但是,还是很有参考意义,值得好好品读思考.看看别人是怎么思考就架构这种事情. 好的架构不是设计出来的而是演进出来的 对很多创业公司而言,在初期的时候,我们很难在初期就预估到流量 ...

  7. 测试开发,测试架构师为什么能拿50 60k呢需要掌握哪些技能呢

    这篇文章是软件工程系列知识总结的第五篇,同样我会以自己的理解来阐述软件工程中关于架构设计相关的知识. 相比于我们常见的研发架构师,测试架构师是近几年才出现的一个岗位,当然岗位title其实没有特殊的含 ...

  8. 以k8s集群管理为例,大牛教你如何设计优秀项目架构

    一.前言 架构设计一直是技术人的关注热点,如何设计一个更优的架构对于实际的业务来说至关重要.本文腾讯云专家将从自身从事的一个k8s集群管理项目为例,重点剖析在项目开发过程中的三次架构演进历程,即针对项 ...

  9. 三层架构项目如何发布_以k8s集群管理为例,大牛教你如何设计优秀项目架构

    架构设计一直是技术人的关注热点,如何设计一个更优的架构对于实际的业务来说至关重要.本文腾讯云专家将从自身从事的一个k8s集群管理项目为例,重点剖析在项目开发过程中的三次架构演进历程,即针对项目最早版本 ...

最新文章

  1. ASP.NET 发邮件方法
  2. java基本数据类型_Java面试题Java中有几种基本数据类型?它们分别占多大字节?...
  3. Docker学习笔记之在开发环境中使用服务发现
  4. 如何使用_如何使用Excel播放音乐
  5. ALV Styles in Field catalogue using OOPS
  6. Jquery常用正则验证
  7. 求解相机参数Camera Calibration
  8. 内存还剩余很多,却使用 swap 分区
  9. 《JSON笔记之三》---postman中传入json串
  10. 标定小觅相机MYNT-EYE-S2110使用kalibr标定
  11. 未定义标识符_ConnectionPtr
  12. 操作系统安全与系统攻击
  13. 高德地图聚合自定义样式
  14. 华为android最新版本下载地址,华为Android手机驱动
  15. 3dmax材质丢失插件_3dmax找丢失贴图的材质插件怎么用
  16. Egret Wing常用快捷键
  17. 2010年中国十大虚拟主机服务商排行榜(转)
  18. IDEA 2019.1 注册码激活
  19. 【献血小常识】------- 献血者健康检查标准
  20. Selenium打开浏览器闪退问题(浏览器驱动是对应的前提)-解决办法

热门文章

  1. 单桢强数据库课程设计报告
  2. linux查看进程占用的内存大小,查看进程占用内存大小的几种方法,占用内存几种方法...
  3. 通过TOP命令查找达梦数据库CPU使用率高的会话
  4. 机械硬盘显示无法访问函数不正确的文件恢复方法
  5. 腾讯云轻量应用服务器网站搭建——入门教程1(宝塔面板)
  6. 天气插件、flv播放插件
  7. 渝粤题库 陕西师范大学《学前儿童音乐教育》作业
  8. 接口pending状态问题排查
  9. 凯撒和某某加密实验吧
  10. 计算机专业 人工智能 机器学习 深度学习 统计 专业英语单词(一)