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 就有这样的动态事件功能(在线编即,实时生效或删除)。

Solon2 分布式事件总线的技术价值?的更多相关文章
- 源码解析-Abp vNext丨分布式事件总线DistributedEventBus
前言 上一节咱们讲了LocalEventBus,本节来讲本地事件总线(DistributedEventBus),采用的RabbitMQ进行实现. Volo.Abp.EventBus.RabbitMQ模 ...
- [Abp vNext 源码分析] - 13. 本地事件总线与分布式事件总线 (Rabbit MQ)
一.简要介绍 ABP vNext 封装了两种事件总线结构,第一种是 ABP vNext 自己实现的本地事件总线,这种事件总线无法跨项目发布和订阅.第二种则是分布式事件总线,ABP vNext 自己封装 ...
- ABP vNext EventBus For RabbitMQ 分布式事件总线使用注意事项_补充官网文档
[https://docs.abp.io/zh-Hans/abp/latest/Distributed-Event-Bus-RabbitMQ-Integration](ABP vNext官方文档链接) ...
- 浅入 ABP 系列(4):事件总线
浅入 ABP 系列(4):事件总线 版权护体作者:痴者工良,微信公众号转载文章需要 <NCC开源社区>同意. 目录 浅入 ABP 系列(4):事件总线 事件总线 关于事件总线 为什么需要这 ...
- .NET Core 事件总线,分布式事务解决方案:CAP
背景 相信前面几篇关于微服务的文章也介绍了那么多了,在构建微服务的过程中确实需要这么一个东西,即便不是在构建微服务,那么在构建分布式应用的过程中也会遇到分布式事务的问题,那么 CAP 就是在这样的背景 ...
- .NET Core 事件总线,分布式事务解决方案:CAP 基于Kafka
背景 相信前面几篇关于微服务的文章也介绍了那么多了,在构建微服务的过程中确实需要这么一个东西,即便不是在构建微服务,那么在构建分布式应用的过程中也会遇到分布式事务的问题,那么 CAP 就是在这样的背景 ...
- 【转】.NET Core 事件总线,分布式事务解决方案:CAP
[转].NET Core 事件总线,分布式事务解决方案:CAP 背景 相信前面几篇关于微服务的文章也介绍了那么多了,在构建微服务的过程中确实需要这么一个东西,即便不是在构建微服务,那么在构建分布式应用 ...
- 【bird-java】分布式服务间的事件总线EventBus
什么是EventBusEventBus是对发布-订阅模式的一种实现.其以一种非常优雅的方式实现了组件间的解耦与通信,在Android开发.DDD等领域都有非常广泛的应用. 事件流大致如下: Produ ...
- 【Shashlik.EventBus】.NET 事件总线,分布式事务最终一致性
[Shashlik.EventBus].NET 事件总线,分布式事务最终一致性 简介 github https://github.com/dotnet-shashlik/shashlik.eventb ...
- asp.net core集成CAP(分布式事务总线)
一.前言 感谢杨晓东大佬为社区贡献的CAP开源项目,传送门在此:.NET Core 事件总线,分布式事务解决方案:CAP 以及 如何在你的项目中集成 CAP[手把手视频教程],之前也在工作中遇到分布式 ...
随机推荐
- 三种将list转换为map的方法
1) 传统方法假设有某个类如下 Java代码 class Movie { private Integer rank; private String description; public Movie( ...
- jadx 定位方法
目录 链接参数定位 链接参数定位 通过搜索请求链接中的参数来定位函数位置,如下图所示,请求链接为 https://www.python-spider.com/api/app1,app1为链接标识,可以 ...
- SQL-建表注释
ddl 是对表结构的操作 create(创建)命令.alter(修改)命令.drop(删除)dml 是对表数据的操作 insert(插入)命令.update(更新)命令.delete(删除) alte ...
- Django基础篇 06-Django模板过滤器Filter和标签Tags
一.Django模板的内置过滤器Filter 什么是模板(Template)? Django的Template是如何工作的 Django的模板是静态的html文件,它只决定了一个页面的样式或外观.它需 ...
- CSS选择符及盒模型
一.选择符 1.类型选择符(标签选择符) 特点:能选中当前结构里面(全部同名)标签. 应用:统一某一标签样式时或清除某一标签默认样式时. 2.id选择符 特点:(唯一性!)在同一个页面里面,一个id名 ...
- c++ dll 传递string参数
用c++编写了一个dll,需要传递一个路径的变量参数,刚开始想着使用string变量,但是在实践过程中string变量会成为乱码,尽量避免使用string变量传递参数,可以使用const char* ...
- PDF转置
import pdfplumber #全是None with pdfplumber.open(r"C:\Users\yjiang3\Desktop\Inv.pdf") as pdf ...
- vue中使用Echart将一组数据展示出三种统计图
1 <template> 2 <div class="container"> 3 <div id="myEchart" style ...
- Vivado工程常见报错及解决办法
1. 在进行自定义 IP 后,将自定义 IP 添加到当前的工程时,出现如下报错: [IP_Flow 19-167] Failed to deliver one or more file(s). [IP ...
- redis 配置哨兵模式时出现的问题(redis 版本 6.2.5)
今天准备搭建一个 redis 集群(redis 版本 6.2.5),在这之前要先配置好哨兵模式. 但是在配置哨兵模式时出现了问题.之前没有搭建集群时(一主两从,三台虚拟机)可以顺利配置好,而搭建集群时 ...