Dubbo
- 服务,就是远程server启动一个服务,来处理client的调用。
- 调用服务,顾名思义,一般使用rpc,简单方便,通过代理调用,跟调用普通对象方法一样。
- 协议,client调用服务,实际上就是client与server之间的一次通讯,协议就是定义通讯的标准,以便双方可以正常的发送/接受/组织/识别数据数据等,包含如传输的子协议,序列化的技术等等。
- 服务识别,就是说client要知道服务在台机器上,这样client才能调用服务。单机服务直接写死一个ip+port就行了,但是分布式服务,还需要支持动态扩容的话,就得需要一种机制来时刻给client通知最新的服务分布在哪些机器上。一般使用单独注册中心来管理与通知这些服务分布情况。
- 均衡负载,就是说服务一般由多个server来提供,要将请求均摊到各个server中,一般是在client端实现的,是结合2调用服务 + 4服务识别来实现的。
- 总结:最简单的理解就是 dubbo = rpc + 注册中心
dubbo为什么需要和zookeeper结合使用,zookeeper在dubbo体系中起到什么作用?
dubbo是一个prc远程服务调用框架,需要一个注册中心去管理每个服务的集群。zookeeper在dubbo中扮演一个注册中心的角色(当然也可以不选择zookeeper),zookeeper用来注册服务和进行负载均衡。
哪一个服务由哪一个机器来提供,必须让调用者知道。也就是ip地址和服务名对应关系。也可以把这种对应关系通过硬编码的方式加在调用者的业务中,但是一旦提供的服务挂掉调用者无法知晓。zookeeper通过心跳机制来检测并将挂掉的机器从列表中删除。可以在不更改代码的情况下通过添加机器来解决高并发。
Reference
- 阿里的dubbo 到底是用来干嘛的? - https://www.zhihu.com/question/30971953
- 深入浅出微服务框架dubbo(一):基础篇 - https://www.imooc.com/article/22585
FEATURED TAGS
algorithm
algorithmproblem
architecturalpattern
architecture
aws
c#
cachesystem
codis
compile
concurrentcontrol
database
dataformat
datastructure
debug
design
designpattern
distributedsystem
django
docker
domain
engineering
freebsd
git
golang
grafana
hackintosh
hadoop
hardware
hexo
http
hugo
ios
iot
java
javaee
javascript
kafka
kubernetes
linux
linuxcommand
linuxio
lock
macos
markdown
microservices
mysql
nas
network
networkprogramming
nginx
node.js
npm
oop
openwrt
operatingsystem
padavan
performance
programming
prometheus
protobuf
python
redis
router
security
shell
software testing
spring
sql
systemdesign
truenas
ubuntu
vmware
vpn
windows
wmware
wordpress
xml
zookeeper