dubbo服务治理框架

1.dubbo介绍
dubbo是一个分布式服务框架,用于提高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,dubbo是个服务框架
2.dubbo核心
1.远程通讯:提供多种基于长连接的NIO框架,包括多线程模型,序列化,以及请求-响应模式的信息交换方式
2.集群容错:提供基于接口方法的透明远程过程调用,包括多协议支持,以及负载均衡,失败容错,地址路由,动态配置等集群支持。
3.自然发现:基于注册中心目录服务,使服务消费方能动态查询提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
3.dubbo实现功能
1.透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需要简单配置,没有任何API侵入
2.软负载均衡及容错机制,可以在内网替换F5等硬件负载均衡器,降低成本,减少单点
3.服务自动注册与发现,不需要写死服务器提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者
4.dubbo采用全spring配置方式,功明化接入应用,对应用没有任何API侵入,只需用spring加载dubbo的配置即可,dubbo基于spring的schema扩展进行加载。
3.架构演变流程
1.传统架构
传统架构即MVC架构,又称为垂直架构,将一个项目整合在一个工程中,适用于小团队开发
优点是:集中管理
缺点是:耦合度高
单一架构
2.分布式服务架构
分布式架构称为SOA面向服务架构,将一个系统拆分成N多个子系统,每个系统与系统之间互不影响,适合于大团队开发
优点是:降低耦合度,维护性强
缺点是:难管理
4.dubbo工作原理
dubbo工作原理
provider(生产者):提供服务(接口)到注册中心
consumer(消费者):到注册中心订阅服务,一旦有新的服务就会通知consumer(消费者)
consumer(消费者):拿到服务后会到provider(生产者)调用服务
当consumer(消费者)调用provider(生产者)出现的记录会放到 monitor(监控中心)
5.dubbo支持协议
1).dubbo协议
dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。
dubbo缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。
2).Hessian协议
Hessian协议用于集成Hessian的服务,Hessian底层采用Http通讯,采用Servlet暴露服务,Dubbo缺省内嵌Jetty作为服务器实现。
3).HTTP协议
此协议采用spring 的HttpInvoker的功能实现
4)RMI协议
采用JDK标准的java.rmi实现,采用阻塞式短连接和JDK标准序列化方式
6.生产者环境搭建
1).创建maven工程
2).引入dubbo和zk依赖

dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.6</version>
</dependency>
<!-- 添加zk客户端依赖 -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>

3).创建生产者xml配置文件(和spring配置一致)

    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="provider" />
    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />
    <!-- 用dubbo协议在29014端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="29014" />
    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="test.dubbo.service.Service"
        ref="service" />
    <!-- 具体的实现bean -->
    <bean id="service" class="test.dubbo.service.ServiceImpl" />

4).编写服务接口和实现

public class UserServiceImpl  implements UserService{
    private static final String SOURCE="未找到....";
    public String getServiceId(Integer id) {
        System.out.println("已经消费者消费:"+id);
        if(id==1){
            return "张三";
        }
        if(id==2){
            return "李四";
        }
        if(id==1){
            return "王五";
        }
        return SOURCE;
    }

}

5).测试生产者服务

public class TestProvider {
    public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("provider.xml");
        applicationContext.start();
        System.out.println("服务发布成功");
        //让程序阻塞
        System.in.read();


    }
}

7.消费者服务环境搭建
1).创建maven工程
2).引入dubbo+zk依赖

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.6</version>
        </dependency>
        <!-- 添加zk客户端依赖 -->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

3).创建消费者配置文件

<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="consumer" />
    <!-- 使用multicast广播注册中心暴露发现服务地址 -->
    <dubbo:registry protocol="zookeeper" address="zookeeper://127.0.0.1:2181" />
    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
    <dubbo:reference id="service"
        interface="testdubbo.service.Service" />

4).创建消费者服务进行消费

public class ConsumerService {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("consumer.xml");
        applicationContext.start();
        System.out.println("消费者服务启动成功..");
        Service Service = (Service) applicationContext.getBean("Service");
        System.out.println("消费者服务调用生产者服务开始...");
        String result =service.getServiceId(1l);
        System.out.println("消费者服务调用生产者服务结束...result:"+result);
    }

}

8.dubbo-admin管理平台搭建
将dubbo-admin.zip 解压到webapps目录下
修改dubbo.properties zk注册中心连接地址连接信息
启动tomcat即可

9.dubbo集群、负载均衡、容错
修改配置文件:
provider.xml 端口号
启动两个服务

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值