博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分解模式 - 按业务领域分解模式划分微服务
阅读量:7115 次
发布时间:2019-06-28

本文共 823 字,大约阅读时间需要 2 分钟。

本文说明如何通过业务领域分析和DDD将大型复杂的应用程序划分为一组微服务。

场景

使用微服务架构开发一个大型复杂的应用程序,我们需要将应用程序细致,合理地分解为一组松散耦合的微服务。微服务架构的目标是通过实现持续交付/部署来加速软件开发。

1428428-20180713153946661-2064758226.png

目标

  • 架构必须稳定;
  • 服务必须高内聚 - 服务应该实现一小组强相关的功能;
  • 服务必须符合开闭原则 - 将一同变更的内容打包在一起,以确保每个更改仅影响一个服务;
  • 服务必须松耦合 - 每个服务都可以在不影响客户端的情况下更改实现;
  • 服务应该是可测试的;
  • 每项服务都小到足以由“两个披萨”团队开发,即一个6-10人的团队;
  • 负责一个或多个服务的每个团队必须是自治的 - 团队能够在与其他团队尽量少的协作下,来开发和部署他们的服务。

方法

通过领域驱动设计(DDD),设计与 子域 相对应的服务。DDD通过分析问题空间和业务逻辑,将应用程序定义为域。域由多个子域组成。每个子域对应于业务的不同部分。

子域可分为以下几类:

  • 核心类 - 业务的关键差异化因素和应用程序中最有价值的部分;
  • 支持类 - 与业务有关,但与差异化无关;这些可以在内部实施或外包;
  • 通用类 - 与业务无关,理想情况下可以使用现成的软件实现。

例子

一个在线商店的子域包括:

  • 产品目录
  • 库存管理
  • 订单管理
  • 交货管理

相应的微服务架构中,每一个子域将对应一个微服务。

1428428-20180713161851683-1038502076.png

优点

  • 由于子域相对稳定,因此具有稳定的体系结构;
  • 开发团队能有效隔离业务逻辑和技术框架;
  • 服务具有高内聚和松耦合。

问题

如何识别子域?

识别子域需要了解业务。通过分析业务及其组织结构来识别不同的专业领域,从而识别子域。这个过程通常需要不断迭代。

识别子域的好思路是:

  • 组织结构 - 组织内的不同分组或部门可能对应于不同子域;
  • 高阶域模型 - 子域通常具有关键域对象。

相关模式

转载于:https://www.cnblogs.com/yorkwu/p/9305276.html

你可能感兴趣的文章
IPHONE 6S电池保护壳丑?漂亮的都有专利了
查看>>
云计算和社交网络将推动美科技业重组
查看>>
浙江乌镇已布500多个人脸识别摄像头;宁波、嘉兴将引入中考英语人机对话考试技术,用机器为考生口语评分...
查看>>
15分钟学会使用Git和远程代码库
查看>>
《OpenStack实战》——1.3 关联OpenStack及其控制的计算资源
查看>>
《C++面向对象高效编程(第2版)》——1.15 小结
查看>>
人工智能悖论:简单的动作比复杂的推理更难以实现
查看>>
《C++游戏编程入门(第4版)》——2.9 使用逻辑运算符
查看>>
PostgreSQL修炼之道:从小工到专家. 2.1 从发行版本安装
查看>>
《Unity 5.x游戏开发实战》一1.2 从头开始——Unity中的项目
查看>>
深入实践Spring Boot1.4.1 在IDEA环境中运行
查看>>
《CUDA高性能并行计算》----1.2 运行我们自己的串行程序
查看>>
《HBase实战》一2.9 小结
查看>>
细说分布式数据库的过去、现在与未来
查看>>
在Linux中使用LVM构建灵活的磁盘存储(第一部分)
查看>>
《21天学通C++(第7版)》——17.1 std::vector的特点
查看>>
《HTML5完美游戏开发》——第1章 Open Web Game王国
查看>>
JDBC案例演示,供参考
查看>>
android守护进程
查看>>
设计模式之适配器模式(adaptor pattern)
查看>>