• 本文是来自Kafka的创始人Jay Kreps的一篇博文,回答了世面上怀疑Kafka是否支持正好一次(Exactly-once)的消息传递,从而说明了Kafka能支持分布式事务,保证微服务事务的完整性,关键是将偏移量和你要保存的状态通过JDBC事务或者JTA事务保存到数据库,失败恢复时从这个偏移量开
  • 这是分布是系统领域很重要的一篇文章,主要论述在消息传递中"最多一次"、"最少一次"和"正好一次"三者中正好一次传递是不可能的,也就是通过网络两个服务器之间的调用恰好通过一次就完成正确通讯是不可能的。至少一次意思是一个消息至少传递一次以上,当然会造成消息内容重复冗余,但是可靠性提高了;而至多一次是服务
  • 本文主要谈论了微服务系统之间通讯RPC同步和异步队列的不同,RPC同步速度快但不可靠;异步队列速度慢一点但可靠。本文也解释了其背后原因,比如缺乏统一时钟,也就是著名的拜占庭将军问题,认识这点后,会更加意识到从单体巨石系统monolith迁移到微服务最困难的是缺乏事务机制。如果有一些与钱有关的系统比如 icon
  • 大部分公司迁移到微服务架构面临的一个挑战是如何实现微服务之间的通信。 在过去单体架构中,各个组件都在同一个进程中运行,相互通信只是相互的函数的调用而已。但是在微服务环境中,组件之间是由服务器硬性边界分隔了,一般位于不同的VM或JVM或服务器中,相互之间需要 icon
  • 许多软件开发人员试图建立可扩展系统时往往会遇到困难。也许这是因为,最简单和最明显的解决方案往往无法扩展; 这可能解释了为什么这些方案有时被称为“幼稚”的解决方案。 一旦你了解并行一些基本概念和准则,在任何情况下,就会编写可伸缩扩展的代码,最重要的是Amda icon
  • 所有数据流水线的唯一要求是它们不能丢失数据。可以延迟或重新排序,但不能丢失。 为了满足这一要求,大多数分布式系统实现至少保证一次(least-once)传递。实现至少一次传递的技术通常等于:“重试,重试,重试”。直到在收到消费者的确认之前,否则永远不会认为 icon
  • 本文从分布式系统角度讨论了区块链中的几种创新模式:不可变模式、异步和共识以及网络容错可靠性。 不可变模式 区块链是不可变的。 分布式系统已经在相当一段时间内依靠不变性来消除异常。 icon
  • RabbitMQ是一款流行的消息系统,与其交互都需要透过JVM通过端口通讯,现在有一款开源库包能够将RabbitMQ作为同一个JVM内的嵌入式服务。其工作原理是当启动该库包时,会从官方仓库下载RabbitMQ库包。 安装: icon
  • ESB架构:ESB一种模型,服务提供者和使用者通过ESB连接而不再直连->服务提供者接入ESB->ESB提供Proxy Service->使用者调用Proxy Service。优点:服务间的解耦;统一监控管理;并把服务代码中交互集成的部分抽离出来,只专心于自己的业务逻辑。缺点 icon
  • 一个卡牌游戏,消息传输是基于netty的,server端接受到request,logic中处理后封装成response 直接丢给一个异步线程 调用channel.write 给手机端; icon
  • 该文详细介绍了Kafka消费者原理和使用策略,如果我们将消费者的偏移量使用JDBC事务或JTA事务保存起来,就能实现分布式端到端的事务,也就是通常所说的分布式事务。 消费者是否活着 icon
  • 请问banq老师,如果想实现一个腾讯QQ聊天记录存储的功能,应该怎么实现呢? Q1:如果用户产生了一条消息,我是直接存入到数据库中呢?还是等待达到一定的数量了,我再存入数据库中呢?如果是第二种的话,我将数据存在内存中,是不是还需要开一个线程监听内存中的消息 icon
  • 首先各个业务系统内部使用的通信协议可能各不相同,即使底层协议相同业务系统之间的数据格式各不相同,要想使业务系统之间传递的数据能够做到相互可以认知用什么方法来解决这个问题? 传统的EAI解决方式我已经知道,能解释一下现在国际上通用的最优解决办法吗,在SOA icon
  • 如题:现在需要实现消息实时推送机制(类似新浪微博这样),虽然主流J2EE框架有comet,但是使用长连接,对于服务器进程堵塞较严重,本人使用工具检测了新浪微博界面,发现界面会定时去loading远端数据,估计也是类似timeout + ajax 这样的轮询方式。不知道哪种方式更好啊,有没有目前最优的 icon