一次带你解决所有微服务架构的高并发问题!

高并发解决方案 面试经典情景题:高并发解决方案 情景模拟:在很多个用户同时访问网站的时候,例如:抢购或者双十一的时候。如何避免服务器宕机或者数据库挂掉的问题,请你提供几种解决方案。 1、静态资源与后台服务进行分离 静态资源主要包括图片、视频、js、css和一些资源文件等,这些文件因为没有状态所以分离比较简单,直接存放到响应的服务器就可以了,一般会使用专门的域名去访问。通过不同的域名可以让浏览器直接访问资源服务器而... 阅读详情

通过注册中心已经实现了微服务的服务注册和服务发现,并且通过Ribbon实现了负载均衡,已经借助Feign可以优雅的进行微服务调用。那么我们编写的微服务的性能怎么样呢,是否存在问题呢?

1.1性能工具Jmetter

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器,等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

1.1.1 安装Jmetter

Jmetter安装十分简单,使用资料中的 apache-jmeter-2.13.zip 完整压缩包,解压找到安装目录下bin/jmeter.bat 已管理员身份启动即可

1.1.2 配置Jmetter

(1)创建新的测试计划

(2)测试计划下创建发起请求的线程组

  • 可以配置请求的线程数
  • 以及每个请求发送的请求次数

(3)创建http请求模板

(4)配置测试的接口信息

1.2 系统负载过高存在的问题

1.2.1 问题分析

在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,由于网络原因或者自身的原因,服务并不能保证服务的100%可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时若有大量的网络涌入,会形成任务累计,导致服务瘫痪。

在SpringBoot程序中,默认使用内置tomcat作为web服务器。单tomcat支持最大的并发请求是有限的,如果某一接口阻塞,待执行的任务积压越来越多,那么势必会影响其他接口的调用。

1.2.2 线程池的形式实现服务隔离

(1)配置坐标

为了方便实现线以线程池的形式完成资源隔离,需要引入如下依赖

<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-metrics-event-stream</artifactId>
<version>1.5.12</version>
</dependency>
<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-javanica</artifactId>
<version>1.5.12</version>
</dependency>

(2)配置线程池

配置HystrixCommand接口的实现类,再实现类中可以对线程池进行配置

