近来无事,总觉不可在学习上落下,所以想了解一下微服务方面的。
当然因为没有使用过微服务,学习后也容易淡忘,所以只供自己学习,方便以后查看和调整。
为什么选择dubbo
这个其实网上一百度应该就有很多很多理由。还有一点理由,就是找工作的时候发现大部分都需要dubbo,而非spring cloud,在百度上看优劣确实是dubbo好些,就这样想学习一下dubbo
dubbo是什么
dubbo是针对微服务做的一套框架,其中最核心的就是RPC通信和微服务治理两大能力。
当然更多详细的介绍肯定都在官网,而且官网有中文版的(对我这种英语不咋的人来说简直不要太好),主要挑我认为重要的(自己没有过,可能最后发现我认为重要的实际没用处),以下是中文版链接:https://dubbo.apache.org/zh/docs/https://dubbo.apache.org/zh/docs/https://dubbo.apache.org/zh/docs/
还有一个例子框架:
https://github.com/apache/dubbo-sampleshttps://github.com/apache/dubbo-samples
首先dubbo有个官方架构图:
这个有微服务的理论应该一眼就很清楚:
provider:服务提供方。即提供服务的应用。
consumer:服务使用方。用于调用provider的服务。
registry:注册中心。服务需要向此服务注册自己的服务,否则consumer没法找到怎么调用服务。
monitor:监控中心。应该是服务治理的重要组成,现在不是特别了解,不妄加评论。
流程:
0.start:provider服务启动。
1.register:provider向registry注册自己的服务。
2.subscribe:consumer订阅要调用的服务,并将获取的结果放在本地服务去调用服务。
3.notify:当provider的发生变化后,注册中心相应也会发生变化,就以事件通知的机制通知给consumer当前的情况。
4.invoke:consumer根据负载均衡算法得出应该调用哪个provider。
5.count:应该是用于监控provider和consumer具体状态的。
通信协议
Dubbo3 提供了 Triple(Dubbo3)、Dubbo2 协议,这是 Dubbo 框架的原生协议。除此之外,Dubbo3 也对众多第三方协议进行了集成,并将它们纳入 Dubbo 的编程与服务治理体系, 包括 gRPC、Thrift、JsonRPC、Hessian2、REST 等。
从官网上看应该triple和dubbo2协议是重点。triple其实就是dubbo3主要推出的协议。协议决定先放放,不会影响到主流程。