分布式框架dubbox
1 SOA架构
SOA是Service-Oriented Architecture的首字母简称,它是一种支持面向服务的架构样式。从服务、基于服务开发和服务的结果来看,面向服务是一种思考方式。
2 分布式框架dubbo
Dubbox 是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo ,被国内电商及互联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行优化,并继续维护,为了与原有的Dubbo区分,故将其命名为Dubbox。
Dubbox 致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbox就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbox这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架。
节点角色说明:
- Provider: 暴露服务的服务提供方。
- Consumer: 调用远程服务的服务消费方。
- Registry: 服务注册与发现的注册中心。
- Monitor: 统计服务的调用次调和调用时间的监控中心。
- Container: 服务运行容器。
调用关系说明:
- 服务容器负责启动,加载,运行服务提供者。
- 服务提供者在启动时,向注册中心注册自己提供的服务。
- 服务消费者在启动时,向注册中心订阅自己所需的服务。
- 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推
送变更数据给消费者。
- 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,
如果调用失败,再选另一台调用。
- 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计
数据到监控中心。
Service注解与原来不同,需要引入com.alibaba包下的
@Service
1.和原来的注解是一个效果,也就是当前类是一个bean
2.发布服务,暴露方法
@Reference
1.去注册中心找该接口的信息
2.根据信息发送流,获取该接口的实现类的流,产生代理对象
<!-- 20880是默认端口,项目子模块如果部署在多台服务器,则不用修改,如果是测试机,就要改成不同端口-->
<dubbo:protocol name="dubbo" port="20880"/>
<!--指定应用名称-->
<dubbo:application name="dubboxdemo-service"/>
<!--连接zookeeper注册中心-->
<dubbo:registry address="zookeeper://192.168.35.128:2181"/>
<!--包注解扫描-->
<dubbo:annotation package="com.hrh.dubbodemo.service" />
3 zookeeper
官方推荐使用 zookeeper 注册中心。注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。
Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbox 服务的注册中心,工业强度较高,可用于生产环境。
4 项目依赖关系
dao层:
- dao<–pojo
service层(商家商品服务):
- sellergoods_service<–sellergoods_interface<–pojo
web层(运营商管理平台):
- manage_web<–sellergoods_interface<–pojo
web层(商家管理平台):
- shop_web<–sellergoods_interface<–pojo
web<–dubbo–service<–dao