尼恩说在前面
在40岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如美团、字节、如阿里、滴滴、极兔、有赞、希音、百度、网易的面试资格,遇到很多很重要的面试题:
微服务如何拆分?
微服务拆分的规范和原则是什么?
谈谈你的DDD落地经验?
谈谈你对DDD的理解?
最近有小伙伴在美团,又遇到了相关的面试题。小伙伴懵了, 当然,面试也就挂了。
这里尼恩给大家做一下系统化、体系化的 DDD、微服务拆分的 梳理,使得大家可以充分展示一下大家雄厚的 “技术肌肉”,让面试官爱到 “不能自已、口水直流”。
也一并把这个题目以及参考答案,收入咱们的 《尼恩Java面试宝典PDF》V128版本,供后面的小伙伴参考,提升大家的 3高 架构、设计、开发水平。
《尼恩 架构笔记》《尼恩高并发三部曲》《尼恩Java面试宝典》的PDF,请到文末公号【技术自由圈】获取
除了本文,尼恩输出了一个 《从0到1,带大家精通DDD》系列,帮助大家彻底掌握DDD,链接地址是:
《阿里大佬:DDD 落地两大步骤,以及Repository核心模式》
《极兔面试:微服务爆炸,如何解决?Uber 是怎么解决2200个微服务爆炸的?》
《阿里大佬:DDD中Interface层、Application层的设计规范》
大家可以先看前面的文章,再来看本篇,效果更佳。
另外,尼恩会结合一个工业级的DDD实操项目,在第34章视频《DDD的顶奢面经》中,给大家彻底介绍一下DDD的实操、COLA 框架、DDD的面试题。
文章目录
微服务设计的规范和原则
单体架构往往以烟筒式方式发展,往往存在两个主要问题:中心化和高耦合。
所谓中心化,就是数据集中存储在单个数据库中,业务系统集中部署在单台服务器上,通过集群部署方式提供服务能力,然而中心化的问题,也就是单点问题。
所谓高耦合,主要是指其中一个功能模块升级,其它的模块都得一起升级。模块依赖度高的本质是架构腐烂。因为本来架构可能就没有设计好,但是,在实际场景中,随着快速迭代开发,研发换了一波又一波,产品走了一茬又一茬,难免系统架构腐化严重。
如何解决单体架构的问题呢? 方案很多,主要有: SOA、微服务架构。
SOA(Service-Oriented Architecture,面向服务的架构)是一种高层级的架构设计理念,可通过在网络上使用基于通用通信语言的服务接口,让软件组件可重复使用。SOA 集成了独立部署和维护的服务,并允许它们相互通信和协同工作,以构建一个跨不同系统的软件应用。
微服务(Microservices)是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块 (Small Building Blocks) 为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关 (Language-Independent/Language agnostic)的API集相互通信。
2014年,Martin Fowler 与 James Lewis 共同提出了微服务的概念,定义了微服务是由以单一应用程序构成的小服务,自己拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用HTTP API通信。同时服务会使用最小的规模的集中管理 (例如 Docker) 能力,服务可以用不同的编程语言与数据库等组件实现。
如何 做单体架构 到微服务架构的升级呢?
1.准备好微服务治理基础设施
微服务首先需要有微服务基础设施,没有微服务基础设施,实践微服务就是一场灾难。

注意:请点击图像以查看清晰的视图!
2.单一责任原则(SRP)
SRP是微服务架构重要的原则。
每个微服务都应该负责一个单一的业务,并确保做好这个业务,这个业务粒度的大小取决于你对业务和架构综合考虑。
SRP能够确保微服务职责单一性、功能完整性拆分, 这样,就便于维护、测试和部署。

注意:请点击图像以查看清晰的视图!
3.松耦合原则
什么事松耦合:松耦合是指每个微服务都应该是独立的,并通过API与其他服务进行通信。
松耦合的优势:可以降低 级联故障 的风险,也可以提高服务可扩展性,提高微服务的可复用性。
尽量做彻底解耦,包含数据库层的解耦:
- 数据库层的解耦,就是避免一个微服务与其他微服务共享数据库,因为这可能会导致数据不一致,并且会使故障排查变得非常困难。
- 每个微服务也都应该只管理自己的数据,每个微服务都有自己的数据库来存储数据,以确保可扩展性和可靠性。
在设计微服务时,应该专注于创建小型、松散耦合和高度内聚的服务。

注意:请点击图像以查看清晰的视图!
4.领域驱动原则,不数据驱动原则,也不是界面驱动原则
DDD是一种软件设计方法,它专注于特定业务领域的软件设计。
微服务架构、微服务设计非常适合采用DDD,为啥呢?
因为每个服务都可以设计为特定业务领域的具体实现。

本文详细阐述了微服务架构中的拆分规范、DDD原则,包括单一责任原则、松耦合、领域驱动等,以及如何通过微服务治理基础设施、监控和CI/CD提升工程效能。作者还分享了如何避免‘微服务小泥球’问题,并提供了面试准备建议和实用资源链接。
最低0.47元/天 解锁文章
396

被折叠的 条评论
为什么被折叠?



