探讨Solon2分布式事件总线的应用价值

分布式事件总线在分布式开发(或微服务开发)时,是极为重要的架构手段。它可以分解响应时长,可以削峰,可以做最终一致性的分布式事务,可以做业务水平扩展。

1、分解响应时长

比如我们的一个接口处理分为四段代码,别分耗时:A 段 (0.5s),B 段 (1s),C 段 (0.5s),D 段 (3s)。如果同步响应的话,用户一共需要等待 5s,这个体验肯定不怎么好了。我们可以借分布式事件总线,做完 A 后,发一个事件,由事件订阅者再去完成 B,C,D;那用户的感觉就是 0.5S 就完成了,体验就会比较好。(如果是单体,可以自己订阅;如果是分布式,可以由其它服务订阅)

2、 削峰

这个事情跟 “响应时长” 有极大的关系。比如一个接口响应需要 5s,每秒请求数有 200 个,那舜间的并行请求就会有 1000 个(上一秒的未处理完,下一秒的又来了嘛),这个请求就会堆积如山,山峰也会越来越高。突然一波大流量就服务器可能挂了。

如果是 0.5s,那并行处理就只会有 100 个。当前服务器的内存和 cpu 消耗也会 10 倍级的下降。

3、 做最终一致性的分布式事务

事件一但发送成功,中间件就会一直 “盯” 着你把事件消费成功为止。如果消费失败了,它会过段时间再发给你,直到你成功为止。(处理时,要注意 “幂等性” 控制。分布式环境,总会有不确定原因)

4、 业务水平扩展

这个是 “分布式事件总线” 的灵魂级妙处。你开发了一个用户注册的接口。一周后,产品说 “用户注册完送 5 个 Q 币”,旧的生产环境不用动,你只需要开发一个新的服务,订阅注册完成事件做处理;一个月后,产品说 “用户注册完成后,给他推送电信的大礼包活动”;后来产品又说 “用户注册后 7 天后,如果有上线 3 次,再送 10 个 Q 币”。。。这个就是指 “业务水平扩展” 了。在不动原代码和原服务,就扩展业务。

如果我们还有一个 FaaS 平台,可以动态的扩展事务。产品爱怎么搞,就怎么搞。像 Water 就有这样的动态事件功能(在线编即,实时生效或删除)。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值