Dubbo学习笔记

前言

分布式系统是若干独立系统的集合,但是用户使用起来像是在使用一套系统。
规模的逐步扩大和业务的复杂,单台计算机杠不住巨大流量。
应用架构的发展演变:单一架构–>垂直应用架构(优点:扩展容易)–>分布式架构(基于RPC:远程过程调用)
Dubbo是一个高性能的RPC框架,解决了分布式中的调用问题。
优点:解决了分布式系统中的互相调用问题。

dubbo概述

提升性能要从最关键的两个方面入手:序列化和网络通信。
序列化:Dubbo采用的是效率最高的二进制。
网络通信:Dubbo采用socket通信机制,一步到位,提升了通信效率,并且可以建立长连接,不用反复连接,直接传输数据。

别的RPC框架:gRPC,Thirft,HSF

dubbo提供了三大核心功能:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
dubbo是一个分布式框架,致力于提供高性能和透明化的RPC远程服务调用方案,服务治理方案。

dubbo直连步骤:第一个项目
1、创建maven web工程:服务的提供者
2、创建一个实体bean查询结果
3、提供一个服务接口:xxxx
4、实现这个服务接口:xxxxImpl
5、配置dubbo服务提供者的核心配置文件
a.声明dubbo服务提供者的名称:保证唯一
b.声明dubbo使用的协议和端口号
c.暴露服务,使用直连方式
6、添加监听器

dubbo核心配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!--服务提供者必须声明名称,必须保证服务名称的唯一性,它的名称是dubbo内部使用的唯一标识-->
    <Dubbo:application name="001-link-userservice-provider"></Dubbo:application>
    <!--访问服务协议的名称及端口号,dubbo官方推荐使用的是dubbo协议,端口号默认为20880-->
    <Dubbo:protocol name="dubbo" port="20880" ></Dubbo:protocol>
    
    <!--暴露服务接口
    interface:暴露服务接口的全限定类名。
    ref:接口引用的实现类在spring容器中的表示。
    registry:如果不使用注册中心,则值为N/A
    -->
 <Dubbo:service interface="com.wkcto.dubbo.service.UserService" ref="userService" registry="N/A"></Dubbo:service>
    <!--将接口的实现类加载到spring容器中-->
    <bean id="userService" class="com.wkcto.dubbo.service.impl.UserServiceimpl"></bean>
    
    
</beans>

dubbo直连步骤:第二个项目
1、创建maven web工程:服务的消费者
2、配置pom.xml文件,添加需要的依赖
3、配置dubbo核心配置文件
4、编写controller
5、配置中央调度器(就是一个servlet:DispatcherServlet)

dubbo服务化最佳实践

dubbo官方推荐必须有一个接口工程,它就是一个maven java工程
要求接口工程里存放的内容如下:
1、对外暴露的服务接口(service接口)
2、实体bean对象
分包:建议将服务接口、服务模型等均放在公共包中。
粒度:1、服务接口尽可能大粒度,每个服务方法应代表一个功能,而不是某个功能的步骤。2、服务接口建议以业务场景为单位划分,并对相近业务做抽象,防止接口数量爆炸。3、不建议使用过于抽象的通用接口,这样的接口没有明确语义,会给后期维护带来不便。
版本:每个接口都应定义版本号,区分同一接口的不同实现。

注册中心

对于服务提供方,它需要发布服务,而且由于应用系统的复杂性,服务的数量、类型也在不断膨胀,对于服务消费方,它最关心如何获取到它所需要的服务,而面对复杂的应用系统,需要管理大量的服务调用。
而且,对于服务提供方和服务消费方来说,他们还有可能兼具这两种角色,即需要提供服务,又需要消费服务。通过将服务统一管理起来,可以有效的优化内部应用对服务发布、使用的流程和管理。服务注册中心可以通过特定的协议来完成服务对外的统一。dubbo提供的注册中心有如下几种类型可供选:
Redis、Simple、Zookeeper,推荐使用Zookeeper。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mingshengda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值