当前位置: 首页 > news >正文

简单介绍----微服务和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.lryc.cn/news/289090.html

相关文章:

  • Jenkins邮件推送配置
  • 硬件知识(1) 手机的长焦镜头
  • 华为机考入门python3--(3)牛客3-明明的随机数
  • vue父子组件传值问题
  • Rider 打开Unity项目 Project 全部显示 load failed
  • Maven(下):依赖管理、依赖传递、依赖冲突、工程继承及工程聚合
  • 网络基础---初识网络
  • 【Java】Java类动态替换Class
  • 【驱动系列】C#获取电脑硬件显卡核心代号信息
  • AutoGen实战应用(二):多代理协作(Multi-Agent Collaboration)
  • c++文件操作 (1) -- 读写文件
  • PHP操作Mysql记录数多引发的空白错误
  • transformer和vit学习笔记
  • 人脸识别 FaceNet人脸识别(一种人脸识别与聚类的统一嵌入表示)
  • Python tkinter (6) Listbox
  • 优雅的python(二)
  • Git安装详细步骤
  • 首发:2024全球DAO组织发展研究
  • 【大数据】详解 Flink 中的 WaterMark
  • 【数据结构1-2】二叉树
  • ajax点击搜索返回所需数据
  • Redis6基础知识梳理~
  • 在Python中如何使用集合进行元素操作
  • 2024年阿里云幻兽帕鲁Palworld游戏服务器优惠价格表
  • Atlassian Confluence Data Center and Server 权限提升漏洞复现(CVE-2023-22515)
  • 打开 IOS开发者模式
  • 【C语言刷题系列】交换两个变量的三种方式
  • 架构师之路(十五)计算机网络(网络层协议)
  • 【JSON2WEB】03 go的模板包html/template的使用
  • 3 JS类型 值和变量