SpringCloud简介

springcloud(一):Spring Cloud简介 研究了一段时间Spring Boot了准备向Spring Cloud进发,公司架构和项目也全面拥抱了Spring Cloud。在使用了一段时间后发现Spring Cloud从技术架构上降低了对大型系统构建的要求,使我们以非常低的成本(技术或者硬件)搭建一套高效、分布式、容错的平台,但Spring Cloud也不是没有缺点,小型独立的项目不适合使用。 Spring Cloud是什么鬼? Spri... 阅读详情

单体架构

缺点:

1.过度的复杂度

  系统本身过于庞大和复杂,以至于任何一个开发者都很难以理解它的全部。这种极度的复杂度会形成恶性循环,由于代码难以理解,因此开发人员更改更容易出错,每一次更改系统更复杂,更难懂。

2.开发速度缓慢

  因为应用太大,每启动一次都需要很长的时间,因此从编辑到构建、运行再到测试这个周期花费的时间越来越长。

3.代码部署的周期很长,而且容易出问题

  程序更改部署到生产环境的时间变得更长。代码库复杂,以至于一个更改可能引起的影响是未知的。开发团队分为多个小组,当需要发布的时候漫长的合并和测试时间非常长。

4.难以扩展

  不能做到按需扩展,只能是扩展整个系统。

5.交付可靠的单体应用是一项挑战

  单体程序缺乏可靠性,这个问题导致了频繁的系统故障和宕机。  应用程序缺乏故障隔离,因为所有模块都运行在同一个进程当中

6.需要长期以来某一个可能已经过时的技术栈

  团队长期使用一套相同的技术,单体架构使得采用新的框架和编程语言变的及其困难。

微服务架构

什么是微服务架构:

简而言之,微服务架构风格这种开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统的。其中每个小型服务都运行在自己的进程中,并经常采用HTTP资源API这祥轻里的机制来相互通信。

这些服务围续业务功能进行构建﹐并能通过全自动的部署机制来进行独立部署。这些微服务可以使用不同的语言来编写﹐并且可以使用不同的数据存储技术。对这些微服务我们仅做最低限度的集中管理。

微服务优点

  1. 独立部署。不依赖其他服务,耦合性低,不用管其他服务的部署对自己的影响。
  2. 易于开发和维护:关注特定业务,所以业务清晰,代码量少,模块变的易开发、易理解、易维护。
  3. 启动块:功能少,代码少,所以启动快,有需要停机维护的服务,不会长时间暂停服务。
  4. 局部修改容易:只需要部署 相应的服务即可,适合敏捷开发。
  5. 技术栈不受限:java,node.js等
  6. 按需伸缩:某个服务受限,可以按需增加内存,cpu等。
  7. 职责专一。专门团队负责专门业务,有利于团队分工。
  8. 代码复用。不需要重复写。底层实现通过接口方式提供。
  9. 便于团队协作:每个团队只需要提供API就行,定义好API后,可以并行开发。

微服务缺点

  1. 分布式固有的复杂性:容错(某个服务宕机),网络延时,调用关系、分布式事务等,都会带来复杂。
  2. 分布式事务的挑战:每个服务有自己的数据库,有点在于不同服务可以选择适合自身业务的数据库。订单用MySQL,评论用Mongodb等。目前最理想解决方案是:柔性事务的最终一致性。
  3. 刚性事务:遵循ACID原则,强一致性。柔性事务:遵循BASE理论,最终一致性;与刚性事务不同,柔性事务允许一定时间内,不同节点的数据不一致,但要求最终一致。​BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent (最终一致性)三个短语的缩写。BASE理论是对CAP中AP的一个扩展,通过牺牲强一致性来获得可用性,当出现故障允许部分不可用但要保证核心功能可用,允许数据在一段时间内是不一致的,但最终达到一致状态。满足BASE理论的事务,我们称之为“柔性事务”。
  4. 接口调整成本高:改一个接口,调用方都要改。
  5. 测试难度提升:一个接口改变,所有调用方都得测。自动化测试就变的重要了。API文档的管理也尤为重要。推荐:yapi。
  6. 运维要求高:需要维护 几十 上百个服务。监控变的复杂。并且还要关注多个集群,不像原来单体,一个应用正常运行即可。
  7. 重复工作:比如java的工具类可以在共享common.jar中,但在多语言下行不通,C++无法直接用java的jar包。

微服务架构的挑战:

1.运维要求较高

更多的服务意味着更多的运维投入。在单体架构中,只需要保证一个应用的正常运行;而在微服务中,需要保证几十甚至几百个服务的正常运行与协作,这给项目的运维带来了很大的挑战。

微服务架构的挑战1.运维要求较高 微服务架构的挑战

2.分布式固有的复杂性

