分布式架构简介和 dubbo 框架的基本使用
分布式架构简介
分布式架构就是将若干个独立的系统统一成一个集合系统,但是使用起来像一个系统。分布式架构的出现是为了应对复杂的网络环境,解决高并发环境下服务系统响应缓慢、效率低下、不可用的问题。目前软件行业中使用的应用架构主要有以下三种:
1.单一架构:将所有的应用集中在一台服务器上,适合访问流量很小的系统,例如超时收银台、快递打包等系统。单一架构的缺点就是一旦服务器宕机,服务终止,并且扩展性差,维护困难。
2.垂直架构:将大的应用分成多个小应用,并且每个小应用放到不同的服务器上,服务器的数量由各自的访问频率决定。垂直架构扩展容易,但是需要解决各个服务之间相互调用问题,业务和界面没有分离,页面修改,需要重新部署项目。
3.分布式架构(水平架构):将业务按照层次进行拆分,例如频繁被调用的拆分成依赖(实体类、工具类、service 接口...),业务层和视图层分离等,分布式架构需要使用某种方式解决各个业务模块之间的远程调用问题,需要使用 RPC 远程调用,dubbo 框架则实现了RPC通信。分布式架构解决了分布式系统中业务之间的远程调用问题,但是需要有统一的调度中心。
Dubbo 框架简介
dubbo 框架是阿里巴巴公司开发的开源框架,是一个高性能的 RPC 框架,解决分布式调用问题,并且可以和其他框架联合使用,它提供了3 大核心功能:1.面向接口的远程调用;2.智能容错和负载均衡;3.服务自动注册和发现。
dubbo 框架强依赖于 spring 容器,底层采用的网络传输方式是socket 长连接,所以服务连接效率快,并且网络传输数据的格式采用了二进制传输,数据传输速率快。
dubbo 框架中的角色及职能:
服务提供者:provider
消费者:consumer
注册中心:registry
监控中心:monitor
一个简单的分布式架构案例
查询学生信息应用介绍:这个小 demo 使用 ssm 框架,但是为了简单这个案例就不涉及数据库的操作了,直接进入业务拆分。应用在window 上开发,开发完成后测试没问题后部署到Linux再次进行测试,所以至少需要在虚拟机上安装四个Linux 系统进行测试、四个系统分别对应服务提供者、消费者、注册中心、监控中心!!!
1.公共接口:经常被业务调用,但是不是业务的主要组成部分的功能拆分成jar包,使用 maven 的 install 打包。注意:实体类需要实现 Serializable 接口,因为 dubbo 底层会自动处理序列化的对象,通过二进制进行传输。
2.服务提供者(provider):服务提供者实现service接口,并且将自己所提供的的服务内容到注册中心注册。
3.消费者(consumer):消费服务,需要订阅注册中心,然后根据注册中心的通知调用服务。
注:依赖和服务提供者一样。
3.注册中心(registry):注册中心通过将服务统一进行管理,可以有效的优化应用对服务的发布/使用的流程和管理,通过特定的协议完成服务的统一。服务提供方到注册中心去发布服务,消费者去注册中心订阅服务,注册中心通知消费者服务已发布可以调用。注册中心可以使用Multicast(组播方式)、redis(NoSQL数据库)、simple(dubbo一个服务)、zookeeper(推荐使用)。
注:zookeeper 不是dubbo的功能,而是大数据中的一个组件,类似window中的资源管理器或者注册表,它采用树状结构保存数据,树中每个节点都可以有子节点,每个节点对应一个唯一的服务资源。zookeeper依赖java环境。
在Linux中安装配置zookeeper:
提前准备到Linux系统的zookeeper和jdk安装包,解压
在zookeeper解压包根目录下创建data目录,作为保存数据的目录
在conf目录下拷贝zoo_sample.cfg 文件命名为zoo.cfg
修改zoo.cfg配置文件
启动/关闭zookeeper服务(在bin目录下)
这样,我们的监控中心就可以运行了,我们的小程序也能运行,其实不需要监控中心,dubbo 也能是用来了,但是我们看不到系统中有哪些服务提供者和消费者,为了更好的调试、管理这些服务,于是引入了dubbo-admin (监控中心),对服务提供者和消费者进行管理,并做出动态的调整。
4.监控中心:dubbo给我们提供了监控中心,并且是由springboot(内嵌Tomcat服务器)开发的,不需要再安装Tomcat服务器,在安装时需要指定注册中心的地址,就可从注册中心获取所有的服务提供者和消费者,然后就可以进行配置管理。
注意:监控中心是一个web应用程序,但是由springboot开发的,因此是一个jar包,也需要依赖java环境。
配置:打开dubbo-admin的jar包,修改application.properties文件,如图所示。
将jar包放到Linux系统中,同时创建一个webapp目录
启动监控中心
java -jar dubbo-admin-0.0.1-SNAPSHOT.jar
5.将window中的服务提供者、消费者打war包,并且放到各自的Linux系统中,启动Tomcat服务,然后开启注册中心、监控中心,测试…