聊聊dkron的fsm

2021-04-05
阅读 4 分钟
1.7k
MessageType可以分为SetJobType、DeleteJobType、SetExecutionType、DeleteExecutionsType、ExecutionDoneType

聊聊machinery的TaskProcessor

2021-04-04
阅读 4 分钟
3k
Worker实现了TaskProcessor接口,其Process方法先通过worker.server.GetRegisteredTask获取taskFunc,然后通过signature更新state为RECEIVED,之后设置为STARTED,之后执行task.Call(),最后根据结果更新task为failed或者success

聊聊machinery的Lock

2021-04-03
阅读 3 分钟
1.6k
Lock定义了rclient、retries、interval属性;New方法根据cnf、addrs、db、retries创建lock;LockWithRetries方法根据retries次数来尝试r.Lock(key, unixTsToExpireNs),都没有成功则返回ErrRedisLockFailed;Lock方法执行r.rclient.SetNX,如果不成功则判断是否过期,过期的话执行执行r.rclient.GetSet,若确实过期了则...

聊聊machinery的TaskState

2021-04-02
阅读 7 分钟
2k
TaskState定义了PENDING、RECEIVED、STARTED、RETRY、SUCCESS、FAILURE状态;TaskState定义了TaskUUID、TaskName、State、Results、Error、CreatedAt、TTL属性;它提供了NewPendingTaskState、NewReceivedTaskState、NewStartedTaskState、NewSuccessTaskState、NewFailureTaskState、NewRetryTaskState方法来根据Signat...

聊聊eventhorizon的EventBus

2021-04-01
阅读 4 分钟
2.1k
序本文主要研究一下eventhorizon的EventBusEventBuseventhorizon/eventbus.go {代码...} EventBus接口内嵌了EventHandler接口,定义了AddHandler、Errors、Wait方法EventBuseventhorizon/eventbus/local/eventbus.go {代码...} EventBus定义了group、registered、registeredMu、errCh、wg、codec属性;HandleEvent方法先...

聊聊eventhorizon的Aggregate

2021-03-31
阅读 4 分钟
1.4k
序本文主要研究一下eventhorizon的AggregateAggregateeventhorizon/aggregate.go {代码...} Aggregate接口内嵌了Entity及CommandHandler,定义了AggregateType方法AggregateStoreeventhorizon/aggregate.go {代码...} AggregateStore定义了Load、Save方法AggregateStoreeventhorizon/aggregatestore/model/aggregatestor...

聊聊JESA的EventRecorder

2021-03-30
阅读 6 分钟
1.7k
序本文主要研究一下JESA的EventRecorderEventRecorderJESA/src/main/java/Jesa/EventRecorder.java {代码...} EventRecorder定义了records,提供了record、clear、hasEvents、toArray方法InstanceEventRouterJESA/src/main/java/Jesa/InstanceEventRouter.java {代码...} InstanceEventRouter接口定义了configureRoute、...

聊聊cheddar的MessageHandlerExecutor

2021-03-29
阅读 11 分钟
1.5k
Cheddar/cheddar/cheddar-messaging/src/main/java/com/clicktravel/cheddar/infrastructure/messaging/pooled/listener/MessageHandlerExecutor.java

聊聊cheddar的PendingResult

2021-03-28
阅读 5 分钟
1.7k
Cheddar/cheddar/cheddar-application/src/main/java/com/clicktravel/cheddar/application/pending/result/PendingResult.java

聊聊cheddar的MessageSender

2021-03-27
阅读 9 分钟
1.7k
Cheddar/cheddar/cheddar-messaging/src/main/java/com/clicktravel/cheddar/infrastructure/messaging/MessageSender.java

聊聊cheddar的tx

2021-03-26
阅读 9 分钟
1.6k
Cheddar/cheddar/cheddar-tx/src/main/java/com/clicktravel/cheddar/infrastructure/messaging/tx/MessageAction.java

聊聊cheddar的DomainEvent

2021-03-25
阅读 2 分钟
1.3k
Cheddar/cheddar/cheddar-domain/src/main/java/com/clicktravel/cheddar/domain/event/DomainEvent.java

聊聊cheddar的events

2021-03-24
阅读 3 分钟
1.5k
Cheddar/cheddar/cheddar-events/src/main/java/com/clicktravel/cheddar/event/Event.java

聊聊go-ddd-sample

2021-03-22
阅读 2 分钟
4.1k
序本文主要赏析一下go-ddd-sample项目结构 {代码...} 这里分为application、domain、infrastructure、interfaces四层domain {代码...} domain层定义了模型及repository接口,同时利用go generate生成repository的mock实现application {代码...} applicatioin层调用domain层来进行业务编排infrastructure {代码...} infra...

聊聊go-bank-transfer项目对Clean Architecture的实践

2021-03-21
阅读 5 分钟
1.5k
序本文主要赏析一下go-bank-transfer对于Clean Architecture的实践项目结构 {代码...} 这里分为adapter、domain、infrastructure、usecase四层domainaccount {代码...} account定义了AccountRepository接口及Account类型,同时还提供了Withdraw、Deposit方法transfer {代码...} transfer定义了TransferRepository接口及T...

聊聊buckpal对于Hexagonal Architecture的实践

2021-03-20
阅读 10 分钟
1.7k
这里分为adapter、application、domain三层;其中application层定义了port包,该包定义了in、out两种类型的接口;adapter层也分in、out两类,分别实现application/port层的接口;application的service则实现了port的接口

