简单一点,http是协议,rpc是概念!rpc可以基于http协议(feign)、tcp协议(netty)、rmi协议(soap)和web服务(xml-rpc)框架实现。在传输过程中,由于序列化方法的不同,也出现了一些框架和协议,如dubbo中的dubbo协议、grpcprotobuf序列化协议等。实际上,它们都是基于远程调用的概念。什么是远程呼叫?
关键是rpc是远程调用。远程调用是客户端通过上述协议向服务器发送接口、参数、参数类型、方法、返回值、返回值类型等(称为方法签名),通知服务器要调用的接口方法。这个过程就是rpc的实现过程!http和rpc是两码事
!在性能方面,http本身是基于tcp协议的,属于应用层协议,所以http协议本身在实现过程中会占用大量的资源(内存、带宽等)。在性能方面,它肯定不如直接通过tcp实现的rpc协议快。不管http有多优化,它绝对没有tcp那么快!另一方面,tcp依赖于字节码。目前常用的是将客户端调用的接口信息以序列化的方式发送到服务器端。序列化框架包括许多内容(hession、protobuf、kryo等)。kryo具有最高的序列化性能,protobuf具有序列化后最小的字节码)。序列化后的字节码越小,占用的带宽越小,序列化时间越长,线程io延迟越短,线程io延迟越小。因此,在具体的应用层,有很多技术可以讨论。您可以根据自己的硬件能力选择相应的技术
!欢迎热爱科技的人们来探索
连接电池配置为电池,3000ma电池。
1.资源重用,避免频繁建立和关闭数据库连接的开销
2。更快的系统响应速度,直接从连接池获取连接,更快的响应速度
3。控制资源的使用。如果不使用连接池,则每次访问数据库时都需要创建连接。这样,系统的连接要求对系统的稳定性影响很大,容易产生资源浪费和高负载异常。连接池可以最大限度地提高性能,并将资源利用率控制在一定水平以下。连接池可以控制连接池中的连接数,提高系统在大量用户应用时的稳定性。
通用数据库连接池:dbcp、c3p0、druid
1。相似之处
dubbo和feign都依赖于注册表和负载平衡。
2、区别
1。协议
dubbo:
支持多种传输协议(dubbo、rmi、http、redis等),您可以根据业务场景选择最佳方式。非常灵活。
默认dubbo协议:采用netty、tcp传输,单点、异步、长连接,适合数据量小、并发性高且服务提供商远少于消费者的场景。
外挂:
基于http传输协议,连接短,不适合高并发访问。
2.负载平衡
dubbo:
支持四种算法(随机、轮询、活跃度、哈希一致性),并在算法中引入了权重的概念。
配置表单不仅支持代码配置,还支持dubbo控制台的灵活动态配置。
负载平衡算法可以精确到某个服务接口的某个方法。
feign:
仅支持n个策略:轮询、随机和响应时间加权。
负载平衡算法是客户端级的。
3.容错策略
dubbo:
支持多种容错策略:故障转移、快速故障、广播、强制等,还引入了重试次数、超时等配置参数
feign:
容错是通过融合机制实现的,处理方法不同。
feign可以使用最新的http组件优化此问题。默认情况下,feign使用jdk本机urlconnection发送http请求。没有连接池,但它将为每个地址维护一个长连接,即使用http持久性连接。我们可以使用apache的http客户端来代替feign原来的http客户端,从而获得连接池、超时等性能相关的控制功能。春天的云brixtion.sr5型版本开始支持此替换。首先,在项目中声明apachehttp客户机和假httpclient依赖关系