【架构师】微服务的拆分有哪些原则?

简介: 微服务拆分需遵循七大原则:职责单一、围绕业务、中台化公共模块、按系统保障级别分离、技术栈解耦、避免循环依赖,并遵循康威定律使架构与组织匹配,提升可维护性与协作效率。

一百个架构师眼中,有100种微服务拆分的方式,那么我简单总结几个我在做类似的事情的时候会参考的一些原则:


1、职责。我们学面向对象的第一天,就被告知要职责单一,而一个微服务也一样,他应该聚焦于一件事儿,否则他就不够"微",至少在电商中,我们要把用户和交易拆分开。


2、业务。我们说技术是为了业务服务的,所以微服务的构建需要围绕着业务来做,不同的业务需要独立出来,比如保险业务中,投保和理赔,就是不同的业务,那么就可以把他们拆分开。


3、中台化。当我们在做业务拆分、职责划分后,可能会有一些公共的部分,这部分内容分别在各自微服务实现一份也可以,单独独立出来也是可行的,所以如果考虑中台化的思想,一些公共的部分,是可以独立拆分出来的。


4、系统保障。在做微服务拆分的时候,可能需要根据不同的系统保障级别做拆分,比如秒杀和日常交易,就可以单独拆开,针对秒杀做单独的可用性保障。还有一种就是在线任务和离线任务,也是可以拆分开的,各自做可用性保障。


在线任务:就是你应用中一直都在运行的任务,比如你的订单系统,他的下单、退款正常这些操作都是在线任务。

离线任务:一般是那种异步扫表、或者定时执行的任务,比如订单的到期关闭等。


5、技术栈。要考虑技术栈,不同的技术栈,不要硬往一起融,最后只会让这个系统无法维护。


6、依赖关系。拆分之后,各个微服务之间,不要有循环依赖。依赖应该是单向的,而不是循环的,循环依赖会给服务治理,链路追踪带来很大的挑战,并且存在循环依赖一定是拆分的不够合理。


7、康威定律。最后一点,康威定律,应用架构要和组织架构一一对应。组织架构决定了业务架构、应用架构。说白了,就是多个团队一起维护一个微服务,一定会在沟通、(发布)冲突、谁来干等问题。

目录
相关文章
|
5月前
|
消息中间件 架构师 Kafka
【架构师】如何做技术选型?
技术选型无绝对优劣,关键在于“更合适”。需综合评估功能满足度、可扩展性、安全性、性能等非功能性需求,同时考量使用人数、社区活跃度、迭代速度、学习与维护成本,以及与现有技术体系的匹配度,权衡利弊后做出最优选择。
252 4
|
5月前
|
消息中间件 存储 负载均衡
【高可用】什么是异地多活、同城容灾?
异地多活与同城容灾均为提升系统高可用的分布式架构。前者实现跨地域数据中心实时同步与故障切换,保障全球服务连续性;后者聚焦同城内快速容灾,通过高速网络实现低延迟、高可靠的数据同步与负载均衡,适用于对延迟敏感的业务场景。
311 11
|
5月前
|
消息中间件 架构师 Java
【Java架构师】各个微服务之间有哪些调用方式?
微服务拆分后需跨进程通信,常见方式包括HTTP调用(如RESTful、OpenFeign、@HttpExchange)、RPC框架(如Dubbo、gRPC、Thrift)、消息队列(如Kafka、RabbitMQ)及服务网格(如Istio)。不同场景下可依据性能、异步、跨语言等需求选择合适方案。
1132 0
|
5月前
|
Java Spring
IDEA调出services窗口
本教程分两步指导:首先点击指定选项,然后在Templates中添加Spring Boot并应用,即可调出services窗口,快速完成配置。
339 11
|
5月前
|
Java Nacos Sentinel
Spring Cloud Alibaba 深度实战:Nacos + Sentinel + Gateway 整合指南
本指南深入整合Spring Cloud Alibaba核心组件:Nacos实现服务注册与配置管理,Sentinel提供流量控制与熔断降级,Gateway构建统一API网关。涵盖环境搭建、动态配置、服务调用与监控,助你打造高可用微服务架构。(238字)
1697 10
|
5月前
|
缓存 监控 Java
拆解一个真实电商项目:微服务架构中的服务治理与性能优化
本课程以母婴电商重构为背景,系统讲解微服务架构落地实践。涵盖服务拆分、Nacos治理、分布式缓存、事务、限流熔断等核心问题,结合Spring Cloud Alibaba技术栈,提供完整项目代码与40小时实战视频,助力开发者掌握从单体到分布式架构的演进能力。
198 14
|
5月前
|
XML Java 开发者
springboot自动装配的基本原理
Spring Boot自动装配基于“约定大于配置”理念,通过@SpringBootApplication、@EnableAutoConfiguration与spring.factories机制,结合条件注解实现智能Bean加载。它根据依赖自动配置组件,大幅简化开发。其核心是AutoConfigurationImportSelector筛选符合条件的配置类,实现按需装配。开发者可专注业务,享受“开箱即用”的便捷体验。(238字)
|
8月前
|
消息中间件 自然语言处理 运维
微服务不是银弹!这4个设计原则让你少踩90%的坑
本文深入解析微服务架构与领域驱动设计(DDD)的核心理念与实践方法,帮助开发者正确拆分服务边界,避免常见误区,提升系统可维护性与扩展性,适用于复杂业务场景下的高效开发与团队协作。
852 1
|
9月前
|
消息中间件 缓存 监控
MQ消息积压 / Rocketmq 积压 最全的处理方案。 (秒懂+图解+史上最全)
MQ消息积压 / Rocketmq 积压 最全的处理方案。 (秒懂+图解+史上最全)
MQ消息积压 / Rocketmq 积压 最全的处理方案。 (秒懂+图解+史上最全)
|
5月前
|
开发框架 Java 测试技术
领域驱动设计(DDD)在中小型项目中的落地实践
本文探讨领域驱动设计(DDD)在中小型项目中的落地实践,涵盖核心概念如领域模型、聚合、限界上下文与事件驱动架构,并结合电商订单系统案例,展示分层架构、仓储模式与领域服务的实际应用,助力团队构建高内聚、易维护的业务系统。
1087 10