public class OrderCommand extends HystrixCommand<String> {
private RestTemplate restTemplate;
private Long id;
public OrderCommand(RestTemplate restTemplate, Long id) {
super(setter());
this.restTemplate = restTemplate;
this.id = id;
}
private static Setter setter() {
// 服务分组
HystrixCommandGroupKey groupKey =
HystrixCommandGroupKey.Factory.asKey("order_product");
// 服务标识
HystrixCommandKey commandKey =
HystrixCommandKey.Factory.asKey("product");
// 线程池名称
HystrixThreadPoolKey threadPoolKey =
HystrixThreadPoolKey.Factory.asKey("order_product_pool");
/**
* 线程池配置
* withCoreSize : 线程池大小为10
* withKeepAliveTimeMinutes: 线程存活时间15秒
* withQueueSizeRejectionThreshold :队列等待的阈值为100,超过100执行拒绝
策略
*/
HystrixThreadPoolProperties.Setter threadPoolProperties =
HystrixThreadPoolProperties.Setter().withCoreSize(50)
.withKeepAliveTimeMinutes(15).withQueueSizeRejectionThreshold(100);
// 命令属性配置Hystrix 开启超时
HystrixCommandProperties.Setter commandProperties =
HystrixCommandProperties.Setter()
// 采用线程池方式实现服务隔离
.withExecutionIsolationStrategy(HystrixCommandProperties.ExecutionIsolationStrat
egy.THREAD)
// 禁止
.withExecutionTimeoutEnabled(false);
return
HystrixCommand.Setter.withGroupKey(groupKey).andCommandKey(commandKey).andThread
PoolKey(threadPoolKey)
.andThreadPoolPropertiesDefaults(threadPoolProperties).andCommandPropertiesDefau
lts(commandProperties);
}
@Override
protected String run() throws Exception {
return restTemplate.getForObject("http://shop-service
product/product/"+id, String.class);
}
@Override
protected String getFallback(){
return "熔断降级";
}
}

(3)配置调用

修改 OrderController ,使用自定义的OrderCommand完成调用

@Autowired
private RestTemplate restTemplate;
@GetMapping("/buy/{id}")
public String order(@PathVariable Long id) throws ExecutionException,
InterruptedException, TimeoutException {
return new OrderCommand(restTemplate,id).execute();
}
jmeter 入门到精通 一、jmeter 介绍 1、jmeter是什么? jmeter:是Apche公司使用Java平台开发的一款测试工具。 2、jmeter 用来做什么? 接口测试 性能测试 压力测试(优势) 数据库测试 Java程序测试 (因为本身就是Java语言编写的) 3、优点 开源免费 支持多协议 (http,tcp...) 轻量级 功能强大 4、缺点 无法验证JS程序,也无法验证页面UI,所以必须要和 selenium 配合来完成web2.0应用的测试 二、jmeter 安装 二、jm 阅读详情

相关推荐

高并发架构实战(一) 电商系统设计

打算搭建一套高并发架构,并进行压测。 一、需求 需要使用nginx、Kong两种网关(纯属学习使用)。 两个分布式项目,可以互相调用。RPC框架使用dubbo-spring-boot 2.0.0 +zookeeper。 使用Spring boot 2.0 以上。mybatis-plus 3.0.1。 druid。 使用分布式配置中心,spring cloud config,dev和prod环境。...

lilyssh的博客 2万+

Jmetter并发测试工具使用笔记

一、下载和安装 1. Jmetter官网https://jmeter.apache.org/ 下载apache-jmeter-5.4.1.zip,解压apache-jmeter-5.4.1.zip到任意目录 2.下载并安装java1.8 https://pan.baidu.com/s/1xpej7hNcuU6yr_dwQqlafA提取码: x72p 二、基本配置 1.修改jmeter.properties配置 打开apache-jmeter-5.4.1\bin目录下的jmeter...

Hello World 9011

从单体架构到微服务架构的详细演化历程

代码难以理解,导致代码质量逐渐降低,复杂性逐渐增加,代码难以被修改和重构,简言之:屎山。"屎山"懂得都懂,代码量大耦合度高动一发乱全身,构建和部署耗时长,难以定位问题,大部分时间花费在解决代码冲突上,导致开发效率极低,可靠性差,一个bug可能会引起整个应用崩溃。伸缩性差,单体只能按整体横向扩展,无法分模块垂直扩展,无法分团队独立开发部署;IO密集型模块和CPU密集型模块无法独立升级和扩容。高度耦合的单体工程使得逻辑边界模糊不清,新业务需求开发任务无法有效分配到人,团队人员职责不清晰,沟通成本增加。

持 开源思想,撰 必胜所学,望 勤学者,无难处 2779

微服务架构的高并发问题

准备工作 修改代码,模拟请求超时的代码 先写一个直接返回的代码 @RequestMapping(value = "/find/{id}",method = RequestMethod.GET) public String find(@PathVariable Long id) { return "查询成功"; } 在被调用端,加入线程睡眠 @...

qq_29860591的博客 1587

jmetter 软件测试工具

jmetter 测试工具、实用说明、主要用来测试系统性能...

stc8g1k08硬件iic读取aht20温湿度及0.91寸oled显示

使用stc8g1k08读取aht20温湿度及0.91寸oled显示。

qq_61688416的博客 2771

Jmeter压测工具详解

Apache JMetier是Apache组织开发的基于Java的压力测试工具。一款非常优秀的开源的性能测试工具。

靖节先生的博客 3万+

k8s 100个高频面试题

以下是 100 个 Kubernetes(k8s)高频面试题及其答案,涵盖了 Kubernetes 的核心概念、架构、组件、工作原理以及实际应用。答案:Master 节点组件:API Server:提供 RESTful API 接口,用于与集群交互。etcd:分布式键值存储,用于存储集群的配置数据和状态信息。Controller Manager:运行各种控制器进程,负责维护集群的状态。Scheduler:负责将 Pod 调度到合适的节点上运行。Worker 节点组件:Kubelet:运行在每个节点上的代理,

wankll的专栏 2779

TS.Microservices:构建高效.NetCore微服务架构的利器

TS.Microservices:构建高效.NetCore微服务架构的利器 项目介绍 TS.Microservices 是一个基于 .NetCore 的微服务框架,旨在帮助开发者快速构建高效、可扩展的微服务应用。该项目不仅提供了丰富的功能模块,还通过简洁的代码结构和强大的扩展性,使得开发者能够轻松应对复杂的业务需求。无论你是微服务架构的新手,还是经验丰富的开发者,TS.Microservices ...

gitblog_01075的博客 682

Windows系统的Mamba环境配置详细教程(状态空间模型)

causal_conv1d也是安装mamba的依赖必须库。安装完成后,通过pip list可以查看到安装的库。Triton是安装mamba的依赖,需要先安装。上述工作准备好后,按下面步骤安装。直接根据离线文件安装即可。是自己的虚拟环境名字。

2301_77831163的博客 3677

《BiLSTM with Multi-Polarity Orthogonal Attention for Implicit Sentiment Analysis》论文阅读笔记

文章名:《BiLSTM with Multi-Polarity Orthogonal Attention for Implicit Sentiment Analysis》 作者Jiyao Wei a,1, Jian Liaoa,1, Zhenfei Yanga, Suge Wanga,b,∗, Qiang Zhaoa 年份 2019 1 Introduction 目前文本情感分析多分析带...

weixin_39036944的博客 1630

php怎么解决高并发问题

通过上述几个方面的努力,我们可以有效地改善PHP应用程序在高并发环境下的表现。值得注意的是,实际操作过程中还需结合自身项目的具体情况灵活调整策略。希望这篇教程对你有所帮助!

2401_86781857的博客 1260

infercnv的实操

摘要: 博主在infercnv分析中遇到执行困难,外包服务不可靠(未按要求使用HMM方法)。通过优化策略(逐样本处理、精简细胞至1000个、固定随机种子)解决了运行问题,但HMM功能仍无法实现。最终参考Cell期刊标准设置阈值完成分析,后续将继续更新进展。该案例凸显了生物信息分析中自主优化的重要性。(150字)

xiaoyusang的博客 308

微服务架构所面临的技术问题

与服务治理搭档的还有负载均衡,面对茫茫多的服务器,如何将海量用户请求分发到不同的机器。考虑到有的机器性能比较弱,或者机房带宽不大,网络响应慢,如何根据实际情况动态地分发服务请求?这个领域就是负载均衡需要解决的事情。

程序员波特 1084

YOLOv11-seg改进系列 | 引入CVPR2022 MetaFormer,零参数池化Token混合+StarReLU MLP,精度涨不掉速

本文提出了一种改进YOLOv11分割任务的C3k2_PoolingFormer模块,通过引入MetaFormer架构和Pooling Token Mixer,在保持模型轻量化的同时增强全局感受野建模能力。核心创新包括:1)使用零参数的AvgPool3×3差值作为Token Mixer,实现高效邻域信息聚合和局部对比增强;2)采用StarReLU MLP替代传统激活函数,提升非线性表达能力。改进后模型仅增加6.1%参数量,却能显著提升分割精度,特别适用于需要长程依赖建模的实例分割任务。该设计为轻量级视觉模型提

