Java单体服务和集群分布式SpringCloud微服务的理解

news2024/11/17 3:41:04

单体应用存在的问题

1.随着业务的发展开发变得越来越复杂。

2.修改或者新增,需要对整个系统进行测试、重新部署。

3.一个模块出现问题,很可能导致整个系统崩溃。

4.多个开发团队同时对数据进行管理,容易产生安全漏洞。

5.各个模块使用同一种技术进行开发,各个模块很难根据实际情况选择更合适的技术框架,局限性很大。

6.模块内容过于复杂,如果有员工离职,需要很长时间才能完成工作交接。

分布式、集群

分布式:讲一个复杂的问题拆分成若干个简单的小问题,将一个大型的项目架构还分成若干个微服务来协同完成。(软件设计层面)。将1个庞大的工作拆分成若干个小步骤,分别由不同的让你完成这些小步骤,最终将所有的结果进行整合实现大的需求。

集群:一台服务器无法负荷高并发的数据访问量,那么就设置10台服务器一起分担压力,10台不够就设置100台或者1000台(物理层面)。很多人干同一个事情,来分摊压力。

微服务的优点

各个服务的开发、测试、部署都相对独立,比如用户服务就可以拆分作为一个单独的服务,而它的开发也不用依赖于其他服务,如果用户量很大,我们可以很容易的对其进行负载。

当一个新需求出现时,特别是在一个庞大的项目系统中,你要去考虑各方面问题,兼容性、影响度等等,而使用微服务则可以直接跳过这些废时又烧脑的环节。

使用微服务将项目进行拆分之后,各服务之间就消除了诸多限制,只需要保证对外提供的接口正常可用,至于使用什么语言、什么框架通通不用关心。

微服务的不足

上面我们提到微服务的拆分是基于业务的,不是我们随心所欲,想怎么拆就怎么拆,由谁来拆,怎么拆?给团队协作沟通带来了很多挑战。

当服务调用方需要使用某服务的接口时,首先需要找到该服务的提供方,通常在一个大公司中,这种场景是跨部门的,沟通成本可想而知,同时,如果服务的提供方需要对某个接口进行修改,也得和各个服务调用方进行沟通。

犹豫各个服务相互独立,他们的数据也是独立的。这就会带来一个问题,当调用多个服务接口来进行操作时,如何保证各个服务的数据一致性,这既是问题,也是难点。

为什么是SpringCloud

SpringCloud 完全基于SpringBoot,服务调用方法是基于RESTAPI,整合了各种成熟的产品和架构,同时基于SpringBoot也是的整体的开发、配置、部署都非常方便。

Spring系的产品集功能齐全、简单好用、性能优越、文档规范等等于一身,因此SpringCloud还是为服务架构中一个十分优越的实现方案。

 

服务治理的核心三部分组成:服务的提供者、服务的消费者、注册中心。

在分布式系统架构中,每个微服务在启动时,将自己的信息存储在注册中心,叫做微服务注册。

服务者从注册中心获取服务者提供者的网络信息,通过该信息调用服务,叫做服务发现。

SpringCloud 中服务治理使用的是Eureka来实现,Eureka是Netfix开源基于Rest的服务治理解决方案,SpringCloud集成了Eureka,提供服务注册和服务发现的功能,可以和基于SpringBoot搭建的微服务应用轻松完成整合,开箱即用,SpringCloud Eureka。

Spring Cloud Eureka

Eureka Server,注册中心

Eureka Client,所有要进行注册的微服务通过Eureka Client连接到Eureka Server,完成注册。

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

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

相关文章

Spring Session学习

系列文章目录 JavaSE基础知识、数据类型学习万年历项目代码逻辑训练习题代码逻辑训练习题方法、数组学习图书管理系统项目面向对象编程:封装、继承、多态学习封装继承多态习题常用类、包装类、异常处理机制学习集合学习IO流、多线程学习仓库管理系统JavaSE项目员工…

如何在算家云搭建MVSEP-MDX23(音频分离)

一、MVSEP-MDX23简介 模型GitHub网址:MVSEP-MDX23-music-separation-model/README.md 在 main ZFTurbo/MVSEP-MDX23-音乐分离模型 GitHub 上 在音视频领域,把已经发布的混音歌曲或者音频文件逆向分离一直是世界性的课题。音波混合的物理特性导致在没有…

快消品海外仓应该如何选择合适WMS仓储系统?

快消品的“快”属性天然契合海外仓,快消品大部分是必需品,库存周转快,需保持一定量的安全库存,及时、稳定补货尤为重要;快消品最适合全渠道销售,线上线下等,比较考验备货和统筹能力;…

基于RustDesk自建远程桌面服务

