通俗点讲:http是个标准的好比普通话,大家谁都懂。
dubbo :是某个地区的方言比如我老家盐城,我们盐城人跟盐城人之间对话,直接用方言,更加的迅速
对外提供对话,则需要把方言做一层包装,满足普通话的标准,这样别人才听得懂
区别:
dubbo RPC支持的协议更广泛,而且他最有效地特性是支持长连接,这样避免了多次重复创建TCP连接的开销。
另外,HTTP因为协议的特效,会有一系列的HTTP header,这些内容往往会占用几K的数据,访问量特别巨大的时候,这些无关的数据其实也是一种负担。而使用dubboRPC,协议可以自定义,这些无关数据都可以省掉的。
至于安全,dubbo设计之初基本都是考虑内网通讯,安全上基本没什么考虑,比http的安全差远了。
rpc长连接、传输效率较高,可定制化路由,适用于内部系统互联;
http短连接,协议标准化且易读,容易对接外部系统,适用于上层业务模块
1:通信协议对比
Dubbo缺省协议采用单一长连接和NIO异步通讯,适合小数据量高并发请求的服务间调用,例如服务消费者多余提供者的服务调用。
连接个数:单连接
连接方式:长连接
原因:我们大多数服务间调用,服务的消费者都是远大于服务提供者,服务间调用每天量很大,使用单一的连接避免了服务提供者被压垮,使用长连接可以减少服务连接的握手验证。
传输方式:NIO异步传输
传输协议:TCP
序列化方式:Hessian二进制序列化
适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串。
HTTP超文本传输协议,主要工作在传输层HTTP协议上。
连接个数:多连接
连接方式:短连接
传输方式:同步传输
传输协议:HTTP
序列化方式:表单序列化(JSON)
适用范围:传入传出数据包大小混合,可以通过URL访问,可以在浏览器访问的请求。
2:服务特点区分
Dubbo服务
负载均衡——同一个服务部署在不同的机器时该调用那一台机器上的服务
服务调用链路生成——随着系统的发展,服务越来越多,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。Dubbo 可以为我们解决服务之间互相是如何调用的。
服务访问压力以及时长统计、资源调度和治理——基于访问压力实时管理集群容量,提高集群利用率。
服务降级——某个服务挂掉之后调用备用服务