架构设计

50 篇文章

领域驱动设计:三个问题思考实体和值对象

2017-08-23 17:06 架构设计 领域驱动设计

消息场景:用户 A 发送一个消息给用户 B,用户 B 回复一个消息给用户 A。。。 现有设计:消息设计为实体并为聚合根,发件人、收件人设计为值对象。 三个问题: 1. 实体最重要的特性是什么? 2. Message 实体是怎么得来的? 3. 发件人、收件人为什么不是实体? 1. 实体最重要的特性是什么? 《领域驱动设计》5.2 实体: >...

阅读全文

使用DDD来构建你的REST API,而不是CRUD

REST围绕着资源这个概念而构建的,然后用URI来表示。然后一个HTTP动词和资源URI组合起来对指定资源进行HTTP调用来执行操作。大多数REST框架提供了指定资源名称的生成器,框架围绕着它来生成脚手架。不幸的是,许多这些生成器使用CRUD模型(Create,Read, Update, Delete)作为默认的起始点。资源被定义为一系列的属性,使用类似JSON...

阅读全文

再谈领域事件

2017-08-19 16:42 架构设计

我以前写过一篇关于领域事件的文章——实现领域事件http://blog.didispace.com/impl-ddd-event/,随着在项目中深入的使用DDD架构,我对领域事件有了新的认识。尤其是采用领域事件来解耦代码这种方式对项目的发展具有深远的影响。 我在实现领域事件http://blog.didispace.com/impl-ddd-event/中主要谈到了如何在技术层面去实现发布事件与订...

阅读全文

实现领域事件

2017-08-18 16:28 架构设计

当你的系统或者业务变得日益复杂时,DDD的模式是一种非常值得尝试的架构模式。DDD让你更加关注于你的业务领域,思考你的业务模型,帮组你理清繁杂的业务关系。我推荐所有还没有了解过或者接触过DDD的后端工程师都去学习一下该架构模式。本文主要关注DDD中的领域事件,以及一种可能的实践方式。 我们知道领域模型的变化会产生领域事件。例如,用户在完成注册后,系统会发出一封带有确认信息的邮件到用户的邮箱;用户关...

阅读全文

领域驱动设计

关于领域驱动设计 这篇文章参考了Eric Evans《领域驱动设计》一书以及Jimmy Nilsson《以C .NET为例运用领域驱动设计和模式》,二者详细描述了领域驱动设计的核心概念、技术和模式。在某些情况下,直接使用这些书的措辞是有意义的,并且我认为Eric Evans和Jimmy Nilsson也允许我们这么做。 尽管将方法本身呈现出来是很有用的,但是仅仅对方法进行描述,DDD的许多微妙之处...

阅读全文

微服务与API 网关(下)- Kong能为我们做什么?

2017-08-04 16:37 架构设计 微服务 API网关

!https://blog.didispace.com/content/images/posts/hzf-ms-apigateway-2-1.png > 本系列内容是来自Mashape.com的Marco在nginx.conf上的一次演讲。 > > 上一集我们介绍了为什么我们需要API网关:微服务与API 网关(上): 为什么需要API网关?http://blog.didispace.com/hz...

阅读全文

微服务与API网关(上): 为什么需要API网关?

2017-07-27 16:37 架构设计 微服务 API网关

!https://blog.didispace.com/content/images/posts/hzf-ms-apigateway-1-1.png > 本文是来自于Macro在一次大会上的一个分享。 > > 本系列共有两个部分,主要关注我们如何以及为什么要在我们的微服务应用中部署API 网关。第二部分主要关注我们如何把Mashape的开源网关组件Kong运用到我们自己的微服务架构当中。 目录...

阅读全文

领域驱动设计和Spring(翻译)

介绍 这篇文章是的介绍一下领域驱动设计的基础构件、概念和Java的web应用(主要是基于Spring框架)之间的关系和区别。这篇文章的第二部分讲了怎么把实体、聚合根、仓储映射到使用Spring框架的Java应用中。 领域驱动设计 Eric Evans的《领域驱动设计》无疑是软件设计领域最重要的几本书之一。这本书主要集中在软件开发中如何处理领域和软件的映射关系— 开始强调领域通用语言domain...

阅读全文

多研究些架构,少谈些框架(1) -- 论微服务架构的核心概念

2017-07-19 19:14 架构设计 微服务

微服务架构和SOA区别 微服务现在辣么火,业界流行的对比的却都是所谓的Monolithic单体应用,而大量的系统在十几年前都是已经是分布式系统了,那么微服务作为新的理念和原来的分布式系统,或者说SOA(面向服务架构)是什么区别呢? 我们先看相同点: - 需要Registry,实现动态的服务注册发现机制; - 需要考虑分布式下面的事务一致性,CAP原则下,两段式提交不能保证性能,事务补偿机制需要考虑...

阅读全文

多研究些架构,少谈些框架(3)-- 微服务和事件驱动

2017-07-19 16:16 架构设计 微服务

接上篇,我们采用了领域驱动的开发方式,使用了充血模型,享受了他的好处,但是也不得不面对他带来的弊端。这个弊端在分布式的微服务架构下面又被放大。 事务一致性 事务一致性的问题在Monolithic下面不是大问题,在微服务下面却是很致命,我们回顾一下所谓的ACID原则 - Atomicity - 原子性,改变数据状态要么是一起完成,要么一起失败 - Consistency -...

阅读全文