关于dubbo分享

一、dubbo服务是基于zookeeper提供服务、提供消费

1、Zookeeper的作用:

zookeeper用来注册服务和进行负载均衡,哪一个服务由哪一个机器来提供必需让调用者知道,简单来说就是ip地址和服务名称的对应关系。当然也可以通过硬编码的方式把这种对应关系在调用方业务代码中实现,但是如果提供服务的机器挂掉调用者无法知晓,如果不更改代码会继续请求挂掉的机器提供服务。zookeeper通过心跳机制可以检测挂掉的机器并将挂掉机器的ip和服务对应关系从列表中删除。至于支持高并发,简单来说就是横向扩展,在不更改代码的情况通过添加机器来提高运算能力。通过添加新的机器向zookeeper注册服务,服务的提供者多了能服务的客户就多了。

2、dubbo:

是管理中间层的工具,在业务层到数据仓库间有非常多服务的接入和服务提供者需要调度,dubbo提供一个框架解决这个问题。

注意这里的dubbo只是一个框架,至于你架子上放什么是完全取决于你的,就像一个汽车骨架,你需要配你的轮子引擎。这个框架中要完成调度必须要有一个分布式的注册中心,储存所有服务的元数据,你可以用zk,也可以用别的,只是大家都用zk。

3、zookeeper和dubbo的关系:

Dubbo的将注册中心进行抽象,是得它可以外接不同的存储媒介给注册中心提供服务,有ZooKeeper,Memcached,Redis等。

引入了ZooKeeper作为存储媒介,也就把ZooKeeper的特性引进来。首先是负载均衡,单注册中心的承载能力是有限的,在流量达到一定程度的时候就需要分流,负载均衡就是为了分流而存在的,一个ZooKeeper群配合相应的Web应用就可以很容易达到负载均衡;资源同步,单单有负载均衡还不够,节点之间的数据和资源需要同步,ZooKeeper集群就天然具备有这样的功能;命名服务,将树状结构用于维护全局的服务地址列表,服务提供者在启动的时候,向ZK上的指定节点/dubbo/${serviceName}/providers目录下写入自己的URL地址,这个操作就完成了服务的发布。其他特性还有Mast选举,分布式锁等。

二、安装zookeeper

1、下载安装包:http://zookeeper.apache.org/releases.html

2、解压 tar -zxvf zookeeper-3.4.6.tar.gz

3、修改配置

  mv zookeeper-3.4.6/conf/zoo_sample.cfg  zoo.cfg

  vi zookeeper-3.4.6/conf/zoo.cfg

  

  修改成自己的地址,没有文件需要创建文件夹

4、启动zookeeper

  启动 ./zookeeper-3.4.6/bin/zkServer.sh start

停止 ./zookeeper-3.4.6/bin/zkServer.sh stop

查看是否启动正常 ./zookeeper-3.4.6/bin/zkServer.sh status

  

  说明启动成功,单机模式

三、安装dubbo-admin控制台客户端

1、war下载地址:http://code.alibabatech.com/mvn/releases/com/alibaba/dubbo-admin/2.4.1/dubbo-admin-2.4.1.war

  2、修改配置../dubbo-admin/WEB-INF/dubbo.properties

    

  3、将war包放入tomcat,启动tomcat

    输入用户名密码 默认是root root

  

  启动成功。

四、添加服务生产者

  我采用的是spring+dubbo+maven整合,这里我贴出部分代码配置,在文章最后我会将源码地址分享出来

  

  1、这是项目目录,首先需要制定一个服务接口:

package com.cc.dubbo.service;

public interface DemoService {
    String sayHello(String name);
}

  2、实现类:

package com.cc.dubbo.service.impl;

import com.cc.dubbo.service.DemoService;

public class DemoServiceImpl implements DemoService {

    @Override
    public String sayHello(String name) {
        return "hello "+name;
    }

}

  3、spring关于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">

    <!-- 具体的实现bean -->
    <bean id="demoService" class="com.cc.dubbo.service.impl.DemoServiceImpl" />

    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="demo_provider" />

    <!-- 使用zookeeper注册中心暴露服务地址 即zookeeper的所在服务器ip地址和端口号 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />

    <!-- 用dubbo协议在20880端口暴露服务 这个name不需要改 -->
    <dubbo:protocol name="dubbo" port="20880" />

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

  4、启动,将项目运行起来,在打开dubbo控制台,你会发现多了一个项目,到此我们的服务已经暴露出去了,等待消费者消费了

  