使用微服务构建的是分布式系统。对于一个分布式系统,系统容错﹑网络延迟、分布式事务等都给我们带来了很大的挑战。

3.接口调整成本高

微服务之间通过接口进行通信。如果修改某一个微服务的API,可能所有使用了该接口的微服务都需要做调整。

4.重复劳动

很多服务可能都会使用到相同的功能,而这个功能并没有达到分解为一个微服务的程度,这个时候,可能各个服务都会开发这一功能,从而导致代码重复。

微服务设计原则

单一职责原则:关注整个系统功能中单独,有界限的一部分。

服务自治原则:可以独立开发,测试,构建,部署,运行,与其他服务解耦。

轻量级通信原则:轻,跨平台,跨语言。REST,AMQP 等。

粒度把控:与自己实际相结合。 不要追求完美,随业务进化而调整。《淘宝技术这10年》。

SpringCloud的替代方案:

SpringCloud -> Alibaba

组件

Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。

Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。

Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

Alibaba Cloud ACM:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。

Alibaba Cloud OSS: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。

Alibaba Cloud SchedulerX: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。

Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

第一阶段课程Spring Cloud技术点

Eureka:服务注册与发现,用于服务管理。

Feign: web调用客户端,能够简化HTTP接口的调用。

Ribbon:基于客户端的负载均衡。

Hystrix:熔断降级,防止服务雪崩。

Zuul:网关路由,提供路由转发、请求过滤、限流降级等功能。

Config:配置中心,分布式配置管理。

Sleuth:服务链路追踪

Admin:健康管理

技术选型

  1. Spring Cloud和dubbo组件比较

dubbo:zookeeper+dubbo+springmvc/springboot

通信方式:rpc

注册中心:zookeeper,nacos

配置中心:diamond(淘宝开发)

spring cloud:spring+Netflix

通信方式:http restful

注册中心:eureka,consul,nacos

配置中心:config

断路器:hystrix

网关:zuul,gateway

分布式追踪系统:sleuth+zipkin

  1. 差别

dubbo

spring cloud

背景

国内影响大

国外影响大

平手

社区活跃度

低(现在又好了)

高

cloud胜出

架构完整度

不完善(dubbo有些不提供,需要用第三方,它只关注服务治理)

比较完善,微服务组件应有尽有。

cloud胜出

学习成本

dubbo需要配套学习

无缝spring

cloud胜出

性能

高。(基于Netty)

低。(基于http,每次都要创建)。 此性能的损耗对大部分应用是可以接受的。而HTTP风格的API,是很方便的。用小的性能损耗换来了方便。

dubbo胜出

基础知识补充

QPS和TPS

QPS:Queries Per Second,每秒查询率,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

TPS:Transactions Per Second,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

个人理解如下:

1、Tps即每秒处理事务数,包括了

1)用户请求服务器

2)服务器自己的内部处理

3)服务器返回给用户

这三个过程,每秒能够完成N个这三个过程,Tps也就是N;

2、Qps基本类似于Tps,但是不同的是,对于一个页面的一次访问,形成一个Tps;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“Qps”之中。

例如:访问一个页面会请求服务器3次,因此一次请求,产生一个“T”,产生3个“Q”

Spring Cloud之一 Spring Cloud简介 Spring Cloud之一 Spring Cloud简介,简单介绍SpringCloud,微服务,SOAP等内容 立即下载

相关推荐

Docker网络冲突?手把手教你解决Dify社区版无法访问172.18.0.0网段的问题

本文详细解析了在部署Dify社区版时,因Docker默认网段与局域网冲突导致无法访问172.18.0.0网段的问题。通过剖析Docker网络原理,提供了修改Docker守护进程默认地址池的根治方案,并介绍了在Compose文件中指定自定义网络等备选方法,帮助用户彻底解决网络冲突,保障服务稳定运行。

p8q9r0的博客 484

springcloud简介

springcloud简介一、什么是springcloud二、关于springcloud的网站三、Spring Cloud 现状四、Spring Cloud 优缺点五、创建一个项目来介绍springcloud 今天要讲解的问题 1、springcloud解决了什么问题? 2、最简单的分布式架构的项目 一个消费者一个生产者 3、引入eureka初步解决可能的服务宕机的问题 初步理解注册中心的作用 4、配置注册中心中的服务的联系负责人 一、什么是springcloud Spring Cloud是一系列框架的

小七 4040

转录组数据提取技巧汇总

数据整理是数据分析的前提,而数据的正确提取则是数据整理的前提。

zfyyzhys的博客 1784

Spring Cloud详解

