SpringCloud(待续)

news2025/1/21 9:25:56

单体架构特点?
·简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统
分布式架构特点?
·松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝
微服务:一种良好的分布式架构方案
优点:拆分粒度更小、服务更独立、耦合度更低
·缺点:架构非常复杂,运维、监控、部署难度提高 

单体架构

优势:构造简单,部署成本低  缺点耦合高,不利于大型项目

微服务架构

降低服务耦合  ,有利于服务升级拓展

拆分力度、集群地址维护、远程调用、服务间健康状态感知

对于微服务项目:

1微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发。比如商城拆分成用户、会员、积分服务等。

2面向服务:微服务对外暴露业务接口
3自治:团队独立、技术独立、数据独立、部署独立

4隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

 微服务技术对比

 SpringCloud是目前国内使用最广泛的微服务框架。官网地址: https://spring.io/projects/spring-cloud。

SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。

SpringCloud与SpringBoot的版本兼容关系如下:
2020.0.x aka llford   2.4.X
Hoxton   2.2.x,2.3.x (Starting with SR5)
Greenwich   2.1.x
Finchley   2.0.X
Edgware   1.5.x
Dalston     1.5.X
我们课堂学习的版本是 Hoxton.SR10,因此对应的SpringBoot版本是2.3.x版本。

服务拆分及远程调用

注意事项:

1.不同微服务,不要重复开发相同业务
2.微服务数据独立,不要访问其它微服务的数据库,即各个模块下的数据库是独立的。如cloud_order库和cloud_user库等。

项目结构

cloud父pom中定义依赖的版本。

里面是多个springboot项目,各个boot项目作为一个模块,yml配置就是其对应的boot的yml。

微服务远程调用

传统方式restTemplate

在任何一个springboot配置类中,引导类也可,注入restTemplate

	@Bean
	public RestTemplate restTemplate(){
		return new RestTemplate();
	}

然后在orderService实现类中注入该RestTemplate,然后如果是发get请求就是getForObject,发post请求就是postForObject。

String url = "http://localhost:8081/user/"+order.getUserId();//正常的restful格式

User user = restTemplate.getForObject(url,User.class);

order.setUser(user);

提供者与消费者

服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务。
服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)

EureKa注册中心

服务调用出现的问题
1、消费者该如何获取服务提供者具体信息?
服务提供者启动时向eureka注册自己的信息eureka保存这些信息
消费者根据服务名称向eureka拉取提供者信息
2、如果有多个服务提供者,消费者该如何选择?
服务消费者利用负载均衡算法,从服务列表中挑选一个
3、消费者如何感知服务提供者健康状态?
服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状态eureka会更新记录服务列表信息,心跳不正常会被剔除、消费者就可以拉取到最新的信息

所有的微服务先注册信息包括服务名和ip端口给Eureka。

对于服务消费者的一方,无需写服务提供者的ip和端口,直接根据服务提供者的名称找eureka获取其ip和端口即可。

负载均衡

比如user-server让其注册多个微服务做成了该微服务的集群,localhost:8081、localhost:8082、localhost:8083,作为服务提供者就会进行负载均衡从中按照某种策略挑选一个。

Eureka动手实践

 

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

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

相关文章

vue项目环境 搭建

1、安装nodejs 2、安装vue-cli, npm i -g vue/cli-init 3、初始化项目 vue init webpack test 4、运行 cd test npm run dev

【机器学习】西瓜书习题3.5Python编程实现线性判别分析,并给出西瓜数据集 3.0α上的结果

