java B2B2C 仿淘宝电子商城系统-Spring Cloud与Dubbo对比

spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操做提供了一种简单的开发方式。 须要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六html

Spring Cloud与Dubbo对比spring

提到Dubbo,我想顺便提下ESB,目前央视新华社也在用ESB来作任务编排,这里先比较下Dubbo和ESB:bash

ESB(企业数据总线),通常采用集中式转发请求,适合大量异构系统集成,侧重任务的编排,性能问题可经过异构的方式来进行规避,没法支持特别大的并发。架构

Dubbo(服务注册管理),采用的是分布式调用,注册中心只记录地址信息,而后直连调用,适合并发及压力比较大的状况;其侧重服务的治理,将各个服务颗粒化,各个子业务系统在程序逻辑上完成业务的编排。并发

回归主题,Spring Cloud和Dubbo又有什么不一样那,首先,咱们看下有什么相同之处,它们两都具有分布式服务治理相关的功能,都可以提供服务注册、发现、路由、负载均衡等。说到这,Dubbo的功能好像也就这么多了,可是Spring Cloud是提供了一整套企业级分布式云应用的完美解决方案,可以结合Spring Boot,Docker实现快速开发的目的,因此说Dubbo只有Spring Cloud的一部分RPC功能,并且也谈不上谁好谁坏。不过,Dubbo项目现已中止了更新,淘宝内部由hsf替代dubbo,我想这会有更多人倾向Spring Cloud了。app

从开发角度上说,Dubbo常与Spring、zookeeper结合,并且实现只是经过xml来配置服务地址、名称、端口,代码的侵入性是很小的,相对Spring Cloud,它的实现须要类注解等,多少具备必定侵入性。负载均衡

Spring Cloud子项目分布式

Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不一样开源产品),以前在第一章节也介绍这些,好比:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring Cloud Commons、Spring Cloud Zookeeper、Spring Cloud CLI等项目,能够跳至(一)看下。spring-boot

配置服务 Spring Cloud提供了Config Server,它有在分布式系统开发中作外部配置的功能,经过Config Server咱们能够集中存储全部应用的配置文件。Config Server支持Git或者在文件系统中放置配置文件(GitLab),一般咱们使用不一样格式来区分不一样应用的不一样配置文件。云计算环境下,习惯上使用YAML配置,并且通常配置文件的位置都放在类路径下的config目录下,配置文件规则:应用名+profile.yml:微服务

[html] view plain copy 
/{application}/{profile}[/{label}]  
/{application}-{profile}.yml  
/{label}/{application}-{profile}.yml  
/{application}-{profile}.properties  
/{label}/{application}-{profile}.properties  
复制代码

Spring Cloud提供了注解@EnableConfigServer来启动配置服务。

服务发现

Spring Cloud经过Netflix OSS的Eureka来实现服务发现,服务发现的主要目的是为了让每一个服务之间能够互相通讯。Eureka Server为微服务的注册中心。谈到Spring Cloud Netflix,它是Spring Cloud的子项目之一,主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路有(Zuul),客户端负载均衡(Ribbon)等。 Spring Cloud使用注解的方式提供了Eureka服务端(@EnableEurekaServer)和客户端(@EnableEurekaClient)。

路由网关

路由网关的主要目的是为了让全部的微服务对外只有一个接口,咱们只需访问一个网关地址,便可由网关将全部的请求代理到不一样的服务中。Spring Cloud是经过Zuul来实现的,支持自动路由映射到在Eureka Server上注册的服务。Spring Cloud提供了注解@EnableZuulProxy来启用路由代理。

负载均衡

Spring Cloud提供了Ribbon和Feign做为客户端的负载均衡。在Spring Cloud下,使用Ribbon直接注入一个RestTemplate对象便可,此RestTemplate已作好负载均衡的配置;而使用Feign只需定义个注解,有@FeignClient注解的接口,而后使用@RequestMapping注解在方法上映射远程的REST服务,此方法也是作好了负载均衡配置。

断路器

断路器(Circuit Breaker)主要是为了解决当某个方法调用失败的时候,调用后备方法来替代失败的方法,已达到容错/阻止级联错误的功能。Spring Cloud使用@EnableCircuitBreaker来启用断路器支持,使用@HystrixCommand的fallbackMethod来指定后备方法。(@HystrixCommand(fallbackMethod=“fallbackOper”)) Spring Cloud还提供了一个控制台来监控断路器的运行状况,经过@EnableHystrixDashboard注解开启。

Spring Cloud依赖库

这里我会罗列下经常使用的一些依赖包,为了更好理解每一个依赖所负责的区域,我仍是用一张和以前相似的图来展现各块的功能:

经常使用依赖包以下:

spring-cloud-starter-parent 具有spring-boot-starter-parent一样功能并附加Spring Cloud的依赖

spring-cloud-starter-config 默认的配置服务依赖,快速自动引入服务的方式,端口8888

spring-cloud-config-server/client 用户自定义配置服务的服务端/客户端依赖

spring-cloud-starter-eureka-server 服务发现的Eureka Server依赖

spring-cloud-starter-eureka 服务发现的Eureka客户端依赖

spring-cloud-starter-hystrix/zuul/feign/ribbon 断路器(Hystrix),智能路有(Zuul),客户端负载均衡(Ribbon)的依赖

angular-ui-router 页面分发路由依赖

Java B2B2C多用户商城 springcloud架构

相关文章
相关标签/搜索