Newbe.Claptrap 框架中为什么用 Claptrap 和 Minion 两个词?最近整理了一下项目的术语表.今天就谈谈为什么起了 Claptrap 和 Minion 两个名字. Claptrap 简单来说 Claptrap = Actor + 事件溯源 Claptrap 是本框架定义的一种特殊 Actor.除了上文中提到 Actor 两种特性之外,Claptrap 还被定义为具有以下特性: 状态由事件进行控制.Actor 的状态在 Actor 内部进行维护.Claptrap 同样也是如…
Newbe.Claptrap 框架中 State 和 Event 应该如何理解?最近整理了一下项目的术语表.今天就谈谈什么是 Event 和 State. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. 事件 Event Claptrap 是基于事件溯源的 Actor 模式.事件自然就起到了至关重要的作用. 想要操作 Claptrap 就需要对其传递事件.事件也是改变 Claptrap State 的…
首先,我使用protobuf作为IDL,然后提供HTTP POST + JSON BODY的方式来发送请求. 能不能使用HTTTP POST + PB序列化后的二进制BODY呢? 做了一下尝试,非常简单: func Report(c *gin.Context) { req := protocols.ReportRequest{} var err error if c.ContentType() == "application/x-protobuf" { err = c.ShouldBi…
接上一篇 Newbe.Claptrap 框架入门,第一步 —— 创建项目,实现简易购物车 ,我们继续要了解一下如何使用 Newbe.Claptrap 框架开发业务.通过本篇阅读,您便可以开始尝试使用 Claptrap 实现业务了. 开篇摘要 本篇,我通过实现 “清空购物车” 的需求来了解一下如何在已有的项目样例中增加一个业务实现. 主要包含有以下这些步骤: 定义 EventCode 定义 Event 实现 EventHandler 注册 EventHandler 修改 Grain 接口 实现 G…
Newbe.Claptrap 框架非常适合于解决具有并发问题的业务系统.火车票售票系统,就是一个非常典型的场景用例. 本系列我们将逐步从业务.代码.测试和部署多方面来介绍,如何使用 Newbe.Claptrap 框架来构建一个简易的火车票售票系统. 吹牛先打草稿 让我们来首先界定一个这个简易的火车售票系统所需要实现的业务边界和性能要求. 业务边界 该系统仅包含车票的余票管理部分.即查询剩余座位,下单买票减座. 而生成订单信息,付款,流量控制,请求风控等等都不包含在本次讨论的范围中. 业务用例 查…
Newbe.Claptrap 框架如何实现多级生命周期控制?最近整理了一下项目的术语表.今天就谈谈什么是 Claptrap Lifetime Scope. 特别感谢 kotone 为本文提供的校对建议! Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. Claptrap 生命周期按照笔者的看法分为两大类进行阐述:运行时生命周期和设计时生命周期. 运行时生命周期 运行时生命周期是指 Claptrap 系统…
接上一篇 Newbe.Claptrap 框架入门,第三步 —— 定义 Claptrap,管理商品库存 ,我们继续要了解一下如何使用 Newbe.Claptrap 框架开发业务.通过本篇阅读,您便可以开始学会在 Claptrap 框架中使用 Minion 进行异步的业务处理. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. 开篇摘要 本篇,我通过实现 “商品下单” 的需求来了解一下如何在已有的项目样例中…
laravel框架中视图间共享数据有两种,一种是用视图门面share()方法实现,另一种是用视图门面composer() 方法实现,那么,两种方法的实现究竟是怎样的呢?让我们来看一看接下来的文章内容. 首先,需要注意的一点是:都是使用 View 门面来访问 Illuminate\Contracts\View\Factory 的底层实现 视图门面share()方法 有时需要在所有视图之间共享数据片段,这时候可以使用视图门面的 share 方法. 1,一般情况下,我会在app\http\Contro…
Java集合框架中需要比较大小的集合包括TreeMap.TreeSet,其中TreeMap会根据key-value对中key的大小进行排序,而TreeSet则会对集合元素进行排序. 因此TreeMap的key.TreeSet的集合元素,都需要可以比较大小.集合框架中之比较大小的有两种方式: A.自然排序:对于自然排序来说,要求TreeMap中的所有key都实现Comparable接口,实现该接口时需要实现一个int compareTo(T o)方法,用于判断当前对象与o对象之间的大小关系.如果该…
Newbe.Claptrap 项目是笔者正在构建以反应式.Actor模式和事件溯源为理论基础的一套服务端开发框架.本篇我们将来了解一下框架在水平扩展方面的能力. 前情提要 时隔许久,今日我们再次见面.首先介绍一下过往的项目情况: 第一次接触本框架的读者,可以先点击此处阅读本框架相关的基础理论和工作原理. 日前,我们也编写了一些预热文章和工具,读者可以通过以下链接进行了解: 谈反应式编程在服务端中的应用,数据库操作优化,从 20 秒到 0.5 秒 docker-mcr 助您全速下载 dotnet…