简单介绍----微服务和Spring Cloud

微服务和SpringCloud

1.什么是微服务?

微服务是将一个大型的、单一的应用程序拆分成多个小型服务,每个服务负责实现特定的业务功能,并且可以通过网络通信与其他服务通信。微服务的优点是开发更灵活(不同的微服务可以使用不同的开发语言)、并且更容易维护、更好的可伸缩性和可用性更高,以及更好的团队协作。

2.什么是SpringCloud

SpringCloud是一个用于构建分布式系统和微服务架构的开发工具的集合。它基于Spring Framework,为开发人员提供了一套简化分布式系统开发的解决方案。
SpringCloud提供了一系列的组件和库,用于实现分布式系统的常见模式和功能,包括服务注册与发现、负载均衡、断路器、配置管理、消息总线、分布式追踪、网关等等。它简化了在构建分布式系统时所需的开发工作,并提供了一致而可靠的开发模式。
我把最后一句话换句简单的话说:上述黑体字都是一个个小零件,SpringCloud相当于一个大容器,现在我把这些小零件都放进这些容器里了,等你想做分布式开发的时候,你直接把这些小零件拿出来用就行了,就不用再费事的去建造这些小零件了。
通过使用SpringCloud,开发人员可以快速构建基于微服务架构的应用程序,并将各个微服务协调管理起来。这样,每个微服务可以根据自身的需求独立开发,部署和扩展,通过服务间的调用和协作来实现整体功能。

3.微服务和SpringCloud

微服务是一种架构思想,而SpringCloud是对于微服务实现的一种规范,当然很多地方也把SpringCloud用来代指微服务,但是二者是不同的,前者是思想,后者是规范。
比如,我是个老板,我现在想吃红烧肉,我手下有10个厨子,我让他们都要去做红烧肉,并且每个人的红烧肉这道菜都需要加糖,至于别的想加什么就加什么,好吃就行。
在这里,我想吃红烧肉就是思想,必须加糖就是规范。
而SpringCloud里面有这些组件,这些组件就相当于是规范,也就是说,你这个程序员要想实现微服务这样的效果,就必须使用我这些组件,然后你怎么用就是你自己的事了

4.微服务存在的意义

1.架构趋势:微服务架构是当今软件开发的一种主流趋势。它允许将应用程序拆分成一系列较小的,自治的服务,每个服务都可以独立部署、扩展和维护。java程序员学习微服务可以使他们跟上技术潮流,提高就业竞争力。
2.弹性和扩展性:微服务架构允许应用程序根据需求进行高度弹性和可伸缩的扩展。java程序员可以使用微服务来构建具有高可用性和弹性需求的应用程序。
3.独立性和自治性:微服务架构中的每个服务都是独立的,可以单独开发、测试、部署和维护。这使得java程序员能过更加高效的开发和维护应用程序。

其中第二点可能有点难懂,让我来举个例子
假设我们有一个电子商务平台,该平台包括商品浏览、用户账户管理、订单处理、支付处理和库存管理等功能。
传统单体架构:
在单体架构中,所有这些功能都会被集成在一个大型应用程序中。这意味着任何对系统的小修改都可能需要重新部署整个应用程序。此外,如果需要扩展特定功能(如订单处理),可能需要扩展整个应用程序,这可能不是最有效率和成本效益的方法。

转变为微服务架构:
在微服务架构中,每个功能(商品浏览、用户账户管理、订单处理等)都作为一个独立的服务构建。这些服务独立部署和运行,通过轻量级通信机制(如HTTP REST API)相互协作。

例子:
弹性:假设黑色星期五来临,平台的订单量剧增。在微服务架构中,可以单独针对订单处理服务进行扩展,增加更多订单处理的服务实例来应对高峰期的流量,而不影响其他服务,如商品浏览或用户账户管理。
可伸缩性:如果分析发现商品浏览服务的使用率相对较低,可以减少该服务的资源分配,将资源重新分配给更需要的服务(如订单处理服务),从而优化资源使用和成本效率。
高可用性:如果支付处理服务出现问题,它不会影响到平台的其他服务。用户仍然可以浏览商品和管理他们的账户,直到支付服务恢复正常。

通过这种方式,微服务架构使得应用程序能够根据每个服务的需求进行高度弹性和可伸缩的扩展,同时保持整个系统的高可用性。

5.SpringCloud组件(现在基本都在用第二代了)

在这里插入图片描述

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

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

相关文章

nginx使用stream模块代理端口

今天原本准备将本地金仓的54321端口进行代理的,但是发现代理后总是无法访问。后来突然发现之前使用nginx代理的是一个地址而不是端口。因此做以下笔记用来做记录。 一、stream安装与配置 假设nginx在usr/local/nginx中 1. 测试当前nginx是否有stream模块 ./usr/…

FPGA 通过 UDP 以太网传输 JPEG 压缩图片

FPGA 通过 UDP 以太网传输 JPEG 压缩图片 简介 在 FPGA 上实现了 JPEG 压缩和 UDP 以太网传输。从摄像机的输入中获取单个灰度帧,使用 JPEG 标准对其进行压缩,然后通过UDP以太网将其传输到另一个设备(例如计算机),所有…

代码随想录算法刷题训练营day17

