SpringCloud系列:1.认识SpringCloud

springcloud系列1——使用Springboot对外提供rest服务 说明 本系列视频基于周立的视频整理,他的博客地址:http://www.itmuch.com/。 由于springclound基于Springboot,因此第一篇熟悉一下Springboot。 这里为了后面的演示,创建一个project,名为microservice-spring-cloud。 创建2个子模块: * microservice-springcloud-user 该... 阅读详情

一、微服务

微服务(Microservice Architecture)是近几年流行的一种架构思想,它将单个应用程序作为一套小型服务进行开发。每个应用程序(服务)可被独立部署,他们都在自己的进程中运行,并使用轻量级机制(通常是HTTP资源API)进行通信。

随着互联网的发展,单体服务渐渐无法满足企业庞大复杂业务的需求,于是诞生了微服务,微服务很好的填补了单体服务的不足,其明显的特点就是可独立部署,方便灵活扩展,同时做到了服务解耦,资源的有效隔离。

独立部署,灵活扩展

传统的单体架构是以整个系统为单位进行部署,而微服务则是以每一个独立组件(例如用户服务,商品服务)为单位进行部署。下图中左边是单体架构的集群,右边是微服务集群。

资源的有效隔离

微服务设计的原则之一,就是每一个微服务拥有独立的数据源,假如微服务A想要读写微服务B的数据库,只能调用微服务B对外暴露的接口来完成。这样有效避免了服务之间争用数据库和缓存资源所带来的问题。

当然,微服务也存在一些缺点,例如由于服务的拆分,项目数量的增多,增加了开发和测试的复杂度,另外,服务的拆分也是一大难题,糟糕的拆分会使的不同服务间关系错综复杂,会使得开发和维护变得更加艰难,此外,微服务随着分布式的引入,事务一致性,异步补偿机制、日志监控等对于项目组来说都是一项新的挑战。

目前主流的微服务框架:Dubbo、 SpringCloud、thrift、Hessian等,而SpringCloud作为Spring以核心的微服务框架,开箱即用,方便简洁,越来越受到企业和开发者的关注。

二、Spring Cloud

springCloud是基于SpringBoot的一整套微服务框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。

由于SpringBoot旨在简化创建产品级的 Spring 应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用微服务功能,约定优于配置,使得微服务的开发变得简单而清晰。

SpringCloud服务治理

服务治理是Spring Cloud的核心,在实现上其提供了两个选择,即Consul和Netflix的Eureka。Eureka本身是Netflix开源的服务治理产品,SpringCloud对其进行二次封装,形成了Spring Netflix子项目。Eureka提供了服务注册中心,服务发现客户端以及注册服务的UI界面。在Eureka的实现中,节点之间相互平等,有部分注册中心“挂掉”也不会对整个应用造成影响,即使集群只剩一个节点存活,也可以正常地治理服务。即使所有服务注册节点都宕机,Eureka客户端中所缓存的服务实例列表信息,也可让服务消费者能够正常工作,从而保障微服务之间互相调用的健壮性和应用的弹性。

SpringCloud客户端负载均衡

Spring Cloud通过对Netflix微服务开源项目中的Ribbon再次封装,实现了客户端负载均衡。Ribbon默认与Eureak进行无缝整合,当客户端启动的时候,从Eureka服务器中获取一份服务注册列表并维护在本地,当服务消费者需要调用服务时,Ribbon就会根据负载均衡策略选择一个合适的服务提供者实例并进行访问。

此外,通常在微服务调用时通过RestTemplate进行调用,这时需要开发者处理参数、调用路径等,Spring Cloud通过集成Netflix的Feign项目,为开发者提供了声明式服务调用,从而简化了微服务之间的调用处理方式。并且默认Feign项目集成了Ribbon,使得声明式调用也支持客户端负载均衡功能。

SpringCloud服务容错和降级

微服务容错、降级旨在为微服务架构提供更大的弹性,在Spring Cloud中,将再一次拥抱Netflix,通过集成其下子项目Hystrix,通过所提供的@HystrixCommand注解可以轻松为我们所开发的微服务提供容错、回退、降级等功能。此外,Hystrix也默认集成到Feign子项目中。

Hystrix是根据“断路器”模式而创建。当Hystrix监控到某服务单元发生故障之后,就会进入服务熔断处理,并向调用方返回一个符合预期的服务降级处理(fallback),而不是长时间的等待或者抛出调用异常,从而保障服务调用方的线程不会被长时间、不必要地占用,避免故障在应用中的蔓延造成的雪崩效应。

