背景:现在微服务大行其道,虽然微服务开山鼻祖是不建议在微服务下做分布式事务,领域驱动设计早已阐明,具有强一致性要求的一组业务概念,属于同一个聚合,不建议拆到不同服务中,从而尽可能避免分布式强事务一致性的处理。但是不可避免我们没有真的按照DDD领域驱动设计,那么微服务如何保持事务一致性呢?
我们这里采用的EventStore的方式,有基于memory、jpa、jdbc等方式,我今天采用了MapDB framework的方式,MapDB提供多种多样方式的数据结构有link、set、map、queue等。
EventMessage
public interface Message<T> extends Serializable { String getIdentifier(); MetaData getMetaData(); T getPayload(); Class<T> getPayloadType(); Message<T> withMetaData(Map<String, ?> metaData); Message<T> andMetaData(Map<String, ?> metaData); }
MapDB eventStore
/** * Created by Young on 2017/4/11. */ public class MapDBEventStorageEngine implements EventStorageEngine { private final DB db = DBMaker.memoryDB().make(); private static final String ORDER_LINK_LIST = "ORDER_LINK_LIST"; private final Lock lock = new ReentrantLock(); private final Condition dataAvailableCondition = lock.newCondition(); @Override public void appendEvents(List<? extends EventMessage<?>> events) { lock.lock(); try { IndexTreeList<Object> hs = db.indexTreeList(ORDER_LINK_LIST).createOrOpen(); hs.addAll(events); } finally { lock.unlock(); } } @Override public void storeSnapshot(DomainEventMessage<?> snapshot) { } @Override public Stream<? extends TrackedEventMessage<?>> readEvents(TrackingToken trackingToken, boolean mayBlock) { return null; } @Override public DomainEventStream readEvents(String aggregateIdentifier, long firstSequenceNumber) { return null; } @Override public Optional<DomainEventMessage<?>> readSnapshot(String aggregateIdentifier) { return null; } }
相关推荐
mapdb
赠送jar包:mapdb-3.0.5.jar; 赠送原API文档:mapdb-3.0.5-javadoc.jar; 赠送源代码:mapdb-3.0.5-sources.jar; 赠送Maven依赖信息文件:mapdb-3.0.5.pom; 包含翻译后的API文档:mapdb-3.0.5-javadoc-API文档-...
mapdb-1.0.8.jar 免费下载 mapdb
MapDB: database engine MapDB combines embedded database engine and Java collections. It is free under Apache 2 license. MapDB is flexible and can be used in many roles: Drop-in replacement for ...
MapDB操作手册
文本文档的使用对象是MapDB初学者,文档内容包括:MapDB简介、环境搭建和JavaAPI操作,欢迎下载使用。
MapDB,效率非常高,这是到上传时最新的源代码
MapDB is an open-source (Apache 2.0 licensed), embedded Java database engine and collection framework. It provides Maps, Sets, Lists, Queues, Bitmaps with range queries, expiration, compression, off-...
持久化存储的 Map MapDB ,MapDB是一个快速、易用的嵌入式Java数据库引擎,它提供了基于磁盘或者堆外(off-heap允许...
MAPB结合了嵌入式数据库引擎和Java集合。
MapDB:数据库引擎 MapDB结合了嵌入式数据库引擎和Java集合。 根据Apache 2许可,它是免费的。 MapDB是灵活的,可以在许多角色中使用: 可以直接替换地图,列表,队列和其他集合。 不受垃圾收集器影响的堆外收集 ...
赠送jar包:mapdb-3.0.5.jar; 赠送原API文档:mapdb-3.0.5-javadoc.jar; 赠送源代码:mapdb-3.0.5-sources.jar; 赠送Maven依赖信息文件:mapdb-3.0.5.pom; 包含翻译后的API文档:mapdb-3.0.5-javadoc-API文档-...
wcm-io-sling.zip,用于Sling Models的AEM对象注入器。用于Apache Sling功能的wcm.io扩展。
ACID - MapDB 可选择支持具有完全 MVCC 隔离的 ACID 事务。 MapDB 使用预写日志或仅追加存储来实现出色的写入持久性。 灵活 - MapDB 可用于从内存缓存到多 TB 数据库的任何地方。 它还具有许多选项,可以用持久性...
mapdb.sql
该项目旨在成为由 mapdb 支持的 redis 的替代品 服务器/解析是从这个项目分叉出来的: : 后端数据库: : 编译 ./gradlew fatJar 跑步 java -jar build/libs/redis-mapdb-all-1.0.jar -threads 5 选项 Usage: ...
mapdb 由Kaldonis主持的mapdb主要受到善意的地图编辑人员的感动。 2021年4月3日-各种作品 更新了Cysaegir图形,新的Stables房间,超节点标签,固定的RP条目。 更新了Halcyon Hills图形,添加了新房间 所有丢失的信...
这是非官方的扩展和Hazelcast公司内部HZ它将替换不支持ConcurrentHashMap与离堆HTreeMap从 。 它独立于其他非堆解决方案,并且在Apache License 2.0下免费提供,没有附加任何挂钩。 作者研究嵌入式数据库引擎,这...
Neo4j 2.0 MapDB 索引提供程序为 ... 它还支持架构索引提供程序为可重复读取所需的快照。 mvn clean install 这将创建一个 zip 文件: target/mapdb-index-1.0-provider.zip ,您必须将其内容放入 Neo4j 的类路径中。
注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)-英语-对照版.zip】 jar包下载地址:【***.jar下载地址(官方地址+国内镜像地址).txt】 ...