SAGA

CQRS sagas - did I understand them right?

大憨熊 提交于 2019-11-27 20:34:23
问题 I'm trying to understand sagas , and meanwhile I have a specific way of thinking of them - but I am not sure whether I got the idea right. Hence I'd like to elaborate and have others tell me whether it's right or wrong. In my understanding, sagas are a solution to the question of how to model long-running processes . Long-running means: Involving multiple commands, multiple events and possibly multiple aggregates. The process is not modeled inside one of the participating aggregates to avoid

利用本地消息表和MQ解决消息可靠性

帅比萌擦擦* 提交于 2019-11-27 14:13:10
本地消息表 ebay方案: https://queue.acm.org/detail.cfm?id=1394128 为解决producer端消息发送和本地事务执行原子性问题,将需要分布式处理的任务通过消息日志方式存储到一个地方,在本地事务完成之前,这个消息对于消费者是不可见的,本地事务执行成功之后,消费者才会看到这个消息并进行消费。 消息日志可以存储到本地文本,数据库或消息队列,通过业务规则自动或者人工方式发起重试。 人工重试多用于支付场景,通过对账系统对事后问题进行处理。 预发送消息到mq,消费者是看不到此消息的,因此不会进行消费 执行本地事务,比如操作数据库,依赖本地事务 如果本地事务执行成功,则进行mq消息确认。如果失败,则回滚mq消息 对于本地消息队列来说,把大事务转变成小事务,举个例子: 当扣钱时,需要在扣钱当服务器上增加一个本地消息表,需要把扣钱和减去的库写入存放到本地消息表,依靠数据库本地事务保证一致性 定时任务轮训本地消息表,把没有发送的消息发送给商品目标服务器,让其去减库存,达到商品服务的请求先写入本地消息表,进行扣减,扣减成功后,更新消息表状态 商品服务通过定时任务扫描消息表,扣减库存成功后修改本地消息表状态 如果定时任务扫描到没有执行成功的消息,则进行重发,商品服务接受到消息后判断消息是否重复,保证幂等性 本地事务实现 可以将消息放到一个地方存起来

华为云继ServiceComb后宣布开源Mesher,微服务领域薪火不断

帅比萌擦擦* 提交于 2019-11-26 14:08:27
2018年6月25日,开源界面盛会LC3上,华为继去年开源微服务方案ServiceComb后,又宣布将于7月份开源微服务领域服务网格ServiceMesh产品化技术Mesher。 ServiceComb社区凭借与华为云的源头关系,获得关于Mesher的第一手信息: 华为云是最早将Service Mesh产品化商用的企业之一,旨在将微服务中的应用问题和网络问题分离。 当前华为云AI和文思海辉楼宇设施管理服务等业务已经使用Mesher进行商用。 Mesher 还具备基础设施完全解耦,高性能,侵入式与非侵入式治理互通,可扩展三方SDK等特点。 Mesher 开源后,将会如何运作,进入哪个基金会,是否会进入ServiceComb,这些是当前业界最为关注的事情,ServiceComb目前能提供的信息也仅是这些。但是ServiceComb与开源后的Mesher一衣带水,不论Mesher是否进入ServiceComb,ServiceComb都将会竭尽所能帮助Mesher建立热衷和忠诚开源的品质,为开源社区营造好的土壤贡献力量。 对于关于ServiceComb对于Service Mesh和 Mesher的思考,在下面《 ServiceComb 社区在其开源一周年之际写给微服务开发者的一封信》 已经有了相关表述: 写在ServiceComb开源一周年之际 2018年6月25日,开源界盛会LC3