而Hystrix的仪表盘项目(Dashboard)可以监控各个服务调用所消耗的时间、请求数、成功率等,通过这种近乎实时的监控和告警,可以及时发现系统中潜在问题并进行处理。

SpringCloud服务网关

Spring Cloud通过集成Netflix中的Zuul实现API服务网关功能,提供对请求的路由和过滤两个功能,其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础。过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。通过Zuul,可以将细粒度的服务组合起来提供一个粗粒度的服务,所有请求都导入一个统一的入口,对外整个服务只需要暴露一个API接口,屏蔽了服务端的实现细节。通过Zuul的反向代理功能,可以实现路由寻址,将请求转发到后端的粗粒度服务上,并做一些通用的逻辑处理。

此外,Zuul默认会与Eureka服务器进行整合,自动从Eureka服务器中获取所有注册的服务并进行路由映射,实现API服务网关自动配置。

Spring Cloud与分布式配置中心

针对微服务架构下的配置文件管理需求,Spring Cloud提供了一个Config子项目。Spring Cloud Config具有中心化、版本控制、支持动态更新和语言独立等特性。在Config子项目中将微服务应用分为两种角色:配置服务器(Config Server)和配置客户端(Config Client)。使用配置服务器集中地管理所有配置属性文件,配置服务中心可以将配置属性文件存储到Git、SVN等具有版本管理仓库中,也可以存放在文件系统中。默认采用Git的方式进行存储,因此可以很容易地对配置文件进行修改,并实现版本控制。

SpringCloud消息中间件

现代应用中对消息中间件的依赖也越来越重,开发时很多应用功能常借助消息方式来完成。Kafka和RabbitMQ等消息中间件也逐渐成为开发者应用中的一部分,使用这些中间件进行消息的收发处理是一件非常烦琐的事情,更别说在生产环境下更换消息中间件了。Spring Cloud为简化基于消息的开发,提供了Stream子项目,通过建立消息应用抽象层,构建了消息收发、分组消费和消息分片等功能处理,将业务应用中的消息收发与具体消息中间件进行解耦,使微服务应用开发中可以非常方便地与Kafka和RabbitMQ等消息中间件进行集成。

此外,Spring Cloud Bus基于Stream进行扩展,可以作为微服务之间的事件、消息总线,用于服务集群中状态变化的传播。比如Spring Cloud Config借助Bus,可以实现配置的动态刷新处理。

Spring Cloud与微服务链路追踪

Spring Cloud中的Sleuth子项目为开发者提供了微服务之间调用的链路追踪。Sleuth核心思想就是通过一个全局的ID将分布在各微服务服务节点上的请求处理串联起来,还原了调用关系,并借助数据埋点,实现对微服务调用链路上的性能数据的采集。因此,通过Sleuth可以很清楚地了解到一个用户请求经过了哪些服务、每个服务处理花费了多长时间,从而可以对用户的请求进行分析。

三、为何选择Spring Cloud

Spring Cloud作为Spring Boot的传承,遵循约定优于配置的原则,在使用时不需要复杂的配置就可以运行起来,开箱即用,采用自动化配置机制,学习容易,使用简单。

Spring Cloud属于Spring大家族,而Spring是进行企业级开发的首选框架,因此在项目中引入Spring Cloud的技术成本比较低。

Spring Cloud抛弃了传统的RPC通信,采用了基于HTTP的REST方式,使得微服务接口更为灵活,服务提供者和消费者之间的依赖只需要一纸契约即可,而不存在代码级别的强依赖,这对快速演化的微服务架构更合适。

Spring Cloud并没有限制所使用的环境,可以与异构系统进行整合。同时对于所提供的各组件服务既可单独部署,又可集中部署,方便了运维和管理。

SpringCloud系列教程 | 第一篇:介绍 首先讲一下我为什么要写这一系列的文章,现在网上大量的springcloud相关的文章,使用的springboot和springcloud的版本都相对比较老,很多还是在使用springboot1.x的版本,如果尝鲜想使用springboot2.x的版本,很多配置都和之前的不一样,有了大量的修改,很多刚开始学习的朋友可能试一试搭不起来就放弃了,本系列教程就是帮助刚接触springcloud的朋友简单上手,快速起步。简单的说,Dubbo 就是个服务框架,说白了就是个远程服务调用的分布式框架。 阅读详情

