大家好,我是修真院 武汉分院 第十五期 java 学员,今天 我给大家分享的是—— dubbo 简单介绍
1.背景介绍
2.知识剖析
3.常见问题
4.编码实战
5.扩展思考
6.参考文献
7.更多讨论
1.背景介绍
什么是DUBBO?
1、一款分布式服务框架;
2、高性能和透明化的RPC远程服务调用方案;
3、SOA服务治理方案。
应用架构进化史
1、单一应用架构:当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。
2、垂直应用架构:当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。
3、分布式服务架构:当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。
4、流动计算架构:当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。
2.知识剖析
节点角色说明
Provider:暴露服务的服务提供方
Consumer:调用远程服务的服务消费方
Registry:服务注册与发现的注册中心
Monitor:统计服务的调用次数和调用时间的监控中心
Container:服务运行容器
调用关系说明
1.服务容器负责启动,加载,运行服务提供者
2.服务提供者在启动时,向注册中心注册自己提供的服务
3.服务消费者在启动时,向注册中心订阅自己所需的服务
4.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
5.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用
6.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心
3.常见问题
3.1 DUBBO 解决的需求?
3.2 DUBBO优缺点?
3.3 什么是ZOOKEEPER?
3.1 DUBBO 解决的需求?
1.未服务化之前,可以通过 RMI 或 Hessian 等工具,简单的暴露和引用远程服务,通过服务的URL地址调用,服务增多后,服 务 URL配置很难管理,需要一个服务注册中心,动态的注册和发现服务
2.服务间依赖关系错综复杂,需要自动画出应用间的依赖
3.服务的调用变大,服务的容量问题
3.2 DUBBO优缺点?
优点:1、透明化的远程方法调用,只需简单配置,没有任何API侵入。2、软负载均衡及容错机制 。3、服务注册中心自动注册 & 配置管理 。 4、服务接口监控与治理 ,Dubbo-admin与Dubbo-monitor提供了完善的服务接口管理与监控功能,针对不同应用的不同接口,可以进行 多版本,多协议,多注册中心管理。
缺点: 只支持JAVA语言
3.3 什么是ZOOKEEPER?
zookeeper用来注册服务和进行负载均衡,哪一个服务由哪一个机器来提供必需让调用者知道,简单来说就是ip地址和服务名称的对应关系。
zookeeper通过心跳机制可以检测挂掉的机器并将挂掉机器的ip和服务对应关系从列表中删除。
至于支持高并发,简单来说就是横向扩展,在不更改代码的情况通过添加机器来提高运算能力
4.编码实战
5.扩展思考
什么是长连接和心跳机制?
网络中的接收和发送数据都是使用操作系统中的SOCKET进行实现。
可是如何判断这个机制是否还可以使用呢?这个就需要在系统中创建心跳机制。
TCP就会在一定的时间内发送你设置的次数的心跳,并且此信息不会影响你自己定义的协议。
所谓“心跳”就是定时发送一个自定义的结构体(心跳包或心跳帧),让对方知道自己“在线”。 以确保链接的有效性
6.参考文献
http://dubbo.io/books/dubbo-user-book/
https://blog.csdn.net/daiqinge/article/details/51282874#reply
7.更多讨论
分享到此结束
谢谢大家!