From bac7e6ec54a94386b9e8e330898591c6954318f4 Mon Sep 17 00:00:00 2001 From: Ming Deng Date: Fri, 3 Sep 2021 00:44:20 +0800 Subject: [PATCH] micro service --- gc/golang/atomic.md | 0 gc/golang/channel.md | 0 gc/golang/goroutine.md | 0 microservice/general.md | 47 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 gc/golang/atomic.md create mode 100644 gc/golang/channel.md create mode 100644 gc/golang/goroutine.md create mode 100644 microservice/general.md diff --git a/gc/golang/atomic.md b/gc/golang/atomic.md new file mode 100644 index 0000000..e69de29 diff --git a/gc/golang/channel.md b/gc/golang/channel.md new file mode 100644 index 0000000..e69de29 diff --git a/gc/golang/goroutine.md b/gc/golang/goroutine.md new file mode 100644 index 0000000..e69de29 diff --git a/microservice/general.md b/microservice/general.md new file mode 100644 index 0000000..c58fa55 --- /dev/null +++ b/microservice/general.md @@ -0,0 +1,47 @@ +# 微服务概览 + +> 微服务细碎的问题就放在这里讨论 + +## 面试题目 +### 微服务和 RESTful 的区别 + +分析:这个东西很多人都聊过,但是很多人都没说清楚。我给个“最终”答案:微服务是一种架构,而 RESTful API 是符合**REST**设计风格的 Web API。所以从这个角度来说,这两者根本不具备可比性。那么为什么面试官要问这个问题呢?大概率是他们公司内部有并存的微服务应用,和 RESTful 应用。 + +我们先来分析 RESTful,它是一种遵守了**REST**设计风格的 Web API,显然也有不遵守 REST 的。这部分我们一般就是简单描述为 Web 服务。 + +而微服务,一般是指以 RPC 为通信,结合了整个微服务治理的架构模式。实际上,微服务作为一种架构模式,其落地的选择是有很多的,除了这里说的 RPC,还有一种很重要的实现手段就是基于 Web API 的实现方式。 + +我们可以总结来说,微服务落地,最基本的通信的角度来说,可以是 RPC,也可以是 HTTP。而在 HTTP 之下,有一个子分类就是 RESTful。因此,微服务和 RESTful 的区别,核心就是: +1. 微服务是架构模式; +2. RESTful 是指符合 REST 规范的 Web API; +3. 微服务可以用 RESTful 来实现; + +这里就基本上讨论清楚了,不过我们还可以刷一个亮点:RPC 本身也是可以用 RESTful 来实现的。于是我们可以加上第四点:有些微服务虽然是基于 RPC 来构建的,但是 RPC 本身又可以是用 RESTful 来实现的。 + +沿着这个思路: +1. 微服务用什么实现?RESTful 或者 RPC 都可以; +2. RPC 用什么实现?直接基于 TCP 或者基于 HTTP 都可以。 + +答案: +1. 微服务是架构模式; +2. RESTful 是指符合 REST 规范的 Web API; +3. 微服务可以用 RESTful 来实现; +4. (亮点)微服务的另外一种实现,是利用 RPC 来实现;而 RPC 可以直接基于 TCP 来实现,也可以基于 HTTP 来实现,所以也可以用 RESTful 来实现;(这里可能会引起面试官的兴趣,就是问你 RPC 有哪些实现思路) + +(最后总结)微服务和 RESTful 总体来说是两种维度的东西。 + +(这里还有一个可能,就是面试官问你,RPC 和 RESTful 的区别,以为第四点我们聊到了微服务可以是 RPC 也可以是 RESTful) + +### RPC 和 RESTful 的区别 + +分析:RPC 和 RESTful 的区别,前面的问题**微服务和 RESTful 的区别**我们已经提到了。 RPC 名字叫做远程过程调用,是一种远程通信协议。但凡是协议,就会有落地。那么 RPC 的落地就很百花争鸣了,不过主流就是两个流派:基于 HTTP 的和基于 TCP 的。前者的代表是 gRPC,后者的代表是 Dubbo。基于 HTTP 的,如果要是它的 API 设计也符合 REST 设计风格,那么就可以说,它是基于 RESTful 的。 + +后面我们可以稍微聊一下这两种实现方式的优劣对比,作为一个亮点。 + +答案:RPC 是远程通信协议,它的实现可以是基于 HTTP 的,也可以是基于 TCP 的。而 RESTful 是符合 REST 设计风格的 Web API。因此,如果一个 RPC 是基于 HTTP 的,并且 HTTP 的 API 设计是符合 REST 设计风格的,那么就可以说这个 RPC 是基于 RESTful 的。 + +它们也是两个不同维度的东西。一般来说,基于 TCP 的 RPC 实现更加复杂,但是可以从 TCP 层面上优化,因此性能会更好。而基于 HTTP 的则是实现非常简单,目前,基于 HTTP2 协议实现的 RPC 在性能上也很优秀,对于大部分应用来说,并不会触及它的性能上限。 + +#### 类似问题 + +### RPC 的实现思路 \ No newline at end of file