SpringCloud概论

news2024/11/28 1:20:22

目录

1.实现微服务需要解决的问题

2.解决这些问题需要的技术栈

3.spring cloud

4.Netflix和Alibaba

5.springCloud和doubbo

6.版本适配

7.停更


1.实现微服务需要解决的问题

马丁福勒于2014年在一篇文章中提出微服务架构,原文地址如下:

Microservices

微服务只是一个概念,目前业内还没有统一的标准。

微服务的概念大致如下:

将大系统划为一个个分开部署的小服务。小服务独立运行,采用轻量级的通信机制进行相互沟通、调用。由于通信底层基本是采用面向API的http请求,模块之间只有数据交互,并无直接的代码调用,所以不同模块可以采用不同的编程语言来编写。

微服务在实现上需要解决以下一些问题:

  • 客户端如何知道服务在哪台服务器上?
  • 服务间如何进行通信?
  • 如何进行容错?

其实不管是spring cloud也好,还是其它微服务框架也好,核心就是要解决以上几个问题,各个框架的不同点只是在于解决上面问题的方式不同。

2.解决这些问题需要的技术栈

前面我们已经说了微服务在实现上需要解决的一些问题,这些问题细化下来需要多个维度的技术来一起解决,因此目前微服务的技术栈长这样:

维度组件
服务开发Springboot、spring、springMVC
服务配置与管理Netfilx公司的Archaius、阿里的Diamond
服务注册与发现Eureka、Consul、Zookeeper
服务调用Rest、RPC、gRPC
服务的熔断器Hystrix、Enovy等
负载均衡Ribbon、Nginx等
服务接口调用Feign
消息队列Kafka、RabbitMQ、ActiveMQ等
服务配置中心管理SpringCloudConfig、chef等
服务路由(API网关)Zuul等
服务监控Zabbix、Nagios、Metrics、Spectator等
全链路追踪Zipkin、Brave、Dapper等
服务部署Docker、OpenStack、Kubernates等
数据流操作开发包SpringCloud Stream(封装Redis、RabbitMQ、Kafka等发送接收消息)
时间消息总线Spring Cloud Bus

3.spring cloud

分布式微服务技术栈是个理念,由多个维度的技术理念来构成。

springCloud则是分布式微服务技术栈的一个落地实现。其中实现或者集成一个分布式技术栈需要的各个维度的技术。是个一站式的分布式微服务全家桶。

有的技术维度是springcloud自己实现,有的则是集成市面上成熟优秀的解决方案。

spring官网上对于springCloud的介绍原文:

“Building distributed systems doesn't need to be complex and error-prone. Spring Cloud offers a simple and accessible programming model to the most common distributed system patterns, helping developers build resilient, reliable, and coordinated applications. Spring Cloud is built on top of Spring Boot, making it easy for developers to get started and become productive quickly.”

构建分布式系统不需要复杂且容易出错。SpringCloud为最常见的分布式系统模式提供了一个简单和可访问的编程模型,帮助开发人员构建弹性、可靠和协调的应用程序。SpringCloud构建在SpringBoot之上,使开发人员很容易开始工作并迅速提高生产力。

4.Netflix和Alibaba

alibaba率先推出微服务框架dubbo,dubbo是个生态体系,各个环节均整合业内优秀的方案(如注册中心采用zookeeper,等等……),业内没有成型解决方案的,alibaba再推出自己的组件,最初的dubbo较为简陋只支持最基础的服务管理功能。

后来alibaba没有连续迭代dubbo,中间断代一段时间,

spring社区联合Netflix公司抓住机会推出springcloud Netflix,分布式微服务的一站式解决方案。迭代到H版时,由于核心开发团队人员流失,springcloud Netflix官方失去继续大版本迭代的能力,目前springcloud Netflix版已经进入维护模式,只进行修补,不再进行大版本的迭代。

alibaba随后接棒推出springcloud alibaba。springcloud alibaba已经登录spring社区。

所以springcloud存在一个新旧体系的问题。

5.springCloud和doubbo

通信机制上的区别:

SpringCloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式严格来说,这两种方式各有优劣。虽然从一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适
上手代价上的区别:

SpringCloud是一个全家桶,各种组件都组装好了,开箱即食,就像一台一体式的品牌机,一步到位。doubbo就像一台组装式的电脑,各环节选择的自由度很高,以doubbo为核心需要辅以其它第三方组件来实现微服务架构。

