消息场景:用户 A 发送一个消息给用户 B,用户 B 回复一个消息给用户 A。。。 现有设计:消息设计为实体并为聚合根,发件人、收件人设计为值对象。 三个问题: 1. 实体最重要的特性是什么? 2. Message 实体是怎么得来的? 3. 发件人、收件人为什么不是实体? 1. 实体最重要的特性是什么? 《领域驱动设计》5.2 实体: >...
阅读全文REST围绕着资源这个概念而构建的,然后用URI来表示。然后一个HTTP动词和资源URI组合起来对指定资源进行HTTP调用来执行操作。大多数REST框架提供了指定资源名称的生成器,框架围绕着它来生成脚手架。不幸的是,许多这些生成器使用CRUD模型(Create,Read, Update, Delete)作为默认的起始点。资源被定义为一系列的属性,使用类似JSON...
阅读全文!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...
阅读全文!https://blog.didispace.com/content/images/posts/hzf-ms-apigateway-1-1.png > 本文是来自于Macro在一次大会上的一个分享。 > > 本系列共有两个部分,主要关注我们如何以及为什么要在我们的微服务应用中部署API 网关。第二部分主要关注我们如何把Mashape的开源网关组件Kong运用到我们自己的微服务架构当中。 目录...
阅读全文介绍 这篇文章是的介绍一下领域驱动设计的基础构件、概念和Java的web应用(主要是基于Spring框架)之间的关系和区别。这篇文章的第二部分讲了怎么把实体、聚合根、仓储映射到使用Spring框架的Java应用中。 领域驱动设计 Eric Evans的《领域驱动设计》无疑是软件设计领域最重要的几本书之一。这本书主要集中在软件开发中如何处理领域和软件的映射关系— 开始强调领域通用语言domain...
阅读全文微服务架构和SOA区别 微服务现在辣么火,业界流行的对比的却都是所谓的Monolithic单体应用,而大量的系统在十几年前都是已经是分布式系统了,那么微服务作为新的理念和原来的分布式系统,或者说SOA(面向服务架构)是什么区别呢? 我们先看相同点: - 需要Registry,实现动态的服务注册发现机制; - 需要考虑分布式下面的事务一致性,CAP原则下,两段式提交不能保证性能,事务补偿机制需要考虑...
阅读全文接上篇,我们采用了领域驱动的开发方式,使用了充血模型,享受了他的好处,但是也不得不面对他带来的弊端。这个弊端在分布式的微服务架构下面又被放大。 事务一致性 事务一致性的问题在Monolithic下面不是大问题,在微服务下面却是很致命,我们回顾一下所谓的ACID原则 - Atomicity - 原子性,改变数据状态要么是一起完成,要么一起失败 - Consistency -...
阅读全文