qq_44224801的博客 432

数仓建模—数据治理框架选型

全名主要亮点覆盖面最广:从数据治理、架构、质量、安全到元数据、主数据、数据仓库等等,几乎所有数据管理主题都能在DMBOK里找到相应章节。概念权威统一:帮助组织建立通用术语和知识基础,减少“部门之间说法不一致”的沟通成本。适用场景:如果你所在公司(或团队)正准备系统梳理数据管理的方方面面,DMBOK是一份非常全面的指导手册,尤其适合培养新人或为整个组织统一认知。需要注意:DMBOK偏“知识指引”,不直接提供成熟度模型或实施路线图。想要落地,还需要结合其他评估模型或项目管理方法。小案例举例:某。

2401_84052244的博客 4743

高并发、高可用、高可靠微服务架构7大顶级设计思维模型

前段时间一个初创公司的老板带着他们的技术负责人来做技术交流,他们列了一长串问题,有微服务技术选型方面的,有技术难点方面的。这些问题如果不能快速解决,那么就会影响产品质量、上线进度,进而直接...

shellquery的博客 1444

LDRA Testbed(TBrun)软件单元测试_实例讲解(对多次调用的函数打桩)

在之前的文章《LDRA Testbed(TBrun)软件单元测试_操作指南》中,已经讲解了如何使用TBrun进行软件单元测试的基本操作步骤。本篇文章将结合实例进一步讲解被测函数中包含多次调用其他函数时,如何对其打桩来实现测试目的(详细的操作流程本文不再重述,若有不清楚的,可以结合之前的操作指南一起来看)。本文以一个被测函数作为示例,讲解了如何使用Testbed(TBrun)对涉及到多次调用其他函数的被测函数进行单元测试。本文的示例可能比较简单,但是思路、方法和流程都是通用的,希望对大家有所帮助。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 1462

