For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
通行模式在许多软件开发项目中都是经常用到的一个功能,而本文我们就简单来了解一下,微服务通信设计模式都有哪些类型。
HTTPAPI基于CS模式,意味着通信只能由客户端发起。这也是一种同步通信,意味着一旦通信由客户端发起,要一直等到服务端返回响应才会结束。
的CS微服务通信
因为这和我们访问互联网的方式一致,因此这种方法非常流行。HTTP是互联网的支柱,因此所有编程语言都通过某种方式支持HTTP功能,从而使其成为一种非常流行的方法。
但这种方式并不完美,我们来分析一下。
优点
容易实现。HTTP协议并不难实现,而且所有主要的编程语言都已经对它提供了原生支持,开发人员几乎不需要担心其内部是如何工作的,复杂性被类库所隐藏和抽象。
可以被标准化。如果在HTTP之上添加了REST之类的东西(正确实现的),其实就是创建了一个标准API,允许任何客户端可以快速学习如何与我们的业务逻辑进行通信。
技术中立。由于HTTP充当了客户端和服务器之间的数据传输通道,因此和两端的具体实现技术无关。可以用Node.js实现服务端,用JAVA或C#实现客户端(或其他服务),只要遵循相同的HTTP协议,就能够彼此通信。
缺点
额外的时延。作为HTTP协议的一部分,有若干个步骤确保了数据被正确发送,因此HTTP非常可靠。然而,该这样也给通信增加了延迟(额外的步骤意味着额外的时间)。因此,考虑这样一个场景:在后一个微服务完成之前,3个或更多的微服务需要在彼此之间交换数据。换句话说,需要让A向B发送数据,这样B才可以向C发送数据,然后C才能够发送响应。除了每个服务的处理时间外,还必须考虑在它们之间建立3个HTTP通道所增加的延迟。
超时。虽然可以在大多数场景中配置超时时间,但默认情况下,如果服务器占用的时间太长,将导致客户端关闭连接。多长时间是“太长”?这取决于配置和当前的服务,但是总会有这么个时间。这为业务逻辑增加了额外的约束:需要快速执行,否则将失败。
失败难以解决。解决服务器故障并不是不可能的,但是需要有额外的基础设施。默认情况下,如果服务器关闭,将不会通知客户端。客户端只有在试图访问服务器时才会意识到这一点,但已经为时已晚。有一些方法可以缓解这种情况,例如使用负载平衡器或API网关,但需要在CS通信之上进行额外的工作,以使其更可靠。
因此,如果我们的业务逻辑快速可靠,并且需要被许多不同的客户端访问,HTTPAPI是一个很好的解决方案。多个团队在不同的客户端上工作时,可以基于一个标准、一致的接口通信,这会非常有用。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。