加入收藏 | 设为首页 | 会员中心 | 我要投稿 阿坝站长网 (https://www.0837zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

在疫情大流行时代起着关键作用

发布时间:2021-02-20 12:44:58 所属栏目:传媒 来源:互联网
导读:写在前面 很多高并发系统中都会使用到消息队列中间件,那么,问题来了,为什么在高并发系统中都会使用到消息队列中间件呢?立志成为资深架构师的你思考过这个问题吗? 本文集结了众多技术大牛的编程思想,由冰河汇聚并整理而成,在此,感谢那些在技术发展道理

写在前面

很多高并发系统中都会使用到消息队列中间件,那么,问题来了,为什么在高并发系统中都会使用到消息队列中间件呢?立志成为资深架构师的你思考过这个问题吗?

本文集结了众多技术大牛的编程思想,由冰河汇聚并整理而成,在此,感谢那些在技术发展道理上默默付出的前辈们!

场景分析

现在假设这样一个场景,用户下单成功需要给用户发短信,如果没有消息队列,我们会选择同步调用发短信的接口并等待短信发送成功。现在假设短信接口实现出现了问题或者短信发送短时间内达到了上限,这个时候是选择重试几次还是放弃发送呢?这里的设计会很复杂。如果使用了消息队列,我们选择将发短信的操作封装成一条消息发送到消息队列,消息队列通知一个服务去发送一条短信,即使出现了上述的问题,可以选择把消息重新放到消息队列里等待处理。

消息队列的好处

通过上述了例子,我们看到消息队列完成了一个异步解耦的过程,短信发送时我们只要保证短信发到消息队列成功就可以了,接下来就可以去做别的事情;其次,设计变得更简单,在下单的场景下,我们不用过多考虑发送短信的问题,交给消息队列管理就行了,可能短信发送会有延迟,但是保证了最终的一致性。

消息队列特性

  • 业务无关,只做消息分发。
  • FIFO,先投递先到达。
  • 容灾:节点动态增删和消息持久化。

性能:吞吐量提升,系统内部通信效率提高。

高并发系统为何使用消息队列?

(1)业务解耦

成功完成了一个异步解耦的过程。短信发送时只要保证放到消息队列中就可以了,接着做后面的事情就行。一个事务只关心本质的流程,需要依赖其他事情但是不那么重要的时候,有通知即可,无需等待结果。每个成员不必受其他成员影响,可以更独立自主,只通过一个简单的容器来联系。

对于我们的订单系统,订单最终支付成功之后可能需要给用户发送短信积分什么的,但其实这已经不是我们系统的核心流程了。如果外部系统速度偏慢(比如短信网关速度不好),那么主流程的时间会加长很多,用户肯定不希望点击支付过好几分钟才看到结果。那么我们只需要通知短信系统“我们支付成功了”,不一定非要等待它处理完成。

(2)最终一致性

主要是用记录和补偿的方式来处理;在做所有的不确定事情之前,先把事情记录下来,然后去做不确定的事,它的结果通常分为三种:成功,失败或者不确定;如果成功,我们就可以把记录的东西清理掉,对于失败和不确定,我们可以采用定时任务的方式把所有失败的事情重新做一遍直到成功为止。


 

现在,Gemini 能提供什么?最好的方法是前往 Gemini 浏览器中的官方网站:gemini.circumlunar.space。在这里,你可以找到两个搜索引擎,专门根据你搜索的内容找到网页。还有两个聚合器,作为 Gemini 帖子的新闻源。

就我个人而言,我很喜欢滚动浏览聚合器,看看人们在博客上写些什么,我经常能找到有趣的东西。

从服务器管理的角度来看,Gemini 只是一个瘦身的 Web。你购买一个域名(使用网络),获得或租用一个服务器,安装一个 Gemini 服务器,然后开始为你的网站服务。为了发布内容到 Gemini 上,你需要自行托管,或者利用目前由 circlunar.space 提供的 Gemini 托管。这里没有花哨的 P2P 或区块链解决方案,只是一个良好的传统的客户/服务器模式。

我无疑会关注 Gemini,我的博客文章已经是 markdown 格式的,所以将其提供给 Gemini 应该很容易,当然还并非完全确定。

我分享下面这句话,还有我发现的一些有趣的链接给读者。

当我在脑海中,早期的 Web 更像是一个图书馆,但随着时间的推移,它已经转型为一个购物中心。


(编辑:阿坝站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读