Java16的新特性

2021-03-17
阅读 5 分钟
7.5k
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java18的新特性Java19的新特性Java20的新特性Java21的新特性Java22的新特性Java23的新特性Java24的新特性序本文...

聊聊Onion Architecture项目结构

2021-03-15
阅读 3 分钟
2.3k
序本文主要研究一下Onion Architecture项目结构Onion ArchitectureOnion Architecture定义了domain、repository、services、ui这几层,其核心要点如下:整个应用基于独立的domain构建内部的layer定义接口,外部的layer实现接口内层与外层通过接口解耦services(business logic)可以独立于infrastructure编译和运行示例结...

聊聊Ports and Adapters architecture

2021-03-15
阅读 2 分钟
2.9k
Ports and Adapters architecture,又叫Hexagonal architecture,其中ports层是六边形的边界,其中port又可以分为driver port及driven port,简单理解对应输入层及输出层;边界保护的是内部的app,其中app包括use cases或者叫做application services层以及domain层;adapter可以理解为将外部依赖进行适配,实现port层定...

聊聊golang的clean architecture项目结构

2021-03-13
阅读 2 分钟
3.4k
clean architecture定义了四层结构,最内层是entities(enterprise business rules),再往外是use cases(application business rules),接着是interface adapters(比如controller、presenters、gateways),最外层是frameworks & drivers(比如web、ui、db、devices、external interfaces)

聊聊golang的DDD项目结构

2021-03-11
阅读 2 分钟
7.4k
比如interfaces层定义了输入层的相关方法,以使用gin提供http接口为例,这里的handler等为使用gin提供的一些http接口,这一层调用application层

聊聊dapr的Pipeline

2021-03-10
阅读 2 分钟
2.2k
Pipeline定义了Handlers属性,是一个Middleware数组;Pipeline定义了Apply方法,它会从后往前挨个执行Middleware函数;Middleware函数接收fasthttp.RequestHandler,返回fasthttp.RequestHandler

聊聊dapr的consistent hash

2021-03-09
阅读 4 分钟
2k
ConsistentHashTables定义了Version、Entries属性,Entries是个map,value为Consistent;Consistent定义了hosts、sortedSet、loadMap、totalLoad、sync.RWMutex属性

聊聊dapr的fswatcher

2021-03-08
阅读 6 分钟
1.6k
Watch方法使用fsnotify的watcher来监听文件,之后通过for循环进行select,如果监听到fsnotify.Create或者fsnotify.Write的时候判断event.Name是否包含dir,如果包含则sleep一秒然后通知eventCh

聊聊dapr的metrics_utils

2021-03-07
阅读 4 分钟
1.5k
序本文主要研究一下dapr的metrics_utilsNewMeasureViewdapr/pkg/diagnostics/utils/metrics_utils.go {代码...} NewMeasureView根据measure、tag、aggregation来创建viewWithTagsdapr/pkg/diagnostics/utils/metrics_utils.go {代码...} WithTags方法支持变长的tag.Key类型,支持将tag.Key转换为tag.MutatorAddTagKeyToC...

聊聊dapr的Limiter

2021-03-06
阅读 2 分钟
1.4k
序本文主要研究一下dapr的LimiterLimiterdapr/pkg/concurrency/limiter.go {代码...} Limiter定义了limit、tickets、numInProgress属性NewLimiterdapr/pkg/concurrency/limiter.go {代码...} NewLimiter方法根据limit来创建Limiter,并挨个分配ticketExecutedapr/pkg/concurrency/limiter.go {代码...} Execute方法首先...

聊聊storagetapper的cache

2021-03-04
阅读 2 分钟
1.7k
序本文主要研究一下storagetapper的cachecachestoragetapper/pipe/cache.go {代码...} cache是一个cacheEntry的map,cacheEntry定义了Pipe和config.PipeConfigCacheGetstoragetapper/pipe/cache.go {代码...} CacheGet方法加锁操作cache,首先通过sha256来对pipeType及db来作为cache的key,然后取出cacheEntry,若存在则...

聊聊storagetapper的pool

2021-03-03
阅读 4 分钟
1.6k
序本文主要研究一下storagetapper的poolThreadstoragetapper/pool/pool.go {代码...} Thread接口定义了Start、Adjust、Terminate、NumProcs方法poolstoragetapper/pool/pool.go {代码...} poolImpl定义了mutex、numProcs、maxNumProcs、fn属性;它实现了Thread接口,其Start方法设置了fn,同时执行Adjust方法;Adjust方...

聊聊storagetapper的pipe

2021-03-02
阅读 2 分钟
1.6k
序本文主要研究一下storagetapper的pipePipestoragetapper/pipe/pipe.go {代码...} Pipe接口定义了NewConsumer、NewProducer、Type、Config、Close方法Consumerstoragetapper/pipe/pipe.go {代码...} Consumer接口定义了Close、CloseOnFailure、Message、Error、FetchNext、SaveOffset、SetFormat方法Producerstoragetap...

聊聊storagetapper的Lock

2021-03-01
阅读 5 分钟
1.7k
序本文主要研究一下storagetapper的LockLockstoragetapper/lock/lock.go {代码...} Lock接口定义了TryLock、TryLockShared、Lock、Refresh、Unlock、Close方法myLockstoragetapper/lock/lock.go {代码...} myLock定义了conn、connID、name、db.Addr、n、mu、isLocked属性,它使用db实现了Lock接口;其Lock、TryLock、Try...