大规模编排与编排的面向服务的架构?

2023-11-25

我是一家大型金融公司的架构师,我们正开始在不同国家实施一个新的面向业务的信息系统。

从一开始,核心思想就是尽可能遵循面向微服务的原则(并确保工程师已阅读 Sam Newman 撰写的《构建微服务》一书).

现在我已经来到了十字路口。我们的服务主要是使用 Swagger 进行自动化文档编写的 JSON REST 服务,但为了在我们的业务流程中使用这些服务并确保不要将业务逻辑写入这些服务域之外的服务中,我们一直在使用 Camunda 作为编排工具。卡蒙达也很好(尽管有些人认为 Corezoid 作为替代方案),但在一套优雅的服务中却显得有些笨拙。

现在,服务编排是大多数工程师都非常熟悉的概念。但我对此并不完全满意,因为仍然有一个驱动一切的中央引擎。以后更换的费用非常昂贵(尽管更换仍然比单体更便宜)。而且即使这个中央引擎被分割成多个引擎(今天的实际情况就是这样),它并不一定会让事情变得更好。

近年来,出现了一场微服务走向精心设计的运动(接近事件驱动)建筑学。正是在这一点上,我正在向面临类似十字路口决策点的工程师和建筑师寻求建议。

我非常喜欢解耦架构的想法,尽管对消除单体并拥有优雅的独立服务感觉很好,但我仍然在当前精心策划的解决方案中检测到业务流程中的许多依赖项,而这些依赖项实际上不应该存在。

我们并不是在逃避事件。我们实际上也在我们的架构上实现了事件,以便将许多流程与核心原则解耦,即如果您不需要同步响应,而只需要通知发生的事情以启动另一个流程,则会发布一个事件,该事件可能是被另一个开始执行的进程捕获。而且编排更容易解释和可视化,更容易由更具技术头脑的业务用户进行调整和修改。而且我认为从业务角度更容易测试和验证。精心策划的架构也是如此(通常)期望良好的服务发现和高质量的自动化文档和非功能性需求,这些都是我非常看重的。

所有这些事情对我来说都是精心设计的方法中的一个问题,因为我没有大规模运行这个的第一手经验 - 只是一些本地测试原型。

但我想你知道我来自哪里。我正在尝试考虑其他选择,而不必后悔最终将公司推向另一条路。

也许您可以分享您自己在类似情况下的经历或分享一两个有趣的链接?或者我正在寻找尚不存在的灵丹妙药?


服务需要交互——不交互的服务不属于同一系统。搜索需要访问目录,购物车无法从页面获取价格信息,帐户需要购买历史记录,推荐者需要购买历史记录,购物车需要验证当前可用的优惠券,库存需要了解一些信息被购买等

设置服务边界是为了最大限度地减少所需的交互。将服务削减为较小的组件是有意义的,但如果它们共享数据库(内部结构),那么它们就会服务的不同方面.

当服务交互时,它会创建一定程度的耦合 - 至少,这种耦合是服务必须“维护”的某个 API(JSON 或其他),以便其他服务可以与其交互。

另一种耦合类型是时间耦合 - 这是您在请求-回复情况下得到的(并且您可以在事件驱动系统中消除)但是,编排与编排与这些差异无关(即使编排主要与请求/回复相关) - 这是关于中央控制和治理与灵活性和偶然性。

编排存在风险,例如将业务逻辑从服务迁移到编排中,而编排则存在混乱的风险。顺便说一句,直接请求/回复集成是两全其美的最糟糕的方法,但当系统足够小时,它会以简单性取胜。

在两者之间进行选择是一种平衡行为(就像大多数架构决策一样),例如,Netflix 在编排上建立了很多时间,但后来发现他们需要一些控制权,并且引入了编排引擎。没有什么是灵丹妙药:)

就我个人而言,我更喜欢编排,因为减少了耦合和灵活性,并喜欢像这样的工具打开拉链为混乱带来一些秩序。