微服务中解决高并发问题的不同方法!

如果由于流量大而在短时间内几乎同时发出请求,或者由于服务器不稳定而需要很长时间来处理请求,并发问题可能会导致数据完整性问题。

IT_1024的博客 721

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

一篇文章带你快速理解微服务架构,由浅入深带你走进微服务架构的核心

戳蓝字“优快云云计算”关注我们哦!文章来自:Java和Android架构什么是微服务首先微服务并没有一个官方的定义,想要直接描述微服务比较困难,我们可以通过对比传统WE...

优快云云计算 617

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

为什么要采用微服务架构?最主要原因是什么?

面试时候,一个面试官问:为什么要采用微服务架构? 我说了一通网上百度到的,他还是不满意。 https://www.jianshu.com/p/b9e58893bbc0 网上很多都说了 微服务 的优点,但是都不是最关键的, 因为 很多问题,对单体应用来说,都不是致命的,都是可以接受的...

chuncui2576的博客 2038

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

从技术专家的视角去剖析高可用,高并发和高性能架构

根据业务需求和系统特点,自定义实现业务控制逻辑。这通常涉及对业务逻辑的深入理解和对系统架构的熟练掌握。

huxian1234的专栏 1547

【SOA】从单体架构到分布式微服务架构

不要再把SpringCloud与微服务画“=”了!

懒羊羊的博客 2496

真香!覆盖全网的微服务架构笔记,看完还不懂你来打我

微服务在这个互联网时代依旧是最火热的技术之一,在当下互联网企业不懂微服务是不行的,其中Dubbox+Spring Boot+Docker+SpringCloud架构也是必不可缺的技术要点,也有人凭借这份微服务架构笔记进了大厂,话不多说,上干货!微服务架构包含了Dubbox+Spring Boot+Docker+SpringCloud的技术点详解,感兴趣的朋友们来获取这一份微服务架构笔记吧,对你复习会有帮助的!在这个凡事皆互联的时代,越来越多的人和物成为互联网上的节点,不断扩充着互联网这张大网的边界。

m0_63437643的博客 928

java实战项目教程,带你快速实现电商秒杀系统,解决高并发!

现在找工作,不管你是实习还是走的社招,都会问你是否有经验,尤其是对于Java程序员来说,项目经验真的很重要!今天分享一套Java项目实战教程,电商秒杀系统搭建,帮你解决高并发! 随着现在互联网企业的增多,电商系统不断的强化,秒杀系统做为必备的营销手段之一,后台如何用技术进行支撑呢?秒杀活动在一个特定的时间点,有大量的用户涌入,所以解决高并发是秒杀系统的关键点所在。我们经过深入的研究,后台通过 SpringCloud 微服务架构来减轻服务器的压力,再配合 RabbitMQ 中间件来实现业务逻辑的拆分,异

qq_41293655的博客 892
上一篇: 如何评价《领域驱动设计精粹》?为什么说它是拯救烂代码的“最后解药”?
下一篇: 大开眼界!这些千奇百怪的C语言代码,你见过几个?
程序员职业指南
博客等级 码龄4年 2136粉丝 960原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值