Fork me on GitHub

服务启动了,然后呢?一次发布应该怎样验收

镜像打好了,容器启动了,健康检查也是绿色。打开用户入口,看到的却还是旧版本。

这不一定是代码没更新。可能新实例还没接流量,可能入口指向另一组服务,也可能应用加载的配置仍然来自旧文件。

服务内部的成功信号很重要,但它们需要与用户真正经过的路径连接起来。

阅读更多...

给 AI 问答做测试:先把错误分清楚

给知识库换了检索策略,测试分数从 80 变成 90,可以上线了吗?

先别急。这个分数到底在衡量什么?搜到了目标文档,答案写得像参考答案,还是用户真的得到了可以使用的结论?

同样一个问题,可能文档找对了、答案却用错了版本;也可能答案正确,引用却点不开。把它们压成一个总分,最需要修复的地方反而不容易看见。

阅读更多...

知识库能搜到,为什么还是答不准?

假设有人问:“我们正在用的这个版本,能不能处理扫描件?”

知识库搜到了三份材料:一份产品介绍、一份新版本说明,还有一份测试记录。模型读完以后回答:“支持,上传文件即可。”

听起来很顺。但再看一眼,产品介绍没有写版本,新版本说明说的是下个月准备发布的功能,测试记录只覆盖了一种文档。

问题出在哪里?材料确实找到了,可它们还不足以回答眼前这个问题。

阅读更多...

秒杀系列(二)如何优雅地异步下订单

简单的订单异步处理实现

介绍

前面几篇文章,我们从 「限流角度,缓存角度」 来优化了用户下单的速度,减少了服务器和数据库的压力。这些处理对于一个秒杀系统都是非常重要的,并且效果立竿见影,那还有什么操作也能有立竿见影的效果呢?答案是对于下单的异步处理。

在秒杀系统用户进行抢购的过程中,由于在同一时间会有大量请求涌入服务器,如果每个请求都立即访问数据库进行扣减库存+写入订单的操作,对数据库的压力是巨大的。

如何减轻数据库的压力呢,「我们将每一条秒杀的请求存入消息队列(例如RabbitMQ)中,放入消息队列后,给用户返回类似“抢购请求发送成功”的结果。而在消息队列中,我们将收到的下订单请求一个个的写入数据库中」,比起多线程同步修改数据库的操作,大大缓解了数据库的连接压力,最主要的好处就表现在数据库连接的减少:

  • 同步方式:大量请求快速占满数据库框架开启的数据库连接池,同时修改数据库,导致数据库读写性能骤减。
  • 异步方式:一条条消息以顺序的方式写入数据库,连接数几乎不变(当然,也取决于消息队列消费者的数量)。

「这种实现可以理解为是一中流量削峰:让数据库按照他的处理能力,从消息队列中拿取消息进行处理。」

阅读更多...

秒杀系列(一)防止超卖

秒杀系统

秒杀系统相信网上已经介绍了很多了,我也不想粘贴很多定义过来了。

废话少说,秒杀系统主要应用在商品抢购的场景,比如:

  • 电商抢购限量商品
  • 卖周董演唱会的门票
  • 火车票抢座
  • ……

秒杀系统抽象来说就是以下几个步骤:

  • 用户选定商品下单
  • 校验库存
  • 扣库存
  • 创建用户订单
  • 用户支付等后续步骤

听起来就是个用户买商品的流程而已嘛!确实,所以我们为啥要说它是个专门的系统呢?

阅读更多...

Java 幂等设计

小伙伴们有没有遇到过生产环境经常出现过重复的数据?在排查问题的时候,数据又是正常的。这个是何解呢?怎么会出现这种情况,而且还很难排查问题。

今天给大家分享一下这里的原因,以及解决方案。

阅读更多...

HSF 框架简介

HSF 框架,全称 High Speed Framework,是 Alibaba 内部使用的 RPC 框架,最初于 Dubbo 进行内部竞争,由于多方面的原因最终选择了 HSF。

HSF 作为阿里内部高性能的 RPC 框架,其优点是轻量,高性能,运维成本低的特性,为大规模集群的应用提供了好的基础。

入职前需要掌握的一个框架,HSF,自学的同时也分享给大家。

阅读更多...
  • Copyrights © 2017-2026 Shadowalker
  • 累计访问: | 本页浏览:

请我喝杯咖啡吧~

支付宝
微信