跳至主要內容
微服务拆分实操:用什么原则划边界

前言

"微服务"这三个字在技术圈已经热了十多年,但"怎么拆"始终是最困扰架构师的问题。拆得太粗——换了个壳的单体;拆得太细——运维成本爆炸,调试像噩梦。

本文不讲微服务的基础概念(假设你已经知道什么是微服务),聚焦于一个核心问题:面对一个单体系统,你该用什么原则来划边界?


第一部分:单体架构的痛点与拆分的时机

1.1 单体不是原罪

在谈拆分之前,必须明确一个观点:单体架构不是原罪。很多成功的系统——包括 GitHub 早期、Stack Overflow——都是单体架构。单体的问题不在于"它是单体",而在于"它何时变得不可维护"。


郑天祺大约 18 分钟架构设计微服务架构服务拆分DDD分布式
系统设计实战:担保业务核心系统架构设计

前言

担保业务系统是典型的金融核心系统,对数据一致性、高可用、风控合规有极高要求。本文将分享一套经过实践验证的担保核心系统架构方案,从业务流程到技术选型,帮助你理解"金融级"系统是如何设计的。


第一部分:担保业务核心流程

1.1 业务流程全景

担保业务全生命周期:

申请阶段          审批阶段          签约阶段          保后管理
  │                │                │                │
  ▼                ▼                ▼                ▼
┌──────┐  ┌────────────┐  ┌────────────┐  ┌─────────────┐
│客户  │  │风控审核     │  │电子签约     │  │还款跟踪      │
│提交  │→│·反欺诈检查  │→│·合同生成   │→│·还款提醒    │
│担保  │  │·信用评估    │  │·客户签署   │  │·逾期监控    │
│申请  │  │·额度审核    │  │·担保生效   │  │·代偿处置    │
└──────┘  │·人工复核    │  └────────────┘  │·追偿管理    │
          └────────────┘                   └─────────────┘

放款环节:
┌──────┐    ┌──────────┐    ┌─────────┐
│银行  │←──→│ 担保公司  │──→│ 客户    │
│放款  │    │ 收取保费  │    │ 获得贷款│
└──────┘    └──────────┘    └─────────┘

郑天祺大约 13 分钟架构设计架构设计担保业务微服务高可用分布式事务
SpringCloud client配置

1、pom.xml添加starter依赖

<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-alibaba-nacos-config -->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

郑天祺小于 1 分钟springSpringCloud配置微服务
SpringCloud异常配置

1.【强制】Java 类库中定义的可以通过预检查方式规避的 RuntimeException 异常不应该通过catch 的方式来处理,比如:NullPointerException,IndexOutOfBoundsException 等等。
说明:无法通过预检查的异常除外,比如,在解析字符串形式的数字时,不得不通过 catch NumberFormatException 来实现。
正例:if (obj != null) {...}
反例:try { obj.method(); } catch (NullPointerException e)


郑天祺大约 4 分钟springSpringCloud异常处理微服务
SpringCloud服务注册

1、pom.xml添加starter依赖

<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-alibaba-nacos-discovery -->
		<dependency>	
            <groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
		</dependency>


郑天祺小于 1 分钟springSpringCloud服务注册微服务
SpringCloud服务消费

基于Alibaba Nacos Spring Cloud(服务发现)、Spring Cloud OpenFeign(声明式调用,同时整合了熔断器、负载均衡)

1、pom.xml添加starter依赖

		<!-- Nacos服务发现 -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
		</dependency>
        <!-- 声明式调用 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
		<!-- 负载均衡 -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
		</dependency>
		<!-- 熔断器 -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
		</dependency>

郑天祺大约 2 分钟springSpringCloud服务消费微服务