相关推荐

SpringCloud系列——1架构演变之SpringCloud由来

回顾架构的演进明确springcloud是什么?明确spring、springboot和springcloud之间的关系,了解springcloud的常用组件及其作用

Eclipse_2019的博客 456

《SpringCloud认知》

前言:        从分布式/微服务的角度来讲,将完整的项目拆分成多个子模块之后,出现一系列的问题,比如子系统之间如何通信的问题等,SpringCloud提供了一整套的解决方案。 正文:                                                                   基础概念 1,集群 >同一个业务,部署在不同的服务器上,即...

杨晓风 迷迭香的记忆 294

SpringCloud Alibaba系列——1Nacos应用

nacos是什么;nacos的作用;nacos-server部署;nacos集成springboot;nacos集成springcloud;nacos常用api的使用;nacos集群部署

Eclipse_2019的博客 1033

SpringCloud系列:1

由于篇幅原因,就不多做展示了《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!352491)]由于篇幅原因,就不多做展示了《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

2401_83916241的博客 985

相机标定原理与张氏标定法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

heeweii的博客 2280

YOLOv8中Bottleneck模块的残差连接机制解析

本文深入解析了YOLOv8目标检测模型中Bottleneck模块的核心设计,重点阐述了其残差连接机制。该机制通过构建一条信息“捷径”,有效缓解了深层网络中的梯度消失问题,稳定了训练过程,并提升了特征提取效率。文章结合代码详细拆解了模块结构,并探讨了其在YOLOv8骨干网络与检测头中的关键作用及参数调优思路。

weixin_29061821的博客 253

SpringCloud 项目基础工程搭建 【SpringCloud系列1】

SpringCloud 大型系列课程正在制作中,欢迎大家关注与提意见。程序员每天的CV 与 板砖,也要知其所以然,本系列课程可以帮助初学者学习 SpringBooot 项目开发 与 SpringCloud 微服务系列项目开发。

代码小疯子 1251

4、设备树的处理(1)

其实到第4节才写设备树的问题完全是因为忘记了,之前有一个版本是先关闭了设备树的,习惯性的认为设备树已经处理完了,失误了!!!前文说过,这个系统是依着荣品的开发板和核心板来的,使用的是5.1内核的SDK。它的SDK里是开发板全功能的,所以设备树也是的。

wsen2012的博客 417

SpringCloud系列(1) - 系列文章前言

文章目录一、系列说明二、系列目录三、知识图谱四、项目源码 一、系列说明 本系列文章主讲实战,细节概念不会过多提及,只会对相关技术进行简介描述 本系列文章主要介绍Spring Cloud各个组件的使用,难度适中,如果要更深等级的请移步到别的文章 等所有文章更新完成后,最后会分享一个分布式实战项目,每一步的搭建都会仔细描述 由于上述所说本系列不会过多描述技术介绍,比如Spring Cloud中的Zu...

TianXinCoord的博客 1086

OpenStack 8 节点生产级高可用(HA)集群实施文档

本文详细介绍了生产级高可用OpenStack集群的架构设计与实施方案。通过采用3节点控制集群(HAProxy+Keepalived)、2节点计算资源池和3节点Ceph分布式存储,实现了控制平面、计算资源和存储系统三个层面的高可用。方案重点阐述了VIP漂移、MariaDB Galera集群、RabbitMQ镜像队列等关键组件的配置方法,并提供了完整的部署流程和故障验证方案。该架构确保任意单节点故障不会影响平台整体可用性,满足生产环境对稳定性、扩展性和可维护性的要求,为构建无单点故障的OpenStack生产环境

彭大帅的博客 781

Zabbix-获取客户端的SNMP数据

网口状态(ifOperStatus)的 OID 是1.3.6.1.2.1.2.2.1.8,查询时需要用1.3.6.1.2.1.2.2.1.8.1(第 1 个网口)、1.3.6.1.2.1.2.2.1.8.2(第 2 个网口)等。表格对象是指 “包含多个同类实例的对象”(如设备的多个网口、多个进程等,每个实例需要单独标识)。在 SNMP 规范中,标量对象的完整 OID 必须以.0结尾,.0是标量对象的唯一实例编号。标量对象是指 “单一值的对象”(如设备的名称、温度、状态等,整个设备只需要一个值来表示)。

