分布式技术之dubbo

简介: 分布式技术之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"/>

–>


<!-- 和本地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"/>

–>



3.6.4 配置项目,启动tomcat,运行测试

4,知识点总结

5,本章面试题

目录
相关文章
因为一个问题、我新学了一门技术 ElasticSearch 分布式搜索
这篇文章讲述了作者因为一个检索问题而学习了ElasticSearch技术,并分享了排查和解决ElasticSearch检索结果与页面展示不符的过程。
因为一个问题、我新学了一门技术 ElasticSearch 分布式搜索
|
17天前
|
存储 负载均衡 中间件
构建可扩展的分布式数据库:技术策略与实践
【8月更文挑战第3天】构建可扩展的分布式数据库是一个复杂而具有挑战性的任务。通过采用数据分片、复制与一致性模型、分布式事务管理和负载均衡与自动扩展等关键技术策略,并合理设计节点、架构模式和网络拓扑等关键组件,可以构建出高可用性、高性能和可扩展的分布式数据库系统。然而,在实际应用中还需要注意解决数据一致性、故障恢复与容错性以及分布式事务的复杂性等挑战。随着技术的不断发展和创新,相信分布式数据库系统将在未来发挥更加重要的作用。
|
1月前
|
算法 数据库 OceanBase
共识协议的技术变迁问题之Raft协议对分布式系统有什么贡献
共识协议的技术变迁问题之Raft协议对分布式系统有什么贡献
42 8
|
5天前
|
Dubbo Java Nacos
【实战攻略】破解Dubbo+Nacos+Spring Boot 3 Native打包后运行异常的终极秘籍——从零开始彻底攻克那些让你头疼不已的技术难题!
【8月更文挑战第15天】Nacos作为微服务注册与配置中心受到欢迎,但使用Dubbo+Nacos+Spring Boot 3进行GraalVM native打包后常遇运行异常。本文剖析此问题及其解决策略:确认GraalVM版本兼容性;配置反射列表以支持必要类和方法;采用静态代理替代动态代理;检查并调整配置文件;禁用不支持的功能;利用日志和GraalVM诊断工具定位问题;根据诊断结果调整GraalVM配置。通过系统排查方法,能有效解决此类问题,确保服务稳定运行。
19 0
|
1月前
|
存储 人工智能 前端开发
共识协议的技术变迁问题之分布式系统的基础目标是什么
共识协议的技术变迁问题之分布式系统的基础目标是什么
|
1月前
|
并行计算 安全 数据处理
探索操作系统的未来:量子计算与分布式技术的融合
随着量子计算的逐步成熟和分布式技术的快速发展,传统的操作系统面临着前所未有的挑战与机遇。本文将探讨如何通过结合量子计算原理和分布式系统设计,来构建未来操作系统的新范式。我们将分析当前操作系统的限制,阐述量子计算和分布式技术的优势,以及它们如何共同推动操作系统设计的革新。
|
21天前
|
数据采集 存储 NoSQL
Redis 与 Scrapy:无缝集成的分布式爬虫技术
Redis 与 Scrapy:无缝集成的分布式爬虫技术
|
30天前
|
存储 数据管理 数据库
现代数据库技术中的分布式一致性问题与解决方案探讨
分布式系统在现代数据库技术中扮演着重要角色,但分布式环境下的数据一致性问题始终是挑战之一。本文深入探讨了分布式一致性的核心概念、各种一致性模型的特点及其在实际应用中的优缺点,旨在为技术从业者提供全面的视角和实用的解决方案。
|
1月前
|
NoSQL 安全 Java
技术好文:Redis分布式锁的正确实现方式
技术好文:Redis分布式锁的正确实现方式
22 0
|
1月前
|
缓存 Devops 微服务
微服务01好处,随着代码越多耦合度越多,升级维护困难,微服务技术栈,异步通信技术,缓存技术,DevOps技术,搜索技术,单体架构,分布式架构将业务功能进行拆分,部署时费劲,集连失败如何解决
微服务01好处,随着代码越多耦合度越多,升级维护困难,微服务技术栈,异步通信技术,缓存技术,DevOps技术,搜索技术,单体架构,分布式架构将业务功能进行拆分,部署时费劲,集连失败如何解决