参考代码 结合自己的理解,添加注释。 代码 导入相关的库 import numpy as np import pandas as pd import matplotlib from matplotlib import pyplot as plt导入数据,进行数据处理和特征工程 得到数据集 D { ( x i , y i ) } i 1 m , y i ∈ { 0 ,…

python+opencv学习

1. 把所有绿色通道值变为0 import cv2 import numpy as npimgcv2.imread(2.jpg) #读取图片 img[:,:,1]0 #绿色通道变为0 cv2.imshow(图片,img) #显示图片 cv2.waitKey(0) #无限地显示窗口 人生建议,一定要买书来学习呀,不是说教程不好,而是书…

idea application.yml配置文件没有提示或读不到配置

1.首先确定你的resources文件夹正常且yml文件图表和下面一样 不一样的右键去设置 2.确保你已经缩进了且层级关系正常 3.如果以上都不是,先考虑删除.idea重开试试 4.以上解决不了就装以下两个插件解决

[深入理解NAND Flash] 闪存(NAND Flash) 学习指南

依公开知识及经验整理,付费内容,禁止转载。 所在专栏 《深入理解Flash:闪存特性与实践》 1. 我想和你说 漠然回首,从事存储芯片行业已多年,这些年最宝贵的青春都献给了闪存,虽不说如数家珍,但也算专业。 …

【Git】git reflog git log

前言 日常开发过程中,我们经常会遇到要进行版本回退的情况,这时候需要使用git reflog和git reset 命令 git reflog 常用命令: 1、git reflog -n 查看多少条 2、git reflog show origin 查看远程历史变动 git log 什么都不加默认显示当前分…

SpringBoot项目中的web安全防护

最近这个月公司对项目进行了几次安全性扫描,然后扫描出来了一些安全漏洞,所以最近也一直在修复各种安全漏洞,还有就是最近在备考软考高级系统架构设计师,也刚好复习到了网络安全这一个章节,顺便将最近修复的安全漏洞总…

漏洞利用-PoC-in-GitHub+msf简单利用

查找库-PoC-in-GitHub 里面集成了几乎所有cve漏洞 下载:https://github.com/nomi-sec/PoC-in-GitHub 演示: 如想要查找vulfocus靶场中 Metabase远程命令执行漏洞 的利用方法。 可以下载一个Yomm闪电文件搜索 Yomm闪电文件搜索下载:https://…

Github-Copilot初体验-Pycharm插件的安装与测试

引言: 80%代码秒生成!AI神器Copilot大升级 最近copilot又在众多独角兽公司的合力下,取得了重大升级。GitHub Copilot发布还不到两年, 就已经为100多万的开发者,编写了46%的代码,并提高了55%的编码速度。 …

代理模式——对象的间接访问

1、简介 1.1、概述 由于某些原因,客户端不想或不能直接访问某个对象,此时可以通过一个被称为“代理”的第三者来实现间接访问,该方案对应的设计模式被称为代理模式。 代理模式是一种应用很广泛的结构型设计模式,而且变化很多。…

活动回顾|火山引擎 DataLeap 分享:DataOps、数据治理、指标体系最佳实践(文中领取 PPT)

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 在 7 月 21 日至 22 日举行的 ArchSummit 全球架构师峰会(深圳站)及 DataFunCon.数据智能创新与实践大会(北京站)上&…

C++ 类的组合

解决复杂问题的有效方法就是将其层层分解为简单问题的组合,首先解决简单问题,复杂问题也就迎刃而解了。实际上,这种部件组装的生产方式广泛应用在工业生产中。例如,电视机的一个重要部件是显像管,但很多电视机厂自己并…

ARM裸机-7

1、S5PV210的地址映射 1.1、什么是地址映射 S5PV210属于ARM Cortex-A8架构,32位CPU,CPU设计时就有32根地址线&32根数据线。32根地址线决定了CPU的地址空间为4G,那么这4G空间如何分配使用?这个问题就是地址映射问题。 1.2、S…

AnimateDiff论文解读-基于Stable Diffusion文生图模型生成动画

文章目录 1. 摘要2. 引言3. 算法3.1 Preliminaries3.2. Personalized Animation3.3 Motion Modeling Module 4. 实验5.限制6. 结论 论文: 《AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning》 github: https://g…

高级 IO

目录 前言 什么是IO? 有哪些IO的的方式呢? 五种IO模型 这五种模型在特性有什么差别呢? 其他高级IO 非阻塞IO fcntl 实现函数SetNonBlock I/O多路转接之select 初识select select函数 参数说明: 关于timeval结构 函数…

【解惑笔记】树莓派+OpenCV+YOLOv5目标检测(Pytorch框架)

【学习资料】 子豪兄的零基础树莓派教程https://github.com/TommyZihao/ZihaoTutorialOfRaspberryPi/blob/master/%E7%AC%AC2%E8%AE%B2%EF%BC%9A%E6%A0%91%E8%8E%93%E6%B4%BE%E6%96%B0%E6%89%8B%E6%97%A0%E7%97%9B%E5%BC%80%E6%9C%BA%E6%8C%87%E5%8D%97.md#%E7%83%A7%E5%BD%95…

【多线程中的线程安全问题】线程互斥

1 🍑线程间的互斥相关背景概念🍑 先来看看一些基本概念: 1️⃣临界资源:多线程执行流共享的资源就叫做临界资源。2️⃣临界区:每个线程内部,访问临界资源的代码,就叫做临界区。3️⃣互斥&…

python与深度学习(十一):CNN和猫狗大战

目录 1. 说明2. 猫狗大战2.1 导入相关库2.2 建立模型2.3 模型编译2.4 数据生成器2.5 模型训练2.6 模型保存2.7 模型训练结果的可视化 3. 猫狗大战的CNN模型可视化结果图4. 完整代码5. 猫狗大战的迁移学习 1. 说明 本篇文章是CNN的另外一个例子,猫狗大战&#xff0c…

建立动态数组,输入5个学生的,另外用一个函数检查其中有无低于60分的,输出不合格的成绩。

题为c程序设计(第五版)谭浩强 例8.30 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 这篇博客,让我们一起来学习内存的动态分配。 那么,什么是内存的动态分配呢?C语言允许建立…