Dubbo和SpringCloud两者间的选择——实现分布式系统服务间通信

现在分布式微服务系统架构的使用越来越广泛,同时也带来了一个很严峻的问题,我们把服务拆分了,表现层和服务层是个独立的项目,甚至服务层里就已经拆分成过个微服务,那如何实现这些系统间的通讯呢?

  1. Webservice:效率不高基于soap协议。项目中不推荐使用。
  2. 使用restful形式的服务:http+json。很多项目中应用。如果服务太多,服务之间调用关系混乱,需要治疗服务。
  3. 使用dubbo或者使用SpringCloud来构建微服务架构。Dubbo使用rpc协议进行远程调用,直接使用socket通信。传输效率高,并且可以统计出系统之间的调用关系、调用次数。

SpringCloud

SpringCloud集合了一系列框架来提供简化的分布式系统基础设施,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署,其中

Spring Cloud Netflix
  是对Netflix开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST客户端、请求路由等。

Spring Cloud Config
  将配置信息中央化保存, 配置Spring Cloud Bus可以实现动态修改配置文件

Spring Cloud Bus
  分布式消息队列,是对Kafka, MQ的封装

Spring Cloud Security
  对Spring Security的封装,并能配合Netflix使用

Spring Cloud Zookeeper
  对Zookeeper的封装,使之能配置其它Spring Cloud的子项目使用

Spring Cloud Eureka

Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件中的一部分,它基于Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能。

Dubbo

Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

该选择谁?

Dubbo和SpringCloud都为分布式微服务系统开发提供了解决方案,他们两者间很显然的一个区别是,SpringCloud集成和封装了一系列完整的框架,而Dubbo则需要开发者自行配置和集成。但同时,使用Dubbo来构建微服务架构也让开发者对框架的使用有更自由的选择。且由于Dubbo是使用二进制的传输,占用带宽会更少,但是对于开发和维护的技术水平要求较高,就目前而言,Dubbo比较适合技术团队实力宏厚的大型项目。相比于Dubbo,Spring Cloud可以说是一个更完备的微服务解决方案,它从功能性上是Dubbo的一个超集,个人认为从选型上对于一些中小型企业Spring Cloud可能是一个更好的选择。

你可能感兴趣的:(开发笔记)