• soa架构-Dubbo架构,框架,技术的使用


    dubbo的介绍

     

    推荐使用zookeeper。

    dubbo开发微服务,有启动的先后顺序的,要先启动服务提供者

    zookeerper挂掉了,服务消费者依然能调用服务提供者,因为服务消费者第一次再注册中心拉取到服务后,会做本地缓存,只要不重启消费者就可一致调用;重启会有启动时检查,所以重启后就启动不了了

    去dubbo的管理控制台卡伊查看日志

    启动时检查配置  check属性 是全局和局部的并且(有false就是false,不去检查提供者),但是对于单个的和全部的是单个优先

     结果缓存: 如果不再引用提供者接口实现类的时候加cache属性,那每次都会调用提供者

    但是直接在这上面加,这就是所有实现类的方法都会做缓存,但我们只需要查询做缓存

    注意事项:    一定要把linux的防火墙关闭 systemctl stop firewalld

          还要记得开启zookeeper       ./zkServer.sh start.

          dubbo是基于socket协议/dubbo协议的,所以在进行pojo(实体类及其模板类)传输的时候报了异常,因为pojo没有实现序列化接口,就无法进行基于二进制的序列化传输

          所以当你用mybatis的逆向工程生成实体类及其模板类(里面有4个类的都序列化)的时候得手动实现序列化
    一。前引
    软件构架的发展过程:
    集中(单一)式架构(单体应用)---》垂直架构---》分布式架构---》流动计算架构(SOA)

    集中式架构:就一个tomcat,所有功能部署在一起。。不能高并发
    垂直架构:多个tomcat, 分成多个项目,项目与项目之间的存在数据冗余,耦合性较大
    分布式架构:多个tomcat,将核心公共通用的业务抽取出来,作为独立的服务
    分布式以后,web层和业务层分开成两个项目(不同的tomcat)
    分布式架构最主要的特点就是远程调用
    调用关系错综复杂
    流动计算(SOA)架构:在分布式计算架构下,添加了监控中心与注册中心。


    二。Dubbo
    1.概念:Dubbo可以实现基于SOA架构的软件设计,是一种架构,是一款高性能的Java RPC框架。
    Dubbo是可以和Spring框架无缝集成
    Dubbo作为一个RPC框架,其最核心的功能就是要实现跨网络的远程调用
    dubbo协议高效的原因:单一长连接和NIO异常通讯
    与http协议的区别就是更加高效

    可以与CXF框架(webservice)比较:https://www.cnblogs.com/lanto/p/13285102.html


    2.图形原理:

    3.Dubbo架构设计的元素:服务提供方,服务消费方,注册中心,监控中心,抽取出的公共业务

    3.1注册中心:
    存储的是 提供方提供的自己地址字符串。
    注册中心是依靠Zookeeper(简称zk)树型目录服务。分为两种,一种是linux版本的,一种是windows版本的
    对于windows版,直接D:Astudy软件语言Javajava就业班项目一7.saax-export_day073.资料和工具1 zookeeperwindows版zookeeperzookeeper-3.4.6in 点击zkServer.cmd
    对于linux版,把D:Astudy软件语言Javajava就业班项目一7.saax-export_day073.资料和工具1 zookeeperlinux版zookeeper下的压缩包拖入linux虚拟机

    3.2服务提供方

    相当于service层,
    所以要有对应seviece接口和实现类

    添加依赖,编写dubbo-provider.xml,编写web.xml用来监控dubbo-provider.xml
    注意在实现类上加@Service(阿里巴巴的),这个注解是用来生成实现类的动态代理),这个注解是用来生成实现类的动态代理
    而在springmvc用的@Service是从ioc容器里面取出的

    日志配置文件放进去
    部署tomcat的时候,记得改端口号,防止和8080相撞

    运行tomcat,不报错就是正常


    3.3服务消费方
    相当于web层
    添加依赖,编写dubbo-consumer.xml,编写web.xml去连接dubbo-consumer.xml
    只需要编写和service层一样包结构的接口
    配置控制器,控制器里面使用@Reference去引入service项目的服务接口
    tomcat部署改端口号,在运行

    3.4抽取出的公共业务
    就是接口,抽取出来,包结构要一样
    所以service是剩下实现类,web剩下控制器

    3.5 监控中心 一般是给运维团队用

    扩展:
    1.我们测试的时候,可以用main函数启动服务

    public class CompanyProvider {
    
        public static void main(String[] args) throws IOException {
            //1.加载配置文件
            ClassPathXmlApplicationContext
                     cxt = new ClassPathXmlApplicationContext("classpath*:spring/applicationContext-*.xml");
            //2.启动
            cxt.start();
            //3.阻塞,让程序继续运行下去
            System.in.read();
    
        }
    
    }
    

      


    2.为集群的服务器分配请求的算法是负载均衡
    负载均衡:random(随机,默认), roundrobin(轮询), leastactive(最少活跃调用数)
    配置负载均衡策略,既可以在服务提供者一方配置,也可以在服务消费者一方配置
    //在服务消费者一方配置负载均衡策略
    @Reference(check = false,loadbalance = "random")
    //在服务提供者一方配置负载均衡
    @Service(interfaceClass = HelloService.class,loadbalance = "random")


    3.Dubbo服务调用超时时间
    原因:dubbo服务调用时间默认为1秒,且超过指定的时间调用服务还没有结束的话就自动重试2次。
    解决:在提供方或者消费方一方就行修改就行
    //在提供方,@Service(timeout=10000)
    //在消费方,@Reference(timeout=10000)

    一个Java开发的菜鸟
  • 相关阅读:
    【oracle】约束之非空约束
    【oracle】操作表数据之修改和删除
    【oracle】操作表中的数据之添加
    HashMap和HashTable的比较
    java集合类-总纲
    性能测试工具篇(开源&商业)
    比较好的idea工具介绍
    根据mysql某一条记录生成对应实体类的初始化
    Spring+mybatis多数据源切换笔记
    Jmeter的Throughput和平均响应时间计算方法整理
  • 原文地址:https://www.cnblogs.com/lanto/p/13226953.html
Copyright © 2020-2023  润新知