现代微服务架构是事件驱动的,反应式的和编排的(与通过协调器进行的集中控制相反),这使它们可以松散耦合并且易于更改,对吗?
TL; DR:哦,不!您将在理解和管理事件流中遇到障碍。
在本文中,我将总结我在微服务编排方面的经验,并指出这种方法的各种障碍和含义。我使用的是一个典型的业务示例- “客户入职”流程(取决于行业,您可能会在开设帐户时听说过)。对于下面介绍的事件队列,我使用的是Apache Kafka,但是请不要担心如果使用其他堆栈,则将应用相同的概念。
微服务编排
假设以下服务和事件构成了您的编排系统:
使用此方法时出现的主要障碍可以通过以下问题来描述
- 如何更改事件流程?
- ? ?
- SLA ? - ? ? ?
- (, )?
, .
, . - . , , .
.
, , . :
. , .
. , . , . - .
?
, . - « », , . : “ ”, : “, , , ”. “ ‘ ’?”:
, . , , . , , . , — , . , , , . , , .
InfoQ (. “ ”) :
- ( Zipkin Jaeger)
- ( Elastic)
- ( ProM)
- ( Camunda)
, , , . . . Elastic — , . , - . , .
.
“ ” .
.
SLA, :
:
: ? ( ), .
, :
, :
Kafka Summit San Francisco 2018 (. “ Kafka Zeebe”), .
. “: .”
, , .
SLA
. ?
, . , . ( “ ” QCon London; . “ BPM ”).
(Java Spring Boot) “3 ”, Camunda, , ( GitHub). , .
, , . - ! , SLA , SLA.
, .
. “ ”. , ! . , -, -. .
“ ”, - , , , - , .
, . , . , , .
, , , , .
, , “” SOA BPM. . . , . , , GitHub.
, :
- , , “ ”. , . .
- , . , API . , , .
. , , -, .
. , , — , . , : . , , .
这篇文章最初发表在InfoWorld上。我最近还在QCon NYC (演示文稿)上就此主题进行了演讲。