摘要:服务提供者在启动时,向注册中心注册自己提供的服务。注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
先来了解一下这些年架构的变化,下面的故事是我编的。。。。
“传统架构”:很多年前,刚学完JavaWeb开发的我凭借一人之力就开发了一个网站,网站 所有的功能和应用都集中在一起,方便了我的开发同时也节省了成本。但是后来我的网站访问流量突然加大,我通过不断增加服务器来提高并发量,但是我发现随着服务器的增加服务能力先增加后下降。
不能通过硬件的方式解决问题的我,思考如何通过软件解决这个问题。
“分布式架构”:后来我按照功能点把系统拆分,拆分成独立的功能。多带带为某一个节点添加服务器。通过系统之间配合完成整个业务逻辑。但是随着我的网站功能的日益完善,我发现各个模块有一些通用的业务逻辑无法共用,这样可不好,这时候我就在考虑为啥部直接来个面向服务呢???
“面向服务架构”:我把工程拆分成服务层、表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。这样我的网站不光开发效率快,而且在扩展和升级相关服务的时候更加灵活。
说了这么多“废话”,那么什么是dubbo?为什么要用dubbo呢?
什么是dubbo?Dubbo是 阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。
上面我们提到了RPC,现在我们来理解一下RPC的一些相关概念。之前学习过操作系统的同学在进程那一章也会接触到这个东西。
RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。
既然有http请求为什么还要用rpc调用呢???
良好的rpc调用是面向服务的封装,针对服务的可用性和效率等都做了优化。单纯使用http调用则缺少了这些特性。dubbo的一些相关资源
相信你看了dubbo的用户手册可能会明白dubbo被企业所喜爱的一部分原因,官方文档介绍的真的详细,很容易就可以学会如何简单的去使用dubbo到自己的项目中。
dubbo官网:http://dubbo.incubator.apache.org/
Dubbo Github地址:https://github.com/apache/incubator-dubbo
Dubbo用户手册(中文) :这篇文档详细讲解了dubbo的使用,基本涵盖dubbo的所有功能特性。如果你正依赖dubbo作为你业务工程的RPC通信框架,这里可以作为你的参考手册
Dubbo开发手册(中文):这篇文档的目标读者是对 dubbo 源码、设计有兴趣的,或者有意愿加入 dubbo 开发的人群。主要涵盖了 dubbo 的框架设计、扩展机制、编码规范、版本管理、构建等话题。
为什么要用dubbo呢???先来看一张普通电商的简易架构图
当服务越来越多后,服务之间的依赖关系越来越复杂,服务 URL 配置管理变得非常困难另外还需要统计服务的调用量来进行分析,这些需求都可以使用dubbo来满足。
dubbo架构上述节点简单说明:
Provider 暴露服务的服务提供方
Consumer 调用远程服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器
调用关系说明:
服务容器负责启动,加载,运行服务提供者。
服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者在启动时,向注册中心订阅自己所需的服务。
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
注册中心一个完整的dubbo应该是包括注册中心的。
注册中心用来注册服务和进行负载均衡,哪一个服务由哪一个机器来提供必需让调用者知道,简单来说就是IP地址和服务名称的对应关系。
dubbo官方提供了几种实现注册中心的方式:
Multicast 注册中心
Zookeeper 注册中心
Redis 注册中心
Simple 注册中心
另外官方明确推荐使用Zookeeper 注册中心的方式。
装zookeeper的话,建议装在Linux机器上,我这里就不做讲解了。想要了解的可以去官网看看文档,因为dubbo的官方文档很详细了,建议看官方文档,大多数博客文章还是照着文档写的。
Dubbo用户手册(中文) 已经介绍的很详细了,所以这里我就不去班门弄斧了,想要了解的可以去看一下。
不说了,我要去吃饭了。。。想起来再补充。。。
欢迎关注我的微信公众号“Java面试通关手册”(坚持原创,分享美文,分享各种Java学习资源,面试题,以及企业级Java实战项目回复关键字免费领取):
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/69001.html
摘要:更是中高级面试过程中经常会问的技术,无论你是否用过,你都必须熟悉。下面我为大家准备了一些常见的的面试题,一些是我经常问别人的,一些是我过去面试遇到的一些问题,总结给大家,希望对大家能有所帮助。 想往高处走,怎么能不懂 Dubbo? Dubbo是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之一。Dubbo 更是中高级面试过程中经常会问的技术,无论你是否用过,你都必须...
摘要:第三部分对于参加工作年到年的同学。我当时看的是大话设计模式这本书,并且写了完整版的设计模式博客。这一年,你必须对于设计模式了如指掌,大话设计模式可以作为你的开端。与此同时,这个阶段你要做的事情还远不止如此。 这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是大佬你是如何学习Java的,能不能给点建议? 今天我是打算来点干货,因此咱们就不说一些学习方法和技巧...
摘要:作为一个前端人,阿里巴巴,是我最想去的国内公司,我看重的也不是他薪水如何,完全在于他的技术,这一点可以说明一切。阿里是个十分重视基础的公司,和浮躁的前端大环境形成鲜明的对比。我不是第一次投阿里巴巴,所以心态一开始还是挺平和的。 这是去年8月份秋招的面试,五面都面完了,给大家贡献干货吧。我没写问题的答案,有什么问题可以留言区问我。 一面 电话面(1小时)电话面问题不多,但是十分考验对相关...
阅读 2263·2021-09-30 09:48
阅读 3632·2021-09-24 10:27
阅读 1787·2021-09-22 15:32
阅读 2024·2021-08-09 13:44
阅读 3574·2019-08-30 15:55
阅读 1042·2019-08-29 17:12
阅读 1998·2019-08-29 17:05
阅读 2916·2019-08-29 13:43