Dubbo-dubbo及动态代理
2020-12-20 本文已影响0人
麦大大吃不胖
by shihang.mai
1. 发展史
-
项目all in one,大流量时,复制该项目,做集群,lvs做分流
-
后面变为一个超级大的项目叫ERP,包含一个个独立的项目,项目间互调
-
项目间用mysql共享运行时数据
-
两个项目直连,用xml传输,通过SOAP协议,框架叫CXF(webservice真正SOA落地)
-
dubbo(rpc)
2. 数据传输选择
-
json
缺点:结构不严谨,可读性差
优点:小,性能高 -
xml
缺点:文件大,序列化和反序列化性能低。
优点:结构严谨,有一个xsd文件,在本地做检验。 -
序列化对象
缺点:没可读性
优点:最小,性能最高,面向对象
3. dubbo架构
dubbo架构- provider写服务,并提供服务接口
- consumer注入服务接口,consumer类初始化时,已经加入了aop,监听方法
- 调用接口方法时,dubbo利用动态代理,调到invoke()方法,先向注册中心询问调用的服务在那个ip上,注册中心返回请求的ip地址
- 在本地方法执行前,通过调用socket远程调用服务,执行后直接return结果,再继续本地方法
3.1 注册中心
注册中心解决了的以下的问题
- 具体要请求的是那台机器?
注册中心记录provider的数据(接口名->ip端口、请求数、权重) - service下线怎么办?
注册中心记录也下线 - 请求负载倾斜怎么办?
注册中心记录了请求数
3.2 dubbo配置
http://dubbo.apache.org/zh/docs/v2.7/user/references/
3.3 负载均衡算法
- random+weight
- rr
- leastactive最不活跃优先
- 一致性哈希,哈希环