Dubbo是轻量级 高性能的RPC框架 并不是一个微服务的全面解决方案 由Java语言开发。
常见的RPC框架 Dubbo、Montan 新浪 轻量级 、Thrift Facebook 可以跨语言
HTTP和RPC对比
角色
调用关系
1 Dubbo协议
dubbo://ip:端口
单一长连接 NIO异步通信 基于hessian作为序列化协议 适用传输数据量很小 每次请求在100kb以内 但是并发量很高
Dubbo缺省协议采用单一长连接和NIO异步通讯 适合于小数据量大并发的服务调用 以及服务消费者机器数远大于服务提供者机器数的情况
2 RMI协议
RMI协议采用JDK标准的java.rmi.*实现 采用阻塞式短连接和JDK标准序列化方式
走java二进制序列化 多个短连接 适合消费者和提供者数量差不多 适用于文件的传输 一般较少用
3 Hessian协议
Hessian协议用于集成Hessian的服务 Hessian底层采用Http通讯 采用Servlet暴露服务 Dubbo缺省内嵌Jetty作为服务器实现
走Hessian序列化协议 多个短连接 适用于提供者数量比消费者数量还多 适用于文件的传输 一般较少用
4 Http协议
采用Spring的HttpInvoker实现
走json序列化
5 webservice
基于CXF的frontend-simple和transports-http实现
走SOAP文本序列化
所以dubbo实际基于不同的通信协议 支持hessian、java二进制序列化、json、SOAP文本序列化多种序列化协议。但是hessian是其默认的序列化协议。
流程
父pom文件
dependency groupId org.apache.dubbo /groupId artifactId dubbo-dependencies-bom /artifactId version ${dubbo.version} /version type pom /type scope import /scope /dependency dependency groupId org.apache.dubbo /groupId artifactId dubbo /artifactId version ${dubbo.version} /version exclusions exclusion groupId org.springframework /groupId artifactId spring /artifactId /exclusion exclusion groupId javax.servlet /groupId artifactId servlet-api /artifactId /exclusion exclusion groupId log4j /groupId artifactId log4j /artifactId /exclusion /exclusions /dependency
producer和concumer的 pom文件
dependency groupId org.apache.dubbo /groupId artifactId dubbo-spring-boot-starter /artifactId /dependency dependency groupId org.apache.dubbo /groupId artifactId dubbo /artifactId /dependency !-- Zookeeper dependencies -- dependency groupId org.apache.dubbo /groupId artifactId dubbo-dependencies-zookeeper /artifactId version ${dubbo.version} /version type pom /type exclusions exclusion groupId org.slf4j /groupId artifactId slf4j-log4j12 /artifactId /exclusion /exclusions /dependency
demo.service.version 1.0.0 #dubbo协议 dubbo.protocol.name dubbo dubbo.protocol.port -1 #dubbo注册zookeeper dubbo.registry.address zookeeper://127.0.0.1:2181 dubbo.registry.file ${user.home}/dubbo-cache/dubbo.cache
producer的properties配置文件在此基础上还要加上一个Dubbo包扫描的配置
dubbo.scan.base-packages com.liu.producer.service.impl业务中producer的service实现类加 Service(version ${demo.service.version} ) 注意是Dubbo的service注解
Reference(version ${demo.service.version} ) CourseListService courseListService;
溢价 域名 的续费价格如何?通常来说,因为溢价域名的价值高于普通域名,所以溢...
前言 统计科学家使用交互式的统计工具(比如R)来回答数据中的问题,获得全景的认...
近几年,互联网行业蓬勃发展,在互联网浪潮的冲击下,互联网创业已成为一种比较...
背景 我们知道 如果在Kubernetes中支持GPU设备调度 需要做如下的工作 节点上安装...
本文转载自微信公众号「bugstack虫洞栈」,作者小傅哥 。转载本文请联系bugstack...
基本介绍 给定 n 个权值作为 n 个叶子节点,构造一颗二叉树,若该树的带权路径长...
本文转载自公众号读芯术(ID:AI_Discovery)。 这一刻你正在应对什么挑战?这位前...
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区 https://...
在Python开发过程中,我们难免会遇到多重条件判断的情况的情况,此时除了用很多...
TIOBE 公布了 2021 年 3 月的编程语言排行榜。 本月 TIOBE 指数没有什么有趣的变...