服务之间存在强耦合关系时才可以。对言这是一种反模式。异步消息传递微服务设计模式 虽然设计模式非常流行但它是同步的会造成阻塞。因此部分基于微服务的架构可能会选择使用消息队列代替请求响应如下图所示 八优点和缺点微服务的优点 关键点复杂度可控独立按需扩展技术选型灵活容错可用性高 它解决了复杂性的问题。它会将一种怪异的整
体应用程序分解成一组服务
虽然功能总量 不变但应用程序已分解为可管理 德国邮件列表 的块或服务。每个服务都以或消息驱动的的形式定义了一个明确的边界架构模式实现了一个模块化水平。 ②这种架构使每个服务都能够由专注于该服务的团队独立开发。开发员可以自由选择任何有用的技术只要该服务符合合同。当然大多数组织都希望避免完全无政府状态并限制技术
选择。然而这种自由意味着开发员不再有义 自动化平台还能够帮助您 务使用在新项目开始时存在的可能过时的技术。在编写新服务时他们可以选择使用当前的技术。此外由于服务相对较小因此使用当前技术重写旧服务变得可行。 ③架构模式使每个微服务都能独立部署。开发员不
需要协调部署本地服务的变更。这些变化可以在测试后尽快部署。例如团队可以执行 | 测试并快速迭代更改。架构模式使连续部署成为可能。 架构模式使每个服务都可以独立调整。您可以仅部署满足其容量和可用性限制的每个服务的实例数。此外您可以使用最符合服务资源要求的硬件。微服务的缺点 关键点挑战系统部署依赖服务间通信成本数据一致性系
统集成测试重复工作性能监控等 一个缺点是名称本身。术语过度强调服务规模。但重要的是要记住这是一种手段而不是主要目标。微服务的目标是充分分解应用程序以便于敏捷应用程序开发和部署。 ②微服务器的另一个主要缺点是分布式系统而产生的复杂性。开发员需要选择和实现基于消息传递或的进程间通信机制。此外他们还必须编写代码来处理部分
故障因为请求的目的地可能很慢
或不可用。 ③微服务器的另一个挑战是分区数 买入铅 据库架构。更新多个业务实体的业务交易是相当普遍的。但是在基于微服务器的应用程序中您需要更新不同服务所拥有的多个数据库。使用分布式事务通常不是一个选择而不仅仅是因为定理。许多今天高度可扩展的数据库都不支持它们。你最终不得不使用最终的一致性方法这对
开发员来说更具挑战性。 测试微服务应用程序也更复杂。服务类似的测试类将需要启动该服务及其所依赖的任何服务或至少为这些服务配置存根。再次重要的是不要低估这样做的复杂性。 ⑤架构模式的另一个主要挑战是实现跨越多个服务的更改。例如我们假设您正在实施一个需要更改服务和的故事其中取决于和取决于.在单片应用程序中您可以简单地更改相应的模块整合更改并一次性部署。相比之下在架构模式中您需要仔细规