soa架构-Dubbo架构,框架,技术的使用
Posted lanto_liang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\\软件语言\\Java\\java就业班\\项目一\\07.saax-export_day07\\03.资料和工具\\01 zookeeper\\windows版zookeeper\\zookeeper-3.4.6\\bin 点击zkServer.cmd
对于linux版,把D:\\Astudy\\软件语言\\Java\\java就业班\\项目一\\07.saax-export_day07\\03.资料和工具\\01 zookeeper\\linux版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)
以上是关于soa架构-Dubbo架构,框架,技术的使用的主要内容,如果未能解决你的问题,请参考以下文章