SpringCloud基础组件总结,与Dubbo框架、SpringBoot框架对比分析
本文源码:GitHub·点这里 || GitEE·点这里
一、基础组件总结
1、文章阅读目录
1)、基础组件
2)、应用案例
基于SpringCloud实现Shard-Jdbc的分库分表扩容
3)、后续更新
该案例主要基于SpringCloud2版本,演示微服务在实际开发中的应用。
<modules>
<!-- 客户端接口层 -->
<module>storey-client-web</module>
<!-- 公共代码块层 -->
<module>storey-block-code</module>
<!-- 中间件管理层 -->
<module>storey-middle-soft</module>
<!-- 数据 中 心层 -->
<module>storey-data-center</module>
<!-- 微服务组件层 -->
<module>storey-cloud-ware</module>
</modules>
采用版本
- Spring: 5.0+
- SpringBoot: 2.0+
- SpringCloud: 2.0+
2、常用组件概念
- Eureka组件
Eureka是一种基于REST的服务,主要用于AWS云,用于定位服务,以实现中间层服务器的负载平衡和故障转移。此服务称为EurekaServer。客户端组件EurekaClient,它使与服务的交互变得更加容易。
- Ribbon和Feign组件
Ribbon是一个客户端的负载均衡(Load Balancer,简称LB)器,它提供对大量的HTTP和TCP客户端的访问控制。
Feign 是一个声明式的 Web Service 客户端。它的出现使开发 Web Service 客户端变得很简单。使用 Feign 只需要创建一个接口加上对应的注解,比如:@FeignClient 接口类注解。
- Hystrix组件
微服务架构中某个微服务发生故障时,要快速切断服务,提示用户,后续请求,不调用该服务,直接返回,释放资源,这就是服务熔断。
- Turbine组件
微服务架构中为了保证程序的可用性,防止程序出错导致网络阻塞,出现了断路器模型。断路器的状况反应程序的可用性和健壮性,它是一个重要指标。HystrixDashboard是作为断路器状态的一个组件,提供了数据监控和直观的图形化界面。
- Zuul组件
Zuul 网关主要提供动态路由,监控,弹性,安全管控等功能。在分布式的微服务系统中,系统被拆为了多个微服务模块,通过zuul网关对用户的请求进行路由,转发到具体的后微服务模块中。
- Config组件
在微服务系统中,服务较多,相同的配置:如数据库信息、缓存、参数等,会出现在不同的服务上,如果一个配置发生变化,需要修改很多的服务配置。spring cloud提供配置中心,来解决这个场景问题。
- Zipkin组件
Zipkin是SpringCloud微服务系统中的一个组件,实现了链路追踪解决方案。可以定位一个请求到底请求了哪些具体的服务。在复杂的微服务系统中,如果请求发生了异常,可以快速捕获问题所在的服务。
二、Boot 对比Cloud
SpringBoot专注于快速开发单个微服务。SpringCloud是关注全局的微服务协调框架,它将SpringBoot开发的单个微服务整合管理,并为微服务之间提供,配置管理、服务发现、断路器、路由网关等集成服务,SpringCloud依赖SpringBoot。
三、Dubbo对比Cloud
1、调用方式对比
服务调用方式是 Dubbo 和 Spring Cloud 重要不同点,熟悉RPC/HTTP/REST概念,有助对比 Dubbo 和SpringCloud。RPC 是远端过程调用,其调用协议通常包含传输协议和编码协议。RPC调用是面向服务的封装,针对服务的可用性和效率等都做了优化。http是超文本传输协议,RPC 也可以用http作为传输协议,但一般是用 tcp作为传输协议。
2、执行性能对比
Dubbo 采用单一长连接和NIO异步通讯(保持连接/轮询处理),使用自定义报文的TCP协议,并且序列化使用定制Hessian2框架,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况,但不适用于传输大数据的服务调用。Spring Cloud 直接使用 HTTP 协议,在性能上弱于Dubbo。
3、注册中心对比
这里通常指ZooKeeper(Dubbo注册中心)和Eureka(Cloud注册中心)的对比。分布式领域著名的CAP理论(C:数据一致性,A:服务可用性,P:分区故障的容错性),Zookeeper保证的是CP,但对于服务发现而言,可用性比数据一致性更加重要,AP胜过CP,而 Eureka 设计则遵循 AP 原则。
4、框架生态对比
Dubbo 专注 RPC 和服务治理,Spring Cloud 则是一个微服务架构生态。
四、源代码地址
GitHub·地址
https://github.com/cicadasmile/spring-cloud-base
GitEE·地址
https://gitee.com/cicadasmile/spring-cloud-base
SpringCloud基础组件总结,与Dubbo框架、SpringBoot框架对比分析的更多相关文章
- 微服务架构案例(05):SpringCloud 基础组件应用设计
本文源码:GitHub·点这里 || GitEE·点这里 更新进度(共6节): 01:项目技术选型简介,架构图解说明 02:业务架构设计,系统分层管理 03:数据库选型,业务数据设计规划 04:中间件 ...
- Dubbo整合Springboot框架
本文使用的是alibaba的Dubbo. Dubbo整合Springboot可以分为四步: 第一步:首先需要了解Dubbo官方给的建议,至少有三个工程: 接口工程:主要存实体bean和业务接口 服务提 ...
- dubbo+zookeeper+springBoot框架整合与dubbo泛型调用演示
dubbo + zookeeper + spring Boot框架整合与dubbo泛型调用演示 By:客 授客 QQ:1033553122 欢迎加入全国软件测试交流 QQ 群:7156436 ...
- 文件系统(01):基于SpringBoot框架,管理Excel和PDF文件类型
本文源码:GitHub·点这里 || GitEE·点这里 一.文档类型简介 1.Excel文档 Excel一款电子表格软件.直观的界面.出色的计算功能和图表工具,在系统开发中,经常用来把数据转存到Ex ...
- SpringCloud微服务:基于Nacos组件,整合Dubbo框架
源码地址:GitHub·点这里 || GitEE·点这里 一.基础组件简介 1.Dubbo框架 Dubbo服务化治理的核心框架,之前几年在国内被广泛使用,后续由于微服务的架构的崛起,更多的公司转向微服 ...
- 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...
原文:手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 本文你将学到什么? 本文将以原理+实战的方式,首先对& ...
- Spring-Cloud之Spring-Boot框架-1
一.Spring Boot 是由 Pivotal 团队开发的 Spring 框架,采用了生产就绪的观点 ,旨在简化配置,致力于快速开发. Spring Boot 框架提供了自动装配和起步依赖,使开发人 ...
- 搭建SpringBoot+dubbo+zookeeper+maven框架(二)
上一篇文章是关于搭建SpringBoot+dubbo+zookeeper+maven框架的,但是里面的功能还不够完善,今天就日志管理方面做一些改善. 下了demo的网友可能会发现项目在启动时会有警告: ...
- 搭建SpringBoot+dubbo+zookeeper+maven框架(一)
这几天项目还没来,所以就自己试着参考网上的一些资料,搭建了一个SpringBoot+dubbo+zookeeper+maven框架,网上参考的很多资料照着他们一步一步搭建,最后很多都运行不通,很是郁闷 ...
随机推荐
- Hadoop之HDFS文件系统
概念 HDFS,它是一个文件系统,用于存储文件,通过目录树来定位文件:其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色. HDFS的设计适合一次写入,多次读出的场景,且不 ...
- 关于Java中2.0-1.1!=0.9的问题
关于Java中2.0-1.1!=0.9的问题 问题引出: 在<Java核心技术>中关于浮点数值计算部分提到,System.out.println(2.0-1.1)这条语句并不是想当然的0. ...
- Java thinking,What is the result?
interface O { public Integer oc(Integer i); } abstract class A { Integer i; public A(){ this.i = 0; ...
- JavaScript笔记六
1.对象(Object) - 对象是JS中的引用数据类型 - 对象是一种复合数据类型,在对象中可以保存多个不同数据类型的属性 - 使用typeof检查一个对象时,会返回object - 创建对象 - ...
- Fortran输入输出与声明--xdd
1.建议程序总体格式: program ex1. ... end progr 2.想要打出 My name is "xdd". write(*,*)" My name i ...
- Java入门系列之集合HashMap源码分析(十四)
前言 我们知道在Java 8中对于HashMap引入了红黑树从而提高操作性能,由于在上一节我们已经通过图解方式分析了红黑树原理,所以在接下来我们将更多精力投入到解析原理而不是算法本身,HashMap在 ...
- springboot整合netty的多种方式
netty作为一个高性能的io框架,是非好用的一个技术框架, Netty 是一个基于NIO的客户.服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户. ...
- python与redis交互及redis基本使用
Redis简介 Redis是一使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日个开源的志型.Key-Value数据库,并提供多种语言的API. 从2010年3月15日起,Redis的开发工 ...
- Elasticsearch系列---并发控制及乐观锁实现原理
概要 本篇主要介绍一下Elasticsearch的并发控制和乐观锁的实现原理,列举常见的电商场景,关系型数据库的并发控制.ES的并发控制实践. 并发场景 不论是关系型数据库的应用,还是使用Elasti ...
- .NET Core应用框架AA介绍(二)
AA的开源地址 https://github.com/ChengLab/AAFrameWork AA框架是一个基础应用框架,是建立在众多大家熟知的流行工具之上并与之集成.比如:ASP.NET Core ...