由于淘淘商城是基于SOA架构,表现层和服务层是不同的工程,所以要实现商品列表查询需要两个系统之间进行通信。
如何实现远程通信?
1、Webservice:基于soap协议解析xml数据所以效率不高,项目中不推荐使用。
2、使用Restful形式的服务:http+json,很多项目中应用,如果服务太多,服务之间调用关系混乱,需要治疗服务。–应用于小型网站。
3、使用Dubbo:使用RPC协议进行远程调用,直接使用Socket通信,传输效率高,并且可以统计出系统之间的调用关系、调用次数。—缺点:只能是Java与Java项目之间调用
Dubbo就是资源调度和治理中心的管理工具
调用关系说明:
0. 服务容器负责启动,加载,运行服务提供者。
服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者在启动时,向注册中心订阅自己所需的服务。
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
Zookeeper可提供的服务主要有:配置服务、名字服务、分布式同步、组服务等。
注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。使用dubbo-2.3.3以上版本,建议使用zookeeper注册中心。
特点:简单、丰富、高可靠、松耦合交互、资源库