00:00 / 01:05
连播
清屏
智能
倍速
点赞182
00:00 / 00:43
连播
清屏
智能
倍速
点赞3
00:00 / 00:30
连播
清屏
智能
倍速
点赞3
#性能优化 案例七:API网关缓慢——盲目增连接,忽略了N+1的微服务版 一个微服务架构下的聚合查询API,比如查询订单详情,需要拉取用户、商品、物流等多个信息。某天,这个接口响应变得缓慢,数据库压力不大,但应用服务器负载很高。 开发团队的反应是网络调用开销太大!于是他们为每个下游微服务的客户端都配置了独立的连接池,并大幅增加连接数。 同时,在代码层增加了异步编排逻辑,试图让调用并行起来。 结果下游部分承载力较弱的核心服务——比如用户基础信息服务——因为连接数被耗尽而崩溃,引发全链路瘫痪。异步逻辑增加了问题排查的复杂度,根本不知道是哪里先出的问题。 根本原因到底是什么? 这是N+1查询问题在微服务间的翻版!这个聚合API为了构造一个完整的响应,对每个订单项都可能发起一次独立的RPC调用去获取商品详情。 100个订单项,就产生100次调用。增加连接池,只是让“请求洪水”更顺畅地冲垮了下游服务。 第一性原理启示:分布式系统的性能包括两条:减少远程调用次数,尊重下游服务的承载力。你给再多连接,也解决不了“调用次数爆炸”的问题。 正确的优化方向: 服务端聚合:在提供数据的微服务侧,提供批量查询接口。比如,对获取产品ID,不要提供一个单条接口,而是提供一次查询多条的批量接口,一次传入100个ID,返回100个商品信息。 数据冗余与CQRS:在合理的一致性级别下,将高频查询所需的数据,冗余到读库或缓存中。比如,订单详情页需要展示商品名称和图片,完全可以在订单服务本地冗余一份商品快照,避免实时调用商品服务。 调用链分析:先使用APM工具(比如SkyWalking、Zipkin)分析问题,看看到底是谁在调谁,调了多少次,每次多久。而不是盲目调整连接参数。 【总结】 盲目增连接,忽略了N+1的微服务版 微服务架构下,最贵的不是连接数,而是调用次数。一次批量查询,胜过一百次单条调用。
00:00 / 03:10
连播
清屏
智能
倍速
点赞4
00:00 / 00:56
连播
清屏
智能
倍速
点赞9
Nirvana3天前
微信小程序开发 具体步骤 1:我们使用微信的云开发,在微信开发者工具里面找到云开发按钮(最上面一排的云朵图标) 2:点击进入后,在更多选项点击管理工具(此时会打开cloudbase的网页) 3:如果没有购买云环境或者使用免费云环境的,需要购买一下云环境(不贵),因为付费的云环境将有更多的功能和权限,有助于我们的开发 4:在左侧点击云函数/托管/主机,找到函数管理,下拉可以看到我们已经创建的云函数(如果没有创建,这里可以创建云函数),我是在开发者平台已经通过AI助手帮我创建了函数代码,然后从开发者平台的云开发上传的,我认为这样比网页版的简单很多。 5:点击该函数后进入详细配置,描述栏里面写清楚该函数的作用,内存配置根据自己项目的大小和复杂程度设置,不明白的可以根据自己的项目情况问AI,他会告诉你多少合适,通常256是标配。 6:最重要的一步,填写密钥,这是你申请的LLM调用key,它包括了 ID 和 值,很多人这里搞不清楚,key和value什么意思,key通常指的ID就像名字,例如deepseek-secret_id,value就是复杂的一长串码。这里千万别搞错。填好后后面的几乎不用去管了,点击保存。 7:返回开发者工具的云开发里面查看该函数的详情,在环境变量里面出现了刚才填写的密钥,就说明云环境llm密钥配置成功 #ai #软件开发 #微信小程序 #电脑知识
00:00 / 01:09
连播
清屏
智能
倍速
点赞6