你知道系统模块之间如何聊天吗?——摊牌了,不装了,就是这样聊......「建议关注收藏!!架构师养成必备」

Posted 魏小言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你知道系统模块之间如何聊天吗?——摊牌了,不装了,就是这样聊......「建议关注收藏!!架构师养成必备」相关的知识,希望对你有一定的参考价值。

模块间的交互

  你知道系统模块之间如何聊天吗?
  摩尔庄园像小摩尔那样,你一句,我一句吗?
  不是哦,不装了,摊牌…「建议关注收藏!!面试/考试重点!!架构师养成必备」

  这个主题的提出,是想归类梳理一下在架构设计中,各组件模块如何交互,及交互方式的异同,如何取舍!
在这里插入图片描述

模块间交互方式

  模块间的交互方式都有哪些呢?
首先,明确下主题范围,模块间。指系统内部各模块之间,不包含系统服务于外界耦合部分。

  主要的模块间交互方式,常见的有三种:Restful、Rpc、中间件。下面来依次简单唠一下。

Restful

  Restful 广义上讲是一种架构风格,不特指某种技术或框架,只要满足其规范和约束,就是 Restful 。
  在 Restful 的约束中,把时间万物都定义成资源对象,任何一种行为都是对资源的调整。
  它的设计借鉴 Web 的特征和能力,把对资源的调整对应为 HTTP 协议提供的 GET、POST、PUT 和 DELETE 方法。

  在 Web 兴起的阶段,它是解决信息孤岛初期常使用的一种通信手段,利用现成的 Http 协议进行传输,优点就是简单、直接、开发方便。

  不过正是由于依托于 Http 应用层之上,在效率上输给了 Rpc。

Rpc

  Rpc「Remote Procedure Call Protocol」是一种技术统称,俗称像调用本地服务一样调用服务器的服务。它主要基于 TCP/IP协议,当然也可以是Http协议等等…

  Rpc对服务间交互做了封装,通过分布式框架的服务发现机制、通信协议约束…,做基于 TCP/IP 传输层进行数据交互。从网络模型上来讲,其效率是十分高效的。

中间件

中间件放在模块间交互其实有点勉强,它只是一种交互的形式,在原有的 Restful、Rpc 之外在服务之间做了中转,形成了业务上的同步及异步的交互行为。

如何选型

  在单体架构中,模块之间交互是在编程语言层面。在分布式的架构中,服务分布在一个或多个集群,模块之间交互方式变得多元化。

  以微服务架构来讲,其把庞大耦合的服务进行最小单元拆分,形成小服务单元,进行独立发布、部署。对外服务则通过一个或多个小服务间交互公共提供。那么这样的架构模块之间如何交互呢?

  我们需要对其做个约束,划分内外部,对外服务内部依赖的基础服务统称为内部,于外部存在耦合关系的小服务,则统称为外部。在内部交互时,我们看中的是效率,选用 Rpc 交互,最小程度的忽略网络问题,关注服务间协议及性能指标。在外部交互时,我们更关注于安全性、灵活性,选择 Restful 风格。在特殊场景存在同步及异步的交互行为时,可选择中间件作为最佳交互方式。

Q&A

1、网络模型是指什么?

网络模型有七层、四层两种,具体区别,适用场景可见:https://blog.csdn.net/qq_34417408/article/details/76943983

2、什么是微服务?

文中只是简单聊了微服务,具体的微服务刨析讲解,请关注后续博文

附录

在这里插入图片描述

一天一个小技巧,偷偷超越隔壁老大哥!

以上是关于你知道系统模块之间如何聊天吗?——摊牌了,不装了,就是这样聊......「建议关注收藏!!架构师养成必备」的主要内容,如果未能解决你的问题,请参考以下文章

下了CSDN浏览器助手后,浏览器竟然直接摊牌了,不装了!

下了CSDN浏览器助手后,浏览器竟然直接摊牌了,不装了!

不装了摊牌了,我们要搞事情

不装了摊牌了,我们要搞事情

不装了,摊牌了,月薪10571元的我是新生代农民工中的一员

不装了,摊牌了,月薪10571元的我是新生代农民工中的一员