分布式技术之dubbo

Posted teayear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式技术之dubbo相关的知识,希望对你有一定的参考价值。

1,课程回顾
zk 应用场景 (naming注册中心 管理配置文件 管理集群(java例子模拟) 分布式锁 消息队列…)
zk 集群搭建 选举原理(启动选举,运行时leader宕机选举 )
zk 数据类型 4种
zk ACL(access control list)节点访问控制权限 scheme : id : permission
world anyone crwda
ip ip地址/主机名称
auth user
digest user
zk java API (对节点的CRUD 节点内容添加,修改)
zk 管理集群(java例子模拟)
2,本章重点
dubbo的简介,使用场景
dubbo拆分SSM项目
3,具体内容
官网:
https://dubbo.apache.org/zh/
引言:
分布式服务:不同的业务模块部署在不同的服务器上或者同一个业务模块分拆多个子业务,部署在不同的服务器上,解决高并发的问题
集群服务:同一个业务部署在多台机器上,提高系统可用性
3.1 简介:
Dubbo是阿里巴巴内部的SOA(server oriented architectrue)服务化治理方案的核心框架,每天为2000+ 个服务提供3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。Dubbo自2011年开源后,已被许多非阿里系公司使用。 Dubbo是一个分布式服务框架,以及SOA治理方案。其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。
3.2 开发团队:
Dubbo共有六个开发人员参与开发和测试,每一个开发人员都是很有经验,团队合作很默契,开发过程也很有节奏,有完善质量保障流程。
梁飞 (开发人员/产品管理)
刘昊旻 (开发人员/过程管理)
刘超 (开发人员/用户支持)
李鼎 (开发人员/用户支持)
陈雷 (开发人员/质量保障)

闾刚 (开发人员/开源运维)
图片: https://uploader.shimo.im/f/5BwJ4MhyEOdHF6Ao.png

3.3 适用场景:
1,当网站变大后,不可避免的需要拆分应用进行服务化,以提高开发效率,调优性能,节省关键竞争资源等。

  2,当服务越来越多时,服务的URL地址信息就会爆炸式增长,配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。 

 3,当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。 

4,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?等等…… 

3.4 设计思路,依赖及性能,应用情况
框架具有极高的扩展性,采用微核+插件体系,并且文档齐全,很方便二次开发,适应性极强。Dubbo运行JDK1.5之上,缺省依赖javassist、netty、spring等包,但不是必须依赖,通过配置Dubbo可不依赖任何三方库运行。 Dubbo通过长连接减少握手,通过NIO及线程池在单连接上并发拼包处理消息,通过二进制流压缩数据,比常规HTTP等短连接协议更快。在阿里巴巴内部,每天支撑2000多个服务,30多亿访问量,最大单机支撑每天近1亿访问量。

在阿里内部,除淘系以外的其它阿里子公司,都在使用Dubbo,包括:中文主站,国际主站,AliExpress,阿里云,阿里金融,阿里学院,良无限,来往等等。 

开源后,已被:去哪儿,京东,吉利汽车,方正证劵,海尔,焦点科技,中润四方,华新水泥,海康威视,等公司广泛使用,并不停的有新公司加入,社区讨论及贡献活跃,得到用户很高的评价。
3.5 架构

调用关系说明
服务容器负责启动,加载,运行服务提供者。
服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者在启动时,向注册中心订阅自己所需的服务。
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
3.6 maven父子工程实现ssm版dubbo

3.6.1 创建父工程
比过去新加jar:

  <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>dubbo</artifactId>
      <version>2.5.7</version>
  </dependency>
  <dependency>
      <groupId>org.apache.zookeeper</groupId>
      <artifactId>zookeeper</artifactId>
      <version>3.4.6</version>
  </dependency>
  <dependency>
      <groupId>com.101tec</groupId>
      <artifactId>zkclient</artifactId>
      <version>0.10</version>
  </dependency>
  <!-- 新加jar -->

3.6.2 拆分项目,创建子工程

3.6.3 配置dubbo
生产者:

<dubbo:application name="demo-provider"/>

<!-- 使用multicast广播注册中心暴露服务地址 -->
<!--  <dubbo:registry address="multicast://192.168.1.104:1234"/>

–>
<dubbo:registry protocol=“zookeeper” address=“192.168.23.91:2181”/>

<dubbo:protocol name=“dubbo” port=“20880”/>

<!-- 和本地bean一样实现服务 -->
<bean id="demoService" class="com.aaa.ssm.service.NewsServiceImpl"/>

<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.aaa.ssm.service.NewsService" ref="demoService"/>

消费者:

<dubbo:application name="dubbo-consumer"  />
<!-- 使用multicast广播注册中心暴露发现服务地址 -->
<!--  <dubbo:registry address="multicast://192.168.1.104:1234"/>

–><dubbo:registry protocol=“zookeeper” address=“192.168.23.91:2181”/>

<dubbo:protocol name=“dubbo” port=“20880”/>

<dubbo:reference id=“deptService” check=“false” interface=“com.aaa.ssm.service.NewsService”/>
3.6.4 配置项目,启动tomcat,运行测试

4,知识点总结
5,本章面试题

以上是关于分布式技术之dubbo的主要内容,如果未能解决你的问题,请参考以下文章

分布式技术之dubbo

分布式技术之dubbo

java必会技术之-分布式Dubbo

分布式服务之Dubbo

微服务治理之 Dubbo 基础认识

微服务治理之 Dubbo 基础认识