五、添加服务消费者

  1、消费者同样采用的是spring+dubbo+maven,需要修改的是pom.xml需要将生产者的代码打成jar添加到消费这中去。

  2、配置spring关于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:application name="demo_consumer" />
    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />

    <!-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->
    <dubbo:reference id="demoService"
        interface="com.cc.dubbo.service.DemoService" />
</beans>

  3、编写Controller

package com.cc.dubbo.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.cc.dubbo.service.DemoService;

@Controller
public class DemoController {

    @Autowired
    private DemoService demoService;

    @ResponseBody
    @RequestMapping("/demo")
    public String say(@RequestParam("name")String name){
        return demoService.sayHello(name);
    }
}

  4、启动项目

  

  这是就能看到服务的消费者和生产者了。。。到此编码就结束了,谢谢,如果那里不对欢迎扔砖QQ:369355497

六、源码地址

  这是我项目的源码地址,已经分享到github上了https://github.com/gitboke/dubbo.git

  最后分享一个微信公众帐号骑猪上树  这是我自己开发的微信机器人谢谢大家

时间: 2024-11-09 16:00:16

关于dubbo分享的相关文章

SpringCloud学习之一前置知识理解

前提知识+相关的说明 1. 目前我们学习到最后的微服务架构SpringCloud,到我这里基本人需要大家熟悉以前的学习内容和知识,也即我默认大家已经熟悉了 SpringMVC+Spring/SpringBoot+Mybatis+Maven+git-- 不再重复讲解, 2. 本次Cloud的讲解的方式,由于我们只有2.5天,大概21种技术之多,只能挑选最重要最常用的技能给大家分享,俗称Cloud技术的五大神兽 public classDept{ private Integer id; privat

Dubbo线程模型(结合Linux线程数限制配置的实战经验分享)

Dubbo官方文档: 用户指南 >> 示例 >> 线程模型 配置标签: <dubbo:provider/> <dubbo:protocol/> 实战经验分享(属用性能调优): Linux用户线程数限制导致的java.lang.OutOfMemoryError: unable to create new nativethread异常 # vi/etc/security/limits.d/90-nproc.conf # Default limit fornumb

干货|Dubbo社区开发者日经验分享

Hello,各位小伙伴大家好,我是小栈君,昨天也就是2019年10月26日,有幸在成都参加了由阿里举办的"Dubbo社区开发者日". 本次活动汇聚了各方面的大神欢聚一堂,主要是对现有微服务状态下的技术的痛点和执行流程的分享和解析.近距离的接触到技术大佬们,面对面的交流,让人获益良多. 所以小栈君这里也是精心准备了会场上的PPT供大家下载学习,搜索"IT干货栈",回复关键词"阿里技术分享"即可得到PPT,当然小栈君也是继续更新后端技术栈和大家一同进

最近项目用到Dubbo框架,临时抱佛脚分享一下共探讨(转)

1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)其核心部分包含:1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,

分享dubbo.xsd和idubbo.xsd的可用地址

dubbo.xsd和idubbo.xsd的官方地址不可用 http://code.alibabatech.com/schema/dubbo/dubbo.xsd似乎挂了,真是淡淡的忧伤啊,然后就各种报错: schema_reference.4: Failed to read schema document 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd', because 1) could not find the document; 2)

dubbo学习过程、使用经验分享及实现原理简单介绍

一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不多花了两天半时间,请尊重劳动成果,如转载请注明出处http://blog.csdn.net/hzzhoushaoyu/article/details/43273099 二.什么是dubbo Dubbo是阿里巴巴提供的开源的SOA服务化治理的技术框架,据说只是剖出来的一部分开源的,但一些基本的需求已经

【dubbo基础】dubbo学习过程、使用经验分享及实现原理简单介绍

一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不多花了两天半时间,请尊重劳动成果,如转载请注明出处http://blog.csdn.NET/hzzhoushaoyu/article/details/43273099 二.什么是dubbo Dubbo是阿里巴巴提供的开源的SOA服务化治理的技术框架,据说只是剖出来的一部分开源的,但一些基本的需求已经

最近项目用到Dubbo框架,分享一下~

1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)其核心部分包含:1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,

基于Dubbo的分布式系统架构完整教程

1课程介绍20分钟2使用Dubbo对传统工程进行服务化改造的思路介绍15分钟3使用Dubbo对传统工程进行服务化改造55分钟4ZooKeeper注册中心安装29分钟5使用Dubbo对传统工程进行服务化改造后的服务调用测试19分钟6使用Dubbo进行规模服务化前的工程结构优化35分钟7Dubbo管理控制台的安装21分钟8使用Maven构建Dubbo服务的可运行jar包46分钟9在Linux操作系统上手工部署Dubbo服务50分钟10构建Dubbo服务消费者Web应用的war包并在Tomcat中部署