徐子元 1726

springcloud系列—Hystrix—第3章-1: 服务容错保护:Spring Cloud Hystrix

资料参考:《Spring Cloud 微服务实战》 目录 快速入门 原理分析 工作流程 1. 创建 HystrixCommand 或 HystrixObservableCommand 对象 2. 命令执行 3. 结果是否被缓存 4. 断路器是否打开 5. 线程池 / 请求队列 / 信息量是否占满 6. HystrixObservableCommand.construct() 或...

weixin_40663800的博客 252

SAP 接口测试操作-业务顾问

业务顾问测试接口操作

weixin_43657667的博客 5157

springcloud系列—Config—第6章-1: Spring Cloud Config 配置中心

资料参考:《Spring Cloud 微服务实战》 目录 分布式配置中心 快速入门 构建配置中心 配置规则详解 客户端配置映射 分布式配置中心 spring cloud config是spring cloud团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端和客户端两部分,其中服务端也称为分布式配置中心,它是一个独立的微服务应用,...

weixin_40663800的博客 299

通信算法之249: DJI波形物理层

D-J-I的Lightbridge波形、Ocusync1波形、Ocusync2波形、Ocusync3波形,

leegang12的专栏 1438

第03章 Hermes Agent 核心原理

环境跑通之后,读者会很自然地想问:Hermes 的内部到底是怎么转起来的?为什么它能做到"越用越聪明"?长对话不会忘记上下文吗?这一章用尽量短的篇幅把核心原理讲清楚。理解原理不是为了纸上谈兵,而是为了在第7章实战时能判断"为什么 Hermes 这么响应"以及"我应该把哪类任务交给它"。

亢少军的博客 141

SpringCloud系列:4(1)

各位读者,由于本篇幅度过长,为了避免影响阅读体验,下面我就大概概括了整理了《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!外链图片转存中…(img-pLKlq4TF-1713329656654)]《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

shenliba的博客 860

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

springcloud系列—ribbon—第2章-1: 客户端负载均衡:Spring Cloud Ribbon

资料参考:《Spring Cloud 微服务实战》 目录 客户端负载均衡 RestTemplate详解 GET请求 POST请求 PUT请求 DELETE请求 源码分析 负载均衡器 AbstractLoadBalancer BaseLoadBalancer DynamicServerListLoadBalancer ZoneAwareLoadBalancer 负载均衡策...

weixin_40663800的博客 671

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SpringCloud系列:1. 简单说明SpringCloud产生的目的

前言 本章主要对Springcloud的大体思路做一个简单概述。 1. SpringCloud方向 SpringCloud的出现是由于微服务变多,需要有一个东西来管理,此时就出现了’Springcloud’来治理(管理)微服务。 2. Springcloud产生的目的 1. Springcloud的目的:对整个项目完成模块化拆分后会出现微服务架 构常见的4个核心问题(Springcloud就是围绕这四个问题去展开的)--> 3. 四个问题,简单说明↓: 问题1:服务非常多,客户端如

llzz_zzll的博客 266

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

1 springCloud 创建父依赖

直接下一步,直接结束,部分配置 还需要再建成后改。使用spring initializr的方式。建成后长这样,把下面这些删掉 或 修改。

小爷欣欣 399

SpringCloud系列:11(1)

在这里,由于面试中MySQL问的比较多,因此也就在此以MySQL为例为大家总结分享。但是你要学习的往往不止这一点,还有一些主流框架的使用,Spring源码的学习,Mybatis源码的学习等等都是需要掌握的,我也把这些知识点都整理起来了《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!记+最新讲解视频+实战项目源码》点击传送门,即可获取!**

m0_75232472的博客 1052

SpringCloud系列(1)--SpringCloud简介

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful AP)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。

m0_64284147的博客 338

springcloud系列—eureka—第1章-1:服务治理:springcloud eureka

资料参考:《Spring Cloud 微服务实战》 目录 服务治理: Spring Cloud Eureka 服务治理 Netfix Eureka 搭建服务注册中心 注册服务提供者 高可用注册中心 服务治理: Spring Cloud Eureka     Spring Cloud Eureka 是Spring Cloud Netfix微服务套件中的一-部分,它基于NetfixE...

weixin_40663800的博客 584
下一篇: SpringCloud系列:2.Spring Boot项目搭建
杨小格
博客等级 码龄10年 19粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值