最近向日葵越来越难用了,官方好像限制了免费用户的带宽,但是限制的有点过头了,卡的基本没法用。 向日葵的平替todesk对于免费用户又有时长限制,对于经常用的小伙伴不大友好。 咱也不是说非得白嫖,但是向日葵和todesk这…

观测云链路追踪分析最佳实践

背景 如果要在开发、运维和工程层面持续改进一个涉及多服务的应用,以链路追踪、日志检索、指标收集、用户体验监测、性能剖析、关联分析等作为代表性技术的可观测性必不可少,这一看法已成为共识,但在采用这项技术的过程中,如何分…

msvcr100.dll丢失的解决方法,六种解决msvcr100.dll丢失使用技巧

在使用计算机的过程中,我们经常会遇到一些错误提示,其中之一就是“msvcr100.dll丢失”。这个问题可能会让我们感到困惑和无助,但是不用担心,本文将为大家介绍六种实用的解决方法,帮助你轻松解决这个问题。 一&#xff…

【JAVA报错已解决】Java.lang.NullPointerException

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

朋友圈信息流广告投放,曝光成本是多少?

微信作为国内最流行的社交平台之一,其朋友圈广告凭借精准的用户画像和强大的社交属性,成为了众多品牌商家进行市场推广的重要渠道。云衔科技推出了专业的微信朋友圈广告开户及代运营服务,旨在帮助企业轻松跨越技术门槛,精准触达目…

【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL64

时钟切换 描述 题目描述: 存在两个同步的倍频时钟clk0 clk1,已知clk0是clk1的二倍频,现在要设计一个切换电路,sel选择时候进行切换,要求没有毛刺。 信号示意图: 波形示意图: 输入描述: …

D20【python接口自动化学习】-python基础之内置数据类型

day20 内置数据类型的常见错误 学习日期:20240927 学习目标:内置数据类型--29 内置数据类型的常见错误 学习笔记: 访问错误 不同数据类型之间的操作报错 解决错误的方法 对只读类型进行写入报错 解决错误的方法 引用错误 解决错误的方法 …

产销皆下行,造势口碑遭“反噬”,魏建军能否重振长城汽车?

今年以来,长城汽车可谓多次被打在舆论聚光灯下,既有“一把手”魏建军一反此前低调务实作风而在今年多次于公共场合慨慷激昂频出“金句”宏观层面的;也有旗下多款车型销量数据出现下滑的微观层面。 近日,长城汽车披露了2024年1-8月…

python的 __name__和__doc__属性

__name__属性 __name__属性 用于判断当前模块是不是程序入口,如果当前程序正在使用,__name__的值为__main__。 在编写程序时,通常需要给每个模块添加条件语句,用于单独测试该模块的功能。 每个模块都有一个名称,当一…

ArduSub程序学习(11)--EKF实现逻辑①

1.read_AHRS() 进入EKF,路径ArduSub.cpp里面的fast_loop()里面的read_AHRS(); //从 AHRS(姿态与航向参考系统)中读取并更新与飞行器姿态有关的信息 void Sub::read_AHRS() {// Perform IMU calculations and get attitude info//----------…

WinForm程序嵌入Web网页

文章目录 前言一、三方库或控件的选择测试二、Microsoft Edge WebView2安装、使用步骤1.安装2.使用 前言 由于此项目需要winform客户端嵌入web网页并于JAVA端交互数据,所以研究了一下嵌入web网页这部分,趟了一遍雷,这里做下记录。 一、三方库…

软件设计之Maven(2)

软件设计之Maven(2) 路线图推荐: 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷新版Maven教程(高效入门maven,上手又快又稳) 资料可以去尚硅谷官网免费领取 学习内容: 依赖管理版本统一及维护依赖范围Buil…

Comfyui 学习笔记1

如果图像输出被裁剪,则需要使用PrepImageForClipVision,来设置图像距离上边沿的位置. 决定绘画的作用区域,后面的KSample只作用到 mask标记的范围。 图像位置偏移了,可以考虑通过Image crop 裁剪 IPAdapter face 提取时&…

基于Python大数据可视化的白酒数据推荐及数据分析系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

Java并发:互斥锁,读写锁,公平锁,Condition,StampedLock

阅读本文之前可以看一看 Java 多线程基础: Java:多线程(进程线程,线程状态,创建线程,线程操作) Java:多线程(同步死锁,锁&原子变量,线程通信&…

《Linux从小白到高手》理论篇(二):Linux的目录结构和磁盘管理

List item 本篇主要介绍Linux的目录结构和磁盘管理相关的命令。 Linux目录结构 在Linux的世界里,一切皆文件,连目录也不例外。linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”(相当于windows下的&…

【VUE】案例:商场会员管理系统

编写vuedfr实现对会员进行基本增删改查 1. drf项目初始化 请求: POST http://127/0.0.0.1:8000/api/auth/ {"username":"cqn", "password":"123"}返回: {"username":"cqn", "token&q…