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架构,又称为垂直架构,将一个项目整合在一个工程中,适用于小团队开发
优点是:集中管理
缺点是:耦合度高
dubbo服务治理框架_第1张图片
2.分布式服务架构
分布式架构称为SOA面向服务架构,将一个系统拆分成N多个子系统,每个系统与系统之间互不影响,适合于大团队开发
优点是:降低耦合度,维护性强
缺点是:难管理
4.dubbo工作原理
dubbo服务治理框架_第2张图片
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>
com.alibaba
dubbo
2.5.6



com.github.sgroschupf
zkclient
0.1


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

    
    <dubbo:application name="provider" />
    
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />
    
    <dubbo:protocol name="dubbo" port="29014" />
    
    <dubbo:service interface="test.dubbo.service.Service"
        ref="service" />
    
    <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.alibabagroupId>
            <artifactId>dubboartifactId>
            <version>2.5.6version>
        dependency>
        
        <dependency>
            <groupId>com.github.sgroschupfgroupId>
            <artifactId>zkclientartifactId>
            <version>0.1version>
        dependency>

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


    <dubbo:application name="consumer" />
    
    <dubbo:registry protocol="zookeeper" address="zookeeper://127.0.0.1:2181" />
    
    <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 端口号
启动两个服务

你可能感兴趣的:(dubbo服务治理框架)