
领域驱动设计-DDD
文章平均质量分 93
结合对领域驱动设计理念的理解以及在每个微服务中的实践。总结关于DDD的一些实践心得。
智秒数服.未闻
camping~candy
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基于Redis实现分布式锁-Redisson使用及源码分析
在分布式场景下,有很多种情况都需要实现最终一致性。在设计远程上下文的领域事件的时候,为了保证最终一致性,在通过领域事件进行通讯的方式中,可以共享存储(领域模型和消息的持久化数据源),或者做全局XA事务(两阶段提交,数据源可分开),也可以借助消息中间件(消费者处理需要能幂等)。通过Observer模式来发布领域事件可以提供很好的高并发性能,并且事件存储也能追溯更小粒度的事件数据,使各个应用系统拥有更好原创 2016-04-14 13:40:26 · 34758 阅读 · 9 评论 -
基于docker-swarm搭建持续集成集群服务
前言本文只为自己搭建过程中的一些简单的记录。如果实践中有疑问,可以一起探讨。 为了能在本机(macOS)模拟集群环境,使用了vb和docker-machine。整体持续集成的几个机器设施如下: 服务节点:三个manager节点,一个worker节点。manager需要占用更多的资源,manager配置尽量高一些。swarm的manager节点的容错率是 (N-1)/2 。N是mana原创 2016-12-18 17:39:02 · 22111 阅读 · 0 评论 -
基于Docker的微服务架构的企业级服务集群实践(一)——服务发现
前言基于Docker的容器技术是在15年的时候开始接触的。两年多的时间,作为一名Docker的DevOps,也见证了Docker的技术体系的快速发展。本文主要是结合在公司搭建的微服务架构的实践过程,做一个简单的总结。希望给在创业初期探索如何布局服务架构体系的DevOps,或者想初步了解企业级架构的同学们一些参考。(PS:本来想一口气写完,但发现一个模块就写了太久,后续会持续更新。原创 2018-05-31 09:52:48 · 6259 阅读 · 0 评论 -
基于Docker的微服务架构的企业级服务集群实践(二)——服务间通信
服务间的IPC机制按照微服务的架构体系,解决了服务发现的问题之后。就需要选择合适的服务间通信的机制。如果是在Springboot应用中,使用基于Http协议的REST API是一种同步的解决方案。而且Restful风格的API可以使每个微服务应用更加趋于资源化,服务化的松耦合思想靠近。 如果每个微服务是使用DDD的思想的话,那么需要每个微服务尽量不使用同步的RPC机制。异步的基于消息的方式比原创 2018-05-31 09:53:00 · 3384 阅读 · 0 评论 -
基于Docker的微服务架构的企业级服务集群实践(三)——API Gateway的使用
使用API Gateway处理微服务请求转发、合并前面两篇Docker微服务的服务发现以及Docker微服务的服务间通信机制。主要介绍了如何解决微服务的服务发现和通信问题。 在微服务的架构体系中,为了减少服务间的耦合,在划分服务间的限界上下文的时候。会尽量减少微服务之间的 调用。在实际的需求场景中,往往要同时请求多个微服务资源。 解耦微服务的调用如下面一个场景,”用户订原创 2018-05-31 09:53:16 · 4923 阅读 · 2 评论 -
基于Docker的微服务架构的企业级服务集群实践(四)—— 持续集成部署
微服务的持续集成部署前三篇主要介绍了微服务的服务发现、服务通信以及API Gateway。整体的微服务架构的模型初见。在实际的开发、测试以及生产环境中。使用Docker实现微服务,集群的网络环境会更加复杂。微服务架构本身就意味着需要对若干个容器服务进行治理,每个微服务都应可以独立部署、扩容、监控。本篇会继续探讨如何进行Docker微服务的持续集成部署。 镜像仓库用Docke原创 2018-05-31 09:53:28 · 4645 阅读 · 0 评论 -
基于Docker的微服务架构的企业级服务集群实践(五)—— 服务集群
服务集群的解决方案企业在实践使用Docker部署、运行微服务应用的时候,无论是一开始就布局微服务架构,或者从传统的单应用架构进行微服务化迁移。都需要能够处理更复杂的集群中的服务调度、编排、监控等问题。下面主要为大家介绍在服务集群下,如何更安全、高效得使用Docker,以及在架构设计上,需要考虑的方方面面。 负载均衡这里说的是集群中的负载均衡,如果是纯服务端API的原创 2018-05-31 09:53:39 · 2644 阅读 · 0 评论 -
SpringData3.x以及SpringBoot2集成Elasticsearch5.x
说明关于如何在SpringBoot 1.x 的版本中集成Elasticsearch 2.x可以参考前文Elasticsearch实践(二)在Springboot微服务中集成搜索服务。2017年底,SpringData项目终于更新了Elasticsearch5.x版本的对应release版本:3.0.2.RELEASE。本文结合一个本地的示例,对于ES版本升级进行简单介绍。目前ES已经出到了6.原创 2018-01-26 11:14:50 · 15919 阅读 · 1 评论 -
领域驱动设计整理——概念&架构
领域、子域、限界上下文DDD(Domain-Drive Design)的概念或者说业界的声音其实可以追溯到几十年前了。最近开始想要系统得整理一下DDD的一些东西。这一篇是一个简单的引子,也是mark一下自己接触到的概念和理解。 对于领域的概念其实很好理解,就如字面意思一样,比如出版书籍领域,广告设计领域。圈定了一定的范畴,并且在这个范畴内,所有团队成员对于某一概念的理解是一致的。比如书籍就是我们需原创 2015-12-13 16:53:15 · 21948 阅读 · 0 评论 -
领域驱动设计整理——实体和值对象设计
实体引言在领域驱动设计里,实体的设计可以说是通用语言的核心,也是最开始在模型划分中需要考虑的。怎么样设计实体和怎么样划分限界上下文同样重要。实体的概念就是要保证通用语言的完整性。领域驱动让设计实体的关注点从数据的属性和表的关联转化到了富有行为的领域概念上。 实体是具有可变性的,这是一个和值对象比较明显的区分,也即实体是可以持续得变化,持续得修改,并且具有唯一的标识。在设计实体的时候需要跳出CRUD的原创 2016-01-10 21:49:10 · 22695 阅读 · 0 评论 -
领域服务、领域事件
综合前两篇总结,这篇对领域服务和领域事件做一个梳理。先说明下本文的领域服务和应用服务。SOA服务,或者应用间的RPC调用,Restful接口,或者通过消息中间件进行系统间的交互的,都可以归类为应用服务。相较之下,领域服务不一定涉及到远程调用或者重量级事务操作。所以上下文集成也就涉及到,怎样的方式去划分限界上下文,怎么样设计才能尽量减少应用服务的耦合,以及应用服务对于本地模型的防腐。领域服务概念借用《原创 2016-03-12 19:19:09 · 23315 阅读 · 0 评论