ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

春季-如何将不同的“微服务”集成到交易中?

2019-10-24 21:29:23  阅读:154  来源: 互联网

标签:spring-boot spring-cloud microservices spring spring-integration


我们正在构建一个新的基于Web的工业应用程序,最近几天困扰我们的一个问题是有关此体系结构上不同“微服务”之间的集成.

我在使用微服务时只花了一小笔钱,因为我们没有完全接受定义真正的微服务的概念.一个(也是我认为最大的区别)取决于这样一个事实,即我们在不同的模块上使用了相同的共享数据库(我称之为“微服务”).我们系统的某种逻辑视图可以绘制为:

                  ╔══════════════╗
                  ║    Client    ║ ══╗
                  ╚══════════════╝   ║ (2)
                                     ║
                                     ▼        
        ╔══════════════╗  (1) ╔══════════════╗
        ║  Serv. Reg.  ║ <==> ║  API Gatew.  ║
        ╚══════════════╝      ╚══════════════╝
            █       █   █████████████     (4)
           █         █              ████
╔══════════════╗  ╔══════════════╗  ╔══════════════╗
║   Module A   ║  ║   Module B   ║  ║   Module C   ║  <===== "Microservices"
╚══════════════╝  ╚══════════════╝  ╚══════════════╝
        ║║ (3)           ║║ (3)            ║║ (3)
        ║║               ║║                ║║
╔══════════════════════════════════════════════════╗
║                Database Server                   ║
╚══════════════════════════════════════════════════╝

我们已经弄清楚的一些事情:

>客户端(外部系统,前端应用程序)将使用发现/路由模式访问不同的后端模块.我们正在考虑将Netflix OSS Eureka和Zuul结合使用.服务(模块A,B,C)在服务注册模块上进行自身注册(4),并通过注册向API网关坐标(1)进行注册,以找到可完全满足请求的服务实例(2).
>所有不同的模块使用相同的数据库. (3)这更多是客户的请求,而不是架构决定.

我们(或我本人)遇到的问题是如何进行不同模块之间的通信.我已经阅读了很多不同的模式和反模式来执行此操作,并且几乎每个人都会通过RestTemplate或Feign或Ribbon这样的专门客户端来告知API集成.

由于某些原因,我倾向于不喜欢这种方法,主要是HTTP请求的同步和无状态性质. HTTP的无状态本质是我最大的问题,因为不同模块的服务层可以具有一些强大的绑定.例如,在模块A上启动的操作可能会对模块B和C产生影响,并且需要从“事务”的角度协调所有内容.我真的不认为HTTP是控制此的最佳方法!

我内心的Java EE部分大喊使用某种服务集成,例如EJB或RMI或最终不使用HTTP的任何东西.对我来说,将某个服务从模块A内的模块B连接起来,并确保它们一起参与交易会更加“自然”.

需要强调的另一件事是,数据库上最终的不一致之类的范例对于我们的客户来说还不够,因为它们正在处理某种严重的数据.因此,“我保证将尽我所能地处理数据”在这里不太适合.

提问时间:

与“微服务”打交道时,这种“服务集成”真的有用吗?还是“资源整合”胜过它?

例如,似乎Spring提供了Spring Integration来实现服务之间的消息传递,就像EJB这样的技术一样.这是整合这些服务的最佳方法吗?我想念什么吗?

PS:您可以将我的“微服务”称为“微石”,我们通常在这里使用它们的名字.

标签:spring-boot,spring-cloud,microservices,spring,spring-integration
来源: https://codeday.me/bug/20191024/1923535.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有