微服务架构的提出者:马丁福勒简而言之,微服务架构样式[1]是一种将单个应用程序开发为一组小服务的方法,每个小服务都在自己的进程中运行并与轻量级机制(通常是HTTP资源API)进行通信。这些服务围绕业务功能构建,并且可以由全自动部署机制独立部署。这些服务的集中管理几乎没有,它可以用不同的编程语言编写并使用不同的数据存储技术。1、 微服务架构只是一个样式,一个风格。2、 将一个完成的项目,拆分成多个模块去分别开发。3、 每一个模块都是单独的运行在自己的容器中。4、 每一个模块都是需要相互通讯的。

a2285786446的博客 5万+

matlab kwave模拟超声换能器学习笔记

kwave模拟超声换能器的学习笔记,从零开始造车轮

SolvingMaster的博客 3197

ansys非线性分析中接触类型

不分离(No Separation)‌:法向始终保持接触不分离,切向允许自由滑动,属于线性接触,适合需要法向约束、允许微小切向位移的场景,比如过盈配合的简化模拟。有摩擦(Frictional)‌:法向允许分离,切向根据用户设置的摩擦系数计算摩擦力,是工程中最符合实际机械接触的类型,绝大多数装配体分析都选择该类型。无摩擦(Frictionless)‌:法向允许接触面分离,切向无摩擦、允许自由滑动,适合模拟理想润滑的光滑接触面,图中当前选择的就是该类型。非线性接触(需要多次迭代,属于真正的非线性接触行为)‌。

qq_15963745的博客 71

Spring Cloud 简介

1、微服务应该具备的功能 2、Spring Cloud介绍 3、Dubbo介绍 4、Kubernetes介绍 5、Spring Cloud与Dubbo比较 6、Spring Cloud 与 Kubernetes 比较

蜕变 5990

ESP32 物联网宠物喂食器:实现远程智能投喂的完整方案

本项目基于 ESP32 实现了智能宠物喂食器的核心功能,硬件结构简单、成本较低,软件支持远程控制和状态监测。添加摄像头:通过 ESP32-CAM 模块实时观察宠物进食情况。APP 集成:开发专属手机 APP,支持定时设置、报警推送、喂食记录查询。语音控制:结合 Alexa 或小爱同学,实现语音指令喂食。太阳能供电:户外使用时,通过太阳能板为设备供电,节能环保。

weixin_42300449的博客 1275

springCloud概述

1.springCloud五大组件运行流程 2.springcloud简单介绍 SpringCloud 是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建。通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。 SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注Netflix 注:为了方便理解假设一个业务场景(场景来源于石杉的架构笔记(id:shishan100)) 假设现在开发一个电商网站,要实现支付订单功能:流程如下: 1.创建

weixin_42143904的博客 2万+

App爬虫实战篇-以华为真机手机爬取集换社的app为例

在开始学习这篇文章之前,建议你先按照之前2篇文章(和),配置必要的环境,才可以继续完成本章节内容。

youbingchen的博客 780

Codex 100个真实案例 - 用AI批量清洗Excel脏数据(10万行3分钟搞定)

每个做数据分析的人都被"脏数据"折磨过——空值、重复行、日期格式五花八门、手机号多一位少一位……手动清洗几千行就已经让人崩溃,更别提10万行了。本文将展示如何用 Codex 生成一套完整的 Python pandas 数据清洗工具,从读取Excel/CSV、识别脏数据、自动清洗、生成清洗报告,到可视化对比清洗前后的数据质量,全程自然语言驱动,10万行数据3分钟搞定!

yueyeguzhuo的专栏 88

Spring Cloud简介

Spring Cloud简介 一、Spring Cloud简介 SpringCloud是微服务架构中的集成,将一系列优秀的组件进行了整合。基于SpringBoot构建,对熟希spring的程序员来说,表容易上手。 通过简单的注解,就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。 那么什么是“微服务架构”呢?简单的说,微服务架构就是将一个完整的应用从数据存储开始垂直拆分成多个不...

weixin_30924087的博客 201

LVGL 组件对齐方式说明

本文说明 LVGL(以 v8 为例)中常用的 lv_align_t对齐选项的含义与用法,对应界面设计工具里下拉列表中的以及等命名。

摸鱼专家 131

spring cloud架构整合-springcloud简介

Spring Cloud是一系列框架的有序集合。利用Spring Boot的开发模式简化了分布式系统基础设施的开发,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud将目前比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装,屏蔽掉了复杂的配置和实现原理,最终整合出一套简单易懂、易部署和易维护的分布式系统架构平台。Spring Cloud的子项目,大致可分成两类:一类是对现有成熟框架Spring Boot的封装和抽象,也是数量最多的项目;第二

m0_61571842的博客 250

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【SpringCloud系列】Spring Cloud - 简介