社区支持与更新力度:
最为重要的是,DUBBO停止了5年左右的更新,虽然2017.7重启了。对于技术发展的新需求,需要由开发者自行拓展升级(比如当当网弄出了Dubbox) ,这对于很多想要采用微服务架构的中小软件组织,显然是不太合适的,中小公司没有这么强大的技术能力去修改Dubbo源码+周边的一整套解决方案,并不是每一个公司都有阿里的大牛+真实的线上生产环境测试过。

以下是他们各自组件的不同:

6.版本适配

springcloud和springboot之间存在版本号兼容问题

springcloud官网上给出了boot和cloud间的版本号适配。

7.停更

springcloud中有些组件停止了更新。

注册中心:

Eurake停用,使用Nacos。

服务调用:

Ribbon停止更新,建议使用LoadBalancer。

Feign停用,使用OpenFeign。

服务降级:

Hystrix停用,使用Sentinel。

服务网关:

Zuul停用,使用gateWay。

服务配置:

Config停用,使用Nacos。

服务总线:

Bus停用,使用Nacos。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/566924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++STL— stack和queue的介绍及使用

stack stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其只能从容器的一端进行元素的插入与提取操作。 stack的定义方式 方式一&#xff1a; 使用默认的适配器定义栈。 stack<int> st1; 方式二&#xff1a; 使用特定的适配器定义…

病毒分析丨plubx

作者丨黑蛋 一、基本信息 文件名称 00fbfaf36114d3ff9e2c43885341f1c02fade82b49d1cf451bc756d992c84b06 文件格式 RAR 文件类型(Magic) RAR archive data, v5 文件大小 157.74KB SHA256 00fbfaf36114d3ff9e2c43885341f1c02fade82b49d1cf451bc756d992c84b06 SHA1 1c251974b2e…

CTF 2023 三道pwn题

作者丨selph appointment_book 程序信息 程序保护信息&#xff1a; ➜ HeroCTF checksec appointment_book [*] /home/selph/ctf/HeroCTF/appointment_book Arch: amd64-64-little RELRO: No RELRO Stack: Canary found NX: NX enabled …

报名仅剩十天!又一开发者公布高分方案源代码,助力软件杯选手高效解题

‍‍ 本文作者&#xff1a;艾宏峰 算法工程师 M6 Global赛道总排名4th KDD Cup 2022风电功率预测飞桨赛道5th “中国软件杯”大学生软件设计大赛——龙源风电赛道&#xff0c;5月31日预选赛截止&#xff0c;80%选手将晋级区域赛&#xff0c;欢迎大家抓紧报名&#xff01; 赛题背…

如何编写快速高效的SQL查询(二)——为什么查询速度会慢与优化数据访问样例

为什么查询速度会慢&#xff1f; 我们现在已经知道MySQL优化器帮我们做了什么了&#xff0c;在尝试编写快速的查询之前&#xff0c;需要清楚一点&#xff0c;真正重要的是响应时间。如果把查询看作一个任务&#xff0c;那么它由一系列子任务组成&#xff0c;每个子任务都会消耗…

Django+mysql+bootstrap学习

python与mysql 创建表结构 create databse unicom DEFAULT CHARSET utf8 COLLATE utf8_general_ci; use unicom; create table admin(id int not null auto_increment primary key,username varchar(16) not null,password varchar(64) not null,mobile char(11) not null )…

Cesium源码分享--量算

Cesium量算插件 在线体验 gitee&#xff1a;https://gitee.com/caozl1132/CesiumExp-measure github&#xff1a;https://github.com/gitgitczl/CesiumExp-measure ps&#xff1a;如果可以的话&#xff0c;希望大家能给我个star&#xff0c;好让我有更新下去的动力&#xff1…

基于SSM的果蔬经营平台系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 前言…

Axure教程—动态多散点图(中继器)

本文将教大家如何用AXURE制作动态多散点图 一、效果介绍 如图&#xff1a; 预览地址&#xff1a;https://w8j93u.axshare.com 下载地址&#xff1a;https://download.csdn.net/download/weixin_43516258/87817783 二、功能介绍 简单填写中继器内容即可生成动态多散点图样式…

ChatGpt国内免费网站大全+个人体会

