知识卡片

服务化架构的两类服务

专业/工作 · 517.k

内容

云原生应用不一定非要是微服务——设计的核心单元可以泛化成”服务”和”交互”两个元素,不预设服务粒度大小。服务按是否持有状态分两类:应用服务无状态、只负责逻辑,一个库存管理应用是典型例子;数据服务有状态、负责持久化,一个 PostgreSQL 数据库是典型例子。服务间如何交互(同步 HTTP 请求/响应,还是异步消息)会直接决定系统的韧性水平,这是架构设计里独立于”要不要拆微服务”的另一个维度。发散:把”要不要拆细粒度服务”和”服务间怎么交互”分成两个正交的决策维度,能避免很多团队把微服务化和消息驱动化捆绑成一个不可分割的决定,其实这是两件可以分开权衡的事。

参考来源

《Cloud Native Spring in Action》第1章《Introduction to cloud native》