您可以在以下位置查看基于编排的架构的部分示例我所做的有关微服务的演示幻灯片 10-22

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大规模编排与编排的面向服务的架构? 的相关文章

  • 捕获对 ASP.NET ASMX Web 服务的 SOAP 请求

    考虑将传入的 SOAP 请求记录到 ASP NET ASMX Web 服务的要求 任务是捕获发送到 Web 服务的原始 XML 需要记录传入消息以进行调试检查 该应用程序已经使用了自己的日志库 因此理想的用法如下 string or XML
  • 是否可以将 WSDL 与 REST Web 服务结合使用?

    我是网络服务领域的新手 是否可以将 WSDL 与 REST 绑定一起使用 或者我应该使用 WADL 可以将 WSDL 与 REST 绑定一起使用 但这实际上没有必要 REST 的简单性使得编写代码来使用该服务变得非常容易 使用 WSDL 只
  • 如何引用 WEB-INF 中的 client_deploy.wsdd 文件?

    一个基本问题 但我似乎找不到答案 我有一个 Axis 生成的 Web 服务 它还调用另一个 Web 服务 其存根也是使用 Axis 生成的 它部署在weblogic 9 2中 所谓的 Web 服务需要身份验证 我已经用谷歌搜索了设置身份验证
  • 从纬度经度查找时区[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库 或者更好的网络服务 可以将纬度 经度转换为时区 对于我正在从事的一个项目 我相当深入地研究
  • 使用 Copy.CopyIntoItems Web 服务将文件上传到 SharePoint 2010 时收到 400 错误请求

    SharePoint 新手 我尝试使用 Java 的 CopyIntoItems Web 服务方法将文档上传到 SharePoint 但不断收到 400 错误请求 我使用 Java 的 wsimport 从 wsdl 文件生成类文件 这是我
  • 为什么我们需要 RESTful Web 服务?

    我将学习 RESTful Web 服务 最好说我必须这样做 因为它是 CS 硕士学位课程的一部分 我在 Wikipedia 上阅读了一些信息 还在 Sun Developer Network 上阅读了一篇有关 REST 的文章 我发现这不是
  • 在使用实体框架的分层架构中,我应该从 BLL 返回 POCO 类吗? (需要架构指导)

    我可能读得太多了 并且遭受了一些信息超载的困扰 所以我希望得到一些明确的指导 根据我收集的信息 我可以使用 VS2010 的 T4 模板来生成不直接与 EF 绑定的 POCO 类 我会将这些放在他们自己的项目中 而我的 DAL 将有一个 O
  • 如何保护 RESTful Web 服务的安全?

    我必须实施安全RESTful Web 服务 https www ibm com developerworks webservices library ws restful 我已经使用谷歌做了一些研究 但我陷入困境 Options TLS H
  • 有没有办法强制 svcutil.exe 忽略 SSL 证书问题?

    我需要 svcutil exe 为我生成代理类 但问题是 Web 服务只能通过 HTTPS 访问 并且 SSL 证书是自签名的 如何强制 svcutil exe 忽略此问题 似乎有效的一件事是启动 Fiddler 并让它在您发出 SVCUT
  • SQL Server 中数据库数量的实际限制?

    在 stackoverflow 播客之一 我认为是 18 中 Jeff 和 Joel 正在讨论多租户数据库与单租户数据库 Joel 提到 FogBugz on Demand 使用了每个客户架构的数据库 我想知道是否有一个点超过这个点 您将需
  • 将所有代码放入 C++ 头文件中的优点和缺点?

    您可以构造一个 C 程序 以便 几乎 所有代码都驻留在头文件中 它本质上看起来像一个 C 或 Java 程序 但是 您至少需要一个 cppfile 来在编译时拉入所有头文件 现在我知道有些人绝对会讨厌这个想法 但我还没有发现这样做有任何令人
  • Inno Setup - 在文件复制之前正确停止服务

    我们的安装过程包括一个 Windows 服务 如果我们的软件配置为作为服务器安装 相对于客户端安装 则会安装该服务 我添加了服务库 http www sandon it files services unicode iss为了能够管理服务
  • 返回地址预测堆栈缓冲区与堆栈存储的返回地址?

    一直在阅读 Agner Fog 的 Intel AMD 和 VIA CPU 的微架构 他在第 34 页描述了 返回地址预测 http www agner org optimize microarchitecture pdf http www
  • android:web服务图像替换为本地文件夹中的图像

    我进入了 Android 聊天应用程序的最后阶段 我在使用图像和网络服务时遇到了一些问题 因此 当我选择图像并将该图像发送到 Web 服务时 我从服务获取 URL 我如何将该网址转换为本地文件夹中的图像 我很困惑如何才能使其发挥作用 我想在
  • 如何在 spring-ws 中解析 SoapFaultClientException

    我正在使用 spring ws 2 3 1 在为 Web 服务创建客户端时 有时我得到SoapFaultClientException像下面这样
  • 从 C# 应用程序调用 ASP.net Web 服务

    我有个问题 我如何调用 Web 服务并从 C 桌面应用程序获取结果 我正在制作一个桌面应用程序 我希望它能够连接到我的在线 ASP net Web 服务 这怎么可能 在 解决方案资源管理器 中 右键单击项目节点并选择 添加 Service参
  • RESTful API:仅用于验证的方法/标头组合

    我希望我的 API 有一个仅验证请求 例如 如果我有一个 URL 例如 http api somesite com users 12345 用户正在客户端上填写一份信息表单 我最终会将其修补 放置 发布到该资源 当用户填写表单时 我可能希望
  • jquery ajax可以调用外部webservice吗?

    jquery ajax代码可以调用吗网络服务来自另一个域名或另一个网站 像这样 ajax type POST url http AnotherWebSite com WebService asmx HelloWorld data name
  • REST Web 服务 WSDL? [复制]

    这个问题在这里已经有答案了 我正在实现一个 Web 服务 并且已经实现了 REST 和 SOAP 版本 看看哪个版本适合我的需求 我决定选择 REST 因为它很简单 而且我可能会开发一个 iPhone 应用程序来使用它 我的问题很简单 是否
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998

随机推荐

  • es6 导入和导出中的模块说明符

    我对这些语句中的模块说明符所指的内容感到困惑 export bar from foo import bar from foo 什么是 foo 参考 它不能是一个文件 因为它类似于 foo 如果它不是一个文件 我认为它是一个 ID ID是如何
  • 使用给定的字符串查找具有恒定宽度和高度的 UITextView 中适合的字符数?

    在我的应用程序中 如果文本输入很大 我需要将 阅读更多 设置到文本视图中 所以我的方法是找到适合文本视图的字符串范围 并将 查看更多 附加到它 有什么方法可以实现它在 Swift 中 要求是模拟阅读更多选项 以在点击时像 facebook
  • 如何在Python中将一系列浮点值合并到直方图中?

    我有一组浮点值 始终小于 0 我想将其合并到直方图中 IE 直方图中的每个条形都包含值范围 0 0 150 我拥有的数据如下所示 0 000 0 005 0 124 0 000 0 004 0 000 0 111 0 112 通过下面的代码
  • WPF:将变量从父 xaml 传递到用户控件

    我正在尝试将 int 变量从 MainWindow xaml 传递到 UserControl 当我调试时 myGridSize 始终等于零 我将不胜感激任何帮助 主窗口 xaml x Name myWindow gt
  • 已弃用版本的 HighCharts API

    有谁知道自 HighCharts 3 发布以来 HighCharts 2 API 文档是否仍然可以在任何地方在线获取 我还没有升级 我真的可以使用 2 3 5 版本的 API 文档 特别是 我想访问 HighCharts 2 3 5 的导出
  • 如何声明函数并递归使用它而不会“过早调用以检查原型”

    我有一个通用的递归函数 但为什么它在 perl 中没有被授权 sub pv my vars if ref vars eq SNMP Varbind return vars gt tag defined vars gt iid vars gt
  • 模块、依赖项、库、包、组件

    我知道包包含多个模块 但我开始对包和模块是否是依赖项感到困惑 另外 对我来说 库可能看起来像是通过 NPM Nuget RubyGems Bower Homebrew 或 Chocolatey 安装的软件包 那么库也是包吗 依赖项是您需要在
  • Rails - nginx + puma - 提供的教程链接中的 nginx 未提供静态资产

    我正在使用Ubuntu 这里是tutorial 我正在使用的 Nginx 配置 upstream my app server unix home uname railsproject my app sock server listen 88
  • 从 Python >单独启动另一个程序<

    我正在尝试运行一个与 Python 无关的外部程序 通常这不会有问题 但该程序是一个游戏 并且内置了一个 Python 解释器 当我使用 subprocess Popen 时 它会启动单独的程序 但在原始程序的 Python 实例下执行此操
  • Julia 中使用匿名函数的性能损失

    我注意到在 Julia 中使用匿名函数会带来性能损失 为了说明这一点 我有两个快速排序的实现 取自 Julia 发行版中的微观性能基准 第一个按升序排列 function qsort a lo hi i j lo hi while i lt
  • time.time 与 timeit.timeit

    有时 我喜欢计算部分代码的运行时间 我检查了很多在线网站 大致上看到了两种主要方法 一种正在使用time time另一个正在使用timeit timeit 因此 我编写了一个非常简单的脚本来比较两者 from timeit import t
  • Google 脚本仅在工作日触发

    我有一个用 Google 文档创建的工具 其中一部分是我每天上午 11 点备份一组数字 我用它来创建一个图表来显示一段时间内的进度 我使用触发器运行此脚本 该触发器设置为每周备份一次数据 我真正想做的只是在工作日备份这些数据 因为周末的数据
  • 集群环境下运行的Spring定时任务

    我正在编写一个应用程序 它有一个每 60 秒执行一次的 cron 作业 该应用程序配置为在需要时扩展到多个实例 我只想每 60 秒在 1 个实例上执行该任务 在任何节点上 我找不到开箱即用的解决方案 而且我很惊讶以前没有多次询问过这个问题
  • 如何获取字符串中给定名称的变量的值? [复制]

    这个问题在这里已经有答案了 为简单起见 这是我想要做的事情的精简版本 def foo a I want to print the value of the variable the name of which is contained in
  • 修复了位置在 Windows Safari 上不起作用的问题

    我的画廊有问题 位置 固定 并且网站内容正在其上滚动 该位置固定在每个浏览器中都有效 除了 Windows 7 上的 Safari 是的 它甚至在 IE8 和 Mac 上的 Safari 中也有效 顶部已定义 但它仍然充当相对位置并与其余内
  • Androidcamera2 API获取AF模式下的焦距

    我正在使用 Android Camera2 API 我可以在手动对焦模式下使用 LENS FOCUS DISTANCE 获取焦距值 然而 在 AF 模式下该属性始终为零 有什么方法可以获取AF模式下的焦距吗 距镜片最前表面的最短距离 成为焦
  • JSF 2 ui:repeat:将 div 内的每 n 个项目分组

    给定一个集合 我想在这样的页面上排列 div div div div div div div div div div div div div div div div
  • Android 中 Json 到 POJO 的映射

    在 Android 中通过 Rest Framework 处理 json 有哪些好的做法 例如 如果我得到如下所示的某个 json 结果 或任何其他结果 我只是给出更复杂的结果 lifts id 26 time 2012 11 21T12
  • iPhone 和 Android 可以录制和播放哪种音频格式?

    我正在设计一个应用程序 可以在 iPhone 和 Android 上录制短音频文件 并可以在这两个平台上播放 希望也可以在任何其他智能手机上播放 现在我正在使用 caf 和 iLBC 编解码器 因为我知道 iPhone 不编码 mp3 在这
  • 大规模编排与编排的面向服务的架构?

    我是一家大型金融公司的架构师 我们正开始在不同国家实施一个新的面向业务的信息系统 从一开始 核心思想就是尽可能遵循面向微服务的原则 并确保工程师已阅读 Sam Newman 撰写的 构建微服务 一书 现在我已经来到了十字路口 我们的服务主要