Java后台技术(Dubbo入门)
我现在公司提供的产品是即时通讯软件,因为我从.net桌面应用开发转岗,从java后台转项目经理,让我有幸拥有了后台开发人员所有的权限,所有的后台源码和技术文档对我开放,可惜仅在后台待了3周不到,还没来得及从事后台开发,就被直接安排开始项目经理的工作。虽然现在已经开始从事管理的工作,但是之前熟悉后台源码时,对后台的技术栈都进行了熟悉,近期将一直更新Java后台的技术栈学习总结。
今天我要分享的就是Dubbo,Dubbo是阿里巴巴在2011年开源的项目,因为在阿里已经得到广泛应用,验证了其稳定性和健壮性,所有被很多公司作为Java后台的RPC框架。
下面先讲解下Dubbo是什么,有什么功能。
Dubbo 是阿里巴巴公司一个开源的高性能服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案,使得应用可通过高性能 RPC 实现服务的输出、输入功能和 Spring 框架无缝集成。Dubbo 包含远程通讯、集群容错和自动发现三个核心部分。
Dubbo核心功能
- · 远程通讯,提供对多种基于长连接的 NIO 框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
- · 集群容错,提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
- · 自动发现,基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
工作模型

上图很好的体现了Dubbo的工作模型,由服务提供方(Provider)向注册中心(Registry)注册服务。当服务消费者(Consumer)需要使用服务时,需要先向注册中心(Registry)进行订阅,订阅后服务消费者(Consumer)就能采用同步方式(invoke)来调用该服务了。
配置标签
|
标签 |
用途 |
解释 |
|
<dubbo:service/> |
服务配置 |
用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心 |
|
<dubbo:reference/> |
引用配置 |
用于创建一个远程服务代理,一个引用可以指向多个注册中心 |
|
<dubbo:protocol/> |
协议配置 |
用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受 |
|
<dubbo:application/> |
应用配置 |
用于配置当前应用信息,不管该应用是提供者还是消费者 |
|
<dubbo:module/> |
模块配置 |
用于配置当前模块信息,可选 |
|
<dubbo:registry/> |
注册中心配置 |
用于配置连接注册中心相关信息 |
|
<dubbo:monitor/> |
监控中心配置 |
用于配置连接监控中心相关信息,可选 |
|
<dubbo:provider/> |
提供方配置 |
当 ProtocolConfig 和 ServiceConfig 某属性没有配置时,采用此缺省值,可选 |
|
<dubbo:consumer/> |
消费方配置 |
当 ReferenceConfig 某属性没有配置时,采用此缺省值,可选 |
|
<dubbo:method/> |
方法配置 |
用于 ServiceConfig 和 ReferenceConfig 指定方法级的配置信息 |
|
<dubbo:argument/> |
参数配置 |
服务注册
我公司产品后台的注册方法如下
定义接口
public interface HmWorkGroupDubboService
{
public Long createWorkGroup(Map<String,Object> param);
public Long updateWorkGroup(Map<String, Object> param);
}
添加实现
@service(group="pa",version="1.0.0",interfaceClass= HmWorkGroupDubboService.class,timeout=150000)
public class HmWorkGroupDubboServiceImpl implements HmWorkGroupDubboService
{
@override
public Long createWorkGroup(Map<String, Object> param)
{
//业务
}
@override
public Long updateWorkGroup(Map<String, Object> param)
{
//业务
}
}
服务配置
在application.yml中添加
dubbo:
registry:
address:zookeeper://108.20.18.74:2181 protocal:
port:20861
name:dubbo
application:
name:work
config:
timeout:5000
group:
name:pa
version:1.0.0
consumer:
check:false
scan:hm.hmp.front.dubbo
扫描服务
在启动函数类上添加@DubboComponentScan标签
@DubboComponentScan("work.dubbo.service")
@EnableDubboConfiguration
public class Application
{
public static void main(String[] args)
{
///...
}
}
服务订阅
添加配置
添加配置,在文件dubbo-context.xml中
<!--提供方应用信息-->
<dubbo:application name="hm-admin"/>
<dubbo:monitor protocal="registry"/>
<dubbo:registry address="${zookeeper.config.dubbo}"/>
<!--Dubbo协议暴露服务端口-->
<dubbo:protocal name="dubbo" port="${dubbo.config.port}"/>
<dubbo:consumer check="false"/> <!--第三方接口-->
<dubbo:reference id="hmWorkGroupDubboService" interface="dubbo.service.HmWorkGroupDubboService"
generic=""true" group="${dubbo.config.group.txt}" version="${dubbo.config.txt.version}" timeout="150000"/>
引入配置
@Configuration
@ImportResource("{dubbo-context.xml}")
public class DataSourceConfig{
///
}
服务使用
GenericService dubboServiceWorkGroup = ApplicationContextUtils.getApplicationContext().getBean("hmWorkGroupDubboService",GenericService.class);
Object workGroupResult = dubboServiceWorkGroup.$invoke("createWorkGroup",new String[]{"java.util.map"},new Object[]{workGroupMap});
相信大家也发现了上面使用的注册中心时Zookeeper,是因为zookeeper能够帮助Dubbo实现分布式及负载均衡。
现在应该已经把Dubbo讲解清除了,后续将继续其他Java技术栈的学习和总结。
Java后台技术(Dubbo入门)的更多相关文章
- Java后台技术IBATIS入门
做过.net后台开发的同志一定用过Entity FrameWork,该框架实现了实体Entity到数据库行的映射,通过操作实体DataSet,就能够直接同步修改到数据库.但是Java暂时没有类似的技术 ...
- Java后台使用httpclient入门HttpPost请求(form表单提交,File文件上传和传输Json数据)
一.HttpClient 简介 HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 ...
- Java后台技术(TDDL)
从PC客户端开发转项目经理已经有一段时间了,感觉还不错,平安这边的项目经理还需要对外,所以部门其他项目经理经常需要出差去见客户,我专门对内,部门所有的开发和测试每天做什么.接下来做什么我都必须了解,部 ...
- java后台技术
本文旨在梳理服务端开发技术栈,希望帮助后端开发同学更全面了解Java服务端主要涉及的知识点 1. 语言相关 1.1 Java 核心知识点 Java的类加载机制 JVM相关:JVM内存模型和结构,GC原 ...
- Java后台技术(线程安全)
前端时间一个同事因为后台线程安全问题出了一次生产事故,今天我就对线程安全问题进行一次总结. 首先,我们来大致看以下我同事写的代码,代码我进行了精简,大致如下: for (final String re ...
- Dubbo入门—搭建一个最简单的Demo框架
一.Dubbo背景和简介 1.电商系统的演进 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. a.单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一 ...
- java基础-网络编程(Socket)技术选型入门之NIO技术
java基础-网络编程(Socket)技术选型入门之NIO技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传统的网络编程 1>.编写socket通信的MyServer ...
- 一年工作经验的大专生程序员(java后台)
1.文章前言 作为18应届毕业大专生已工作一年,相信这也是大部分同届生的现状. 那么,一个萌新进入职场一年都经历了什么呢?在校那会我是挺好奇的. 这篇文章是根据自己一年 ...
- 【分享】Java后台开发精选知识图谱
地址 引言: 学习一个新的技术时,其实不在于跟着某个教程敲出了几行.几百行代码,这样你最多只能知其然而不知其所以然,进步缓慢且深度有限,最重要的是一开始就对整个学习路线有宏观.简洁的认识,确定大的学习 ...
随机推荐
- 如何做好 Android 端音视频测试?
在用户眼中,优秀的音视频产品应该具有清晰.低延时.流畅.秒开.抗丢包.高音效等特征.为了满足用户以上要求,网易云信的工程师通过自建源站,在SDK端为了适应网络优化进行QoS优化,对视频编码器进行优化, ...
- 故障解决 | win10没声音及找不到Realtek高清音频管理器
重装 win10 系统后,电脑没声音,更新驱动以及万不得已下载驱动精灵都没有解决. 后来发现在“硬件和声音”中没有Realtek高清音频管理器,之后找到解决办法如下: 1. 找到Realtek高清音频 ...
- 杭电ACM 1713 相遇周期
相遇周期 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- centos 配置安装golang
golang的官方下载和安装介绍: https://golang.org/doc/install 按照如下步骤安装绿色版golang ,不需要编译,解压就可以用 1)下载tar.gz 安装包 2)直接 ...
- 劳动人民万岁(拒绝惰性)------- 浅谈迭代对象(Iterable) 迭代器(Iterator)
一.前戏 问题:如果一次抓取所有城市天气 再显示,显示第一个城市气温时有很高的延时,并且很浪费储存空间 解决方案:以“用时访问”策略,并且能把说有城市气温封装到一个对象里,可用for一句进行迭代 二. ...
- 浅谈对Jquery+JSON+WebService的使用小结
https://www.jb51.net/article/36207.htm 更新时间:2013年04月28日 12:19:55 作者: 我要评论 本篇文章介绍了对Jquery+JSO ...
- sqli-libs(23-28a关)
Less_23 首先在php文件中加入echo $sql;echo "<br>"; 方法一: :%00 输入?id=1’,报错,说明存在注入漏洞: 输入?id=1' - ...
- C# 委托实例实现的多种类型
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 【Python爬虫程序】抓取MM131美女图片,并将这些图片下载到本地指定文件夹。
一.项目名称 抓取MM131美女写真图片,并将这些图片下载到本地指定文件夹. 共有6种类型的美女图片: 性感美女 清纯美眉 美女校花 性感车模 旗袍美女 明星写真 抓取后的效果图如下,每个图集是一个独 ...
- js jquery 页面初始化加载
一.js 页面加载初始化方法 // 1.在body里面写初始化方法. <body onload='init()'> </body> <script type=" ...