Spring Cloud - 简介 文章目录Spring Cloud - 简介一、前言1.1 、微服务出现前的单体应用架构1.2、单体应用架构的优缺点1.3、微服务1.4、微服务优点与缺点1.5、微服务设计原则1.6、常见的微服务框架二、SpringCloud2.1、版本说明2.2、SpringCloud组成微信公众号:Java知识集训 一、前言 1.1 、微服务出现前的单体应用架构 一个归档包(可以是JAR、WAR、EAR或其它归档格式)包含所有功能的应用程序,通常称为单体应用。 而架构单体应用的方法论

caychen的博客 341

VC中sqlite的使用

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

springcloud学习(一)-spring cloud简介

title: springcloud学习(一)-spring cloud简介 date: 2021-1-13 tags:“微服务”一词来源于 Martin Fowler 的《Microservices》一文。微服务是一种架构风格,即将单体应用划分为小型的服务单元,微服务之间使用 HTTP 的 API 进行资源访问与操作。简而言之,微服务体系结构是一种将单个应用程序开发为一组小型服务的方法,每个应用程序在自己的进程中运行,并与轻量级机制(通常是 HTTP 资源 API)通信。这些服务围绕业务功能构建,可通过全

qq_44128703的博客 237

SpringCloud 简介

前言     前段时间参与了公司的技术选型,一方面了解了微服务(戳 微服务 Microservice),另一方面就是了解研究SpringCloud。     小编对于SpringCloud的了解仅算是蜻蜓点水,学习也不是一朝一夕的事情,所以技术选型仅算是为自己以后更多的了解开了个头儿。     本篇对SpringCloud做简单介绍,最后附上整理来的SpringCloud相关技术栈,希

王璐 1万+

【SpringCloud】springcloud 简介

0000

✈ 正在努力 の 寒江(StudiousTiger) ✌ 呐 ✈ 623

Dokcer简介与安装以及Springcloud部署

springboot支付宝微信支付 每天多学一点点~ 博主最近在做微服务,听说dokcer部署特别方便,于是研究了一下~ 话不多说,这就开始吧… 文章目录springboot支付宝微信支付1.Docker简介2.Docker优点3.Docker架构4.Docker安装5.Docker镜像加速器6.Docker常用命令7.Docker容器8.初识Dockerfile9.重头戏:使用Dockerfil...

爆裂无球的程序空间 1021

springcloud之简介

springcloud官方文档翻译网站:https://springcloud.cc/ 一、网站架构的演变过程。(这些架构描述的不是很到位,之后需要从新学习)   传统架构  —>   分布式架构   —>   SOA架构   —>   微服务架构   架构博客:https://www.cnblogs.com/Survivalist/p/8012266.html...

GBEzmz1993的博客 172

【SpringCloud】 简介

 1、宏观了解    2、微服务功能   3、 常用组件   简单的SpringCloud架构的微服务系统 ​​  SpringCloudConfig:服务配置中心,将所有的服务的配置文件放到本地仓库或者远程仓库,配置中心负责读取仓库的配置文件,其他服务向配置中心读取配置。SpringCloudConfig使得服务的配置统一管理,并可以在不人为重启服务的情况下进行配置 文件...

程序媛一枚 436

【Spring Cloud】系统架构演变,服务调度方式,SpringCloud简介

【Spring Cloud】系统架构演变,服务调度方式,SpringCloud简介1. 系统架构演变1.1 集中式架构1.2 垂直拆分1.3 分布式服务1.4 面向服务(SOA)1.5 微服务2. 服务调用方式2.1 RPC和HTTP2.2 http客户端工具2.3 Spring的RestTemplate3. SpringCloud简介 1. 系统架构演变 随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。系统架构也因此不断的演进、升级、迭代。从单一应用,到垂直拆分,到分布式服务,

来日浅谈的博客 885

【Spring Cloud】分布式必学springcloud(一)——简介和看法

一、前言       开篇之前,我想说,springcloud会完胜dubbo。       小编以前做分布式是用的webservice、dubbo。最近的项目中,开始使用了springcloud,springcloud包含了很多的组件,这些组件是dubbo没有的,所以使用的......

哈士奇 1万+

SpringCloud简介与5大常用组件

springcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建,对我们熟悉spring的程序员来说,上手比较容易。 通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。 SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注Netflix 图片来源@王璐-Louise。我是画不出来这么美的图的。。。 ...

u012632105的博客 204

16.SpringCloud实战项目-Spring Cloud Alibaba 组件简介

SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程。对架构、业务、技术要点进行讲解。 PassJava 是一款Java面试刷题的开源系统,可以用零碎时间利用小程序查看常见面试题,夯实Java基础。 PassJava 项目可以教会你如何搭建SpringBoot项目,Spring C...

悟空聊架构的专栏 670
上一篇: springCloud学习二之Eureka高可用搭建
下一篇: springCloud学习三之Eureka原理
给自己加加油
博客等级 码龄8年 302粉丝 110原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值