DDD 是如何解决微服务拆分的难题

## DDD 是如何解决微服务拆分的难题 将微服务落地到具体的业务中,真正的难题是`微服务按照说明原则拆分、如何拆分以及会面对哪些潜在风险` > 微服务的拆分原则--“小而专”即微服务内高内聚、微服务间低耦合 > > 微服务的高内聚:就是单一职责原则,将代码修改的范围缩小到这个微服务内 > > 微服务间低耦合:在微服务实现自身业务的过程中,如果需要执行的某些过程不是自己的职责,

- 阅读全文 -

如何开事件风暴会议

## 如何开事件风暴会议 微服务设计最核心的难题是`微服务拆分`,要讲究“小而专”的设计,要“低耦合、高内聚”。这里以在线订餐系统项目来进行实战邻域模型设计。 ![image-20210904153156351](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/image-20210904153156351.png

- 阅读全文 -

限界上下文

## 限界上下文 在软件设计中,复杂系统中包含了那么多的场景,每个场景都包含了那么多的邻域对象,并且每个邻域对象中还存在那么多的复杂关系,我们对系统的领域模型该如何设计? ### 问题域和限界上下文 首先,我们应该将整个系统划分成许多相对独立的业务场景,在一个个的业务场景中进行邻域分析与建模,这样的业务场景称之为“问题子域”,简称“子域”。 邻域驱动核心的设计思想--将对软

- 阅读全文 -

聚合、仓库与工厂

## 聚合、仓库与工厂 [TOC] 领域模型的最终设计可以落实到服务、实体和值对象 ### 服务 标识的是在领域对象之外的操作与行为,接收用户的请求和执行某些操作 当用户在操作界面中进行操作时,会向系统发送请求,“服务”去接收用户的这些请求,让后根据需求去执行相应的方法,所有操作都完成后,再将实体或值对象中的数据持久化到数据库中 ### 实体 通过一个唯一标识

- 阅读全文 -

领域模型落地数据库设计

## 领域模型落地数据库设计 > 早期的系统软件设计流程是以数据库为核心,当需求确定下来后,团队首先对数据库进行设计,通过数据库表作为模块接口,在数据库设计的过程中就尽量不要让模块接口存在交互,从而达到独立开发的效果。 > > 如果先进行数据库设计,但数据库设计只能描述数据结构,而不能描述系统对这些数据结构的处理。 ### 面向对象的软件系统设计流程图 ![系统设计流程图](

- 阅读全文 -

如何保持低成本维护与高质量的设计

## 如何保持低成本维护与高质量的设计 > 先推荐一本书《领域驱动设计:软件核心复杂性应对之道》。 在过去的开发初期软件系统并没有那么复杂,即使软件维护了几年,软件退化,软件变得越来越不好维护,推到重新开发就好。随着软件行业的快速发展,软件规模越来越大,生命周期也越来越长,推到重新开发的风险越来越大,这里时候软件团队急需一个低成本的状态下去持续维护一个系统很多年。 这个时候微服务

- 阅读全文 -

Jenkins 搭建与使用

## Jenkins 搭建与使用 ### Jenkins 定义 Jenkins 是一个开源那软件项目,目的是提供一个开放易用的软件平台,使用软件的持续集成变成可能。 Jenkins 是用于 Java 开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1. 持续的软件版本发布/测试项目 2. 监控外部调用执行的工作 > 简单的理解 > > 1.

- 阅读全文 -

DOClever docker搭建与使用

## DOClever docker搭建与使用 ### 搭建环境 - MongoDB - docker ### 安装MongoDB(已安装跳过) ```shell # 拉取 mongo 镜像 $ docker pull mongo # 创建 mongodb 数据保存目录 $ mkdir /var/mongodata # 创建并运行 m

- 阅读全文 -

Axure 入门使用-母版与中继器

## Axure 入门使用-母版与中继器 一个好的产品设计,需要产出页面的原型图、压面的流程图和说明文档,避免一句话的需求。 这里简单的了解一下原型产出的产品工具 Axure,其他的工具 Ps、墨刀、蓝湖等,就自行了解。 ### 开发环境 - Axure 9 beta - windows 10 ### 软件的安装 安装流程参考如下(以下的软件是已经通过注册码验

- 阅读全文 -

java实现超低延迟 webrtc 直播

## java实现超低延迟 webrtc 直播 [TOC] 通过转化 RTSP/ RTMP 视频流为 webrtc 推送到云端,实现超低延迟的视频直播,涉及到许多计算机网络的知识,这里就不深入讲解,感兴趣的可以自行研究。 ### 环境描述 **软件环境** - JDK 1.8 - kurento - RabbitMQ - coturn **硬件环境**

- 阅读全文 -