分层思想

为什么要分层

分层的根本原因在于, 人类的脑容量是有限的—大约只能同时处理4-5个事物. 因此, 需要通过分层的方式对信息进行打包/抽象, 从而使人脑能够处理更多的信息.

阅读全文 »

愿景

We the Cypherpunks are dedicated to building anonymous systems. We are
defending our privacy with cryptography, with anonymous mail forwarding
systems, with digital signatures, and with electronic money.
—— Eric Hughes

阅读全文 »

捕获组

捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号显式命名的组里,方便后面引用。
当然,这种引用既可以是在正则表达式内部,也可以是在正则表达式外部。

阅读全文 »

引言

如何写好代码,是每个程序员都应该去关注的话题。代码不仅仅是给机器执行的,更是给人看的。我们都希望自己的代码写的好看犹如你的外表,但面对复杂业务需求和多人协同时,如果没有一套基本的原则规范,很难确保不迷失方向。本文就如何写好代码的问题,试图整理出一套规范。

什么是分层设计

简单的理解就是,把系统的逻辑功能按照某些原则抽象出几个层次,层次内保持高类聚,层次间保持低耦合,整个系统达到概念清晰,边界清晰,最终功能稳定。

阅读全文 »

Source

MQ消息最终一致性事务

本文我们将学习到一种常见的柔性事务解决方案:消息一致性事务方案。

对于TCC型事务,跨系统的调用均是基于服务间的直接调用,即很大程度上是同步调用。基于TCC方案能够保证主子事务同时成功,同时失败。

但实际开发中,由于多方面的考虑,我们会将服务拆分为异步方式,一般是基于MQ进行服务间的解耦,服务发起方执行完本地业务操作后发送一条消息给到消息中间件(比如:RocketMQ、RabbitMQ、Kafka、ActiveMQ等),被动方服务从MQ中消费该消息并进行业务处理,从而形成业务上的闭环。

这种场景下,我们还是希望异步的多个业务操作同时成功,同时失败,基于TCC的同步型事务解决方案就不可行了,这时就需要祭出可靠消息最终一致性方案。

阅读全文 »