目录 ChatGpt ChatGpt迭代历史 部分ChatGpt个人体会 ChatGpt合集 ChatGpt2步制作流程图与思维导图&#xff0c;你确定不来看一下吗? 当然&#xff0c;你可以自行注册使用ChatGpt&#xff08;亲测有效&#xff09; ChatGpt ChatGPT是由OpenAI开发的一种大型语言模型&#…

《The Element of Style》阅读笔记 —— 章节 II Elementary Principles of Composition

前言&#xff1a;本篇为书籍《The Element of Style》第二章的阅读笔记。 本书电子版链接&#xff1a;http://www.jlakes.org/ch/web/The-elements-of-style.pdf 章节 I Elementary Rules of Usage 阅读笔记&#xff1a;链接 Content II Elementary Principles of Composition…

这些脑洞大开的论文标题,也太有创意了O(∩_∩)O

microRNAs啊microRNAs&#xff0c;谁是世界上最致命的髓母细胞瘤microRNAs&#xff1f; 这个标题很容易让人联想到白雪公主后妈说的那句话&#xff1a;Mirror mirror on the wall, who is the fairest of them all? 02 一氧化碳&#xff1a;勇踏NO未至之境 NO 指 nitric oxide…

Spring Boot中使用Spring Batch处理批量任务

Spring Boot中使用Spring Batch处理批量任务 Spring Batch是Spring框架的一个模块&#xff0c;它提供了一组API和工具&#xff0c;用于处理批量任务。在本文中&#xff0c;我们将会介绍如何在Spring Boot中使用Spring Batch来处理批量任务。我们将会使用一个简单的示例来说明如…

在现有iOS项目中,接入新的Flutter项目或现有的Flutter项目

文章参考自Flutter官网&#xff1a;进入Flutter官网 目录 一、背景 二、在现有iOS项目中&#xff0c;接入新的Flutter工程 1、创建新的Flutter工程 2、将iOS工程与Flutter工程进行关联 三、在现有iOS项目中&#xff0c;接入现有的Flutter工程 1、修改Flutter工程中的pub…

如何提高程序员的代码质量?

作为一名程序员&#xff0c;我们需要不断学习、探索新的技术&#xff0c;以便编写出高质量、可维护、安全且高效的代码。但是&#xff0c;即使是经验丰富的程序员也容易遇到一些技术陷阱&#xff0c;这些陷阱可能会导致运行时错误、性能问题或安全漏洞。下面是一些程序员绝对不…

DSOL:一种快速的直接稀疏里程计方案

文章&#xff1a;DSOL: A Fast Direct Sparse Odometry Scheme 作者&#xff1a;Chao Qu, Shreyas S. Shivakumar, Ian D. Miller and Camillo J. Taylor 编辑&#xff1a;点云PCL 代码&#xff1a;https://github.com/versatran01/dsol.git 来源&#xff1a;arXiv2022 欢迎各位…

Elastic 发布 Elasticsearch Relevance Engine™ — 为 AI 革命提供高级搜索能力

作者&#xff1a;Matt Riley 今天我们将向大家介绍 Elasticsearch Relevance Engine™&#xff08;ESRE™&#xff09;&#xff0c;这是一种创建高度相关的 AI 搜索应用程序的新功能。ESRE 建立在 Elastic 在搜索领域的领导地位以及超过两年的机器学习研究和开发基础之上。Elas…

Java agent入门及demo示例(附源码)

这里是weihubeats,觉得文章不错可以关注公众号小奏技术&#xff0c;文章首发。拒绝营销号&#xff0c;拒绝标题党 背景 继之前我们研究了下skywalking是什么以及skywalking如何监控skywalking 我们并没有探讨过多的skywalking原理 实际上skywalking的实现原理就是java的agent…

Android 12系统源码_窗口管理(一)WindowManagerService的启动流程

前言 WindowManagerService是Android系统中重要的服务&#xff0c;它是WindowManager的管理者&#xff0c;WindowManagerService无论对于应用开发还是Framework开发都是重要的知识点&#xff0c;究其原因是因为WindowManagerService有很多职责&#xff0c;每个职责都会涉及重要…

RabbitMQ发送方确认机制

1、前言 RabbitMQ消息首先发送到交换机&#xff0c;然后通过路由键【routingKey】和【bindingKey】比较从而将消息发送到对应的队列【queue】上。在这个过程有两个地方消息可能会丢失&#xff1a; 消息发送到交换机的过程。消息从交换机发送到队列的过程。 而RabbitMQ提供了…