代码随想录算法刷题训练营day17:LeetCode(110)平衡二叉树 LeetCode(110)平衡二叉树 题目 代码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(…

计算机二级C语言的注意事项及相应真题-6-程序填空

目录 51.将参数num按升序插入到数组xx中52.在数组中找出两科成绩之和最高的学生并返回其在数组中的下标53.删除所有串长超过k的字符串,输出剩下的字符串54.根据所给的一组学生的成绩,计算出平均成绩,并计算低于平均成绩的学生的平均成绩55.将…

AlexNet,ZFNet详解

1 AlexNet 网络结构 对于AlexNet网络来说,因为当时资源环境受限,他从第一步卷积开始就把一个图像分到两个GPU上训练,然后中间进行组合最后进行融合成全连接成1000个置信度 1 得到一张3x224x224的图像,然后进行11x11的卷积&…

山海鲸智慧医疗解决方案:让医疗数据说话

在医疗领域,数据可视化对于提高诊疗效率、辅助医学研究和提升患者就医体验具有重要意义。作为山海鲸可视化软件的开发者,我们致力于利用先进的数据可视化技术,为医疗行业提供高效、智能的解决方案,本篇文章就带大家一起了解一下这…

【Linux】开始使用 vim 吧!!!

Linux 1 what is vim ?2 vim基本概念3 vim的基本操作 !3.1 vim的快捷方式3.1.1 复制与粘贴3.1.2 撤销与剪切3.1.3 字符操作 3.2 vim的光标操作3.3 vim的文件操作 总结Thanks♪(・ω・)ノ感谢阅读下一篇文章见!…

Power ModeII 插件的下载与使用-----idea

下载 Marketplace里面搜索下载即可 使用 下载后重启软件就可以用了 下面是一些关于Power ModeII ,我的个性化设置截图 以及相关设置解释 插件或扩展的设置面板【用于给代码编辑器或集成开发环境(IDE)添加视觉效果】 主要设置 ENTER POWE…

数学知识第三期 欧拉函数

前言 相信大家在高中的时候接触过欧拉函数,希望大家通过本篇文章能够进一步理解欧拉函数!!! 一、什么是欧拉函数? 欧拉函数是一个在数论中用于描述特定正整数的互质数的概念。具体来说,对于一个正整数n&…

华为机考入门python3--(0)模拟题3-计算字符串重新排列数

分类:排列组合 知识点: 计算字符串中每个字符出现的次数 Counter(string) 计算列表中每个元素出现的次数 Counter(list) 阶乘 math.factorial(num) 排列去重 题目来自【华为招聘模拟考试】 先把每个字符当成唯一出现过一次,计算所有排列…

keepalived+nginx双主热备(有问题私信)

keepalivednginx双主热备 前言keepalivednginx双主热备keepalivednginx双主热备部署安装nginx安装keepalived修改master节点的keepalived配置文件 修改backup节点的keeepalived配置文件配置keepalived主备配置keepalived双主热备 前言 有关keepalived和nginx的一些工作原理&am…

【论文笔记】《Learning Deconvolution Network for Semantic Segmentation》

重要说明:严格来说,论文所指的反卷积并不是真正的 deconvolution network 。 关于 deconvolution network 的详细介绍,请参考另一篇博客:什么是Deconvolutional Network? 一、参考资料 Learning Deconvolution Netwo…

【Leetcode】2861. 最大合金数

文章目录 题目思路代码结果 题目 题目链接 假设你是一家合金制造公司的老板,你的公司使用多种金属来制造合金。现在共有 n 种不同类型的金属可以使用,并且你可以使用 k 台机器来制造合金。每台机器都需要特定数量的每种金属来创建合金。 对于第 i 台…

【word visio绘图】关闭visio两线交叉的跳线(跨线)

【visio绘图】关闭visio两线交叉的跳线(跨线) 1 如何在Visio绘图中关闭visio两线交叉的跳线(跨线)第一步:打开Visio并创建您的图形第二步:绘制您的连接线第三步:关闭跳线第四步:手动…

dnSpy调试工具二次开发2-输出日志到控制台

本文在上一篇文章的基础上继续操作: dnSpy调试工具二次开发1-新增菜单-CSDN博客 经过阅读dnSpy的源码,发现dnSpy使用到的依赖注入用了MEF框架,所以在源码中可以看到接口服务类的上面都打上了Export的特性或在构造方法上面打上ImportingConst…

C/C++ - 类的封装特性

目录 类的封装 语法格式 声明定义 分文件 访问权限 类作用域 对象模型 构造函数 默认构造函数 带参构造函数 拷贝构造函数 构造函数重载 委托构造函数 初始数据列表 构造默认参数 构造函数删除 析构函数 析构函数概念 析构函数特性 析构函数示例 析构调用…

坚持刷题 | 平衡二叉树

文章目录 题目考察点代码实现实现总结对实现进一步改进扩展提问 坚持刷题,老年痴呆追不上我,今天继续二叉树:平衡二叉树 题目 110.平衡二叉树 考察点 递归能力: 能否使用递归来解决问题。树的基本操作:能否正确地访…

DS:带头双向循环链表的实现(超详细!!)

创作不易,友友们给个三连吧!!! 博主的上篇文章介绍了链表,以及单链表的实现。 单链表的实现(超详细!!) 其实单链表的全称叫做不带头单向不循环链表,本文…

zabbix使用自动发现批量监控服务器

当有大量新增服务器需要监控时,为避免一台一台手动操作浪费人力,我们使用自动发现功能来进行操作: 以下以zabbix6.4.0版本为例 如下,点击自动发现,创建发现规则: 点击更新,保存,之后点告警---…

在 React 组件中使用 JSON 数据文件,怎么去读取请求数据呢?

要在 React 组件中使用 JSON 数据&#xff0c;有多种方法。 常用的有以下几种方法&#xff1a; 1、直接将 JSON 数据作为一个变量或常量引入组件中。 import jsonData from ./data.json;function MyComponent() {return (<div><h1>{jsonData.title}</h1>&…