SpringCloud微服务 【实用篇】| 认识微服务

目录

一:认识微服务

1. 微服务框架介绍

2. 服务架构演变

3. 微服务技术对比

4. SpringCloud

图书推荐:《巧用ChatGPT快速提高职场晋升力》


一:认识微服务

本课程学习于黑马,会通过分层次学习,分为三部分去讲解微服务:实用篇、高级篇、面试篇

分层次学习

微服务技术栈

1. 微服务框架介绍

思考:什么是微服务?

答:第一反应肯定是SpringCloud技术,但不仅仅是;微服务实际上是分布式架构的一种,就是把服务做拆分,拆分时会出现问题需要解决;而SpringCloud仅仅是解决服务治理问题

那么一个完整的微服务需要哪些知识呢?

(1)微服务架构的第一件事就是项目的拆分,独立开发每个服务

(2)当业务越来越多,越来越复杂时,它们之间的调用关系就会越来越复杂,想要记录和维护,需要一个组件---注册中心(记录每个服务的IP、端口等信息)

(3)每个服务都有自己的配置文件,将来要更改配置逐一去更改很麻烦,所以还有一个组件---配置中心(拉取配置信息,实现配置的热更新)

(4)当微服务运行以后,用户就可以进行访问,这里就需要一个组件---服务网关(访问哪一个?谁能访问?对用户的身份进行验证,可以把用户的请求路由到具体的服务)

(5)服务接到请求处理业务,访问数据库,再把数据返回给用户。数据库集群在庞大,也扛不住大量用户的高并发,此时就需要组件---分布式缓存(把数据库的数据放到内存当中,先到缓存,缓存未命中,再去数据库查,内存的查询效率肯定是比数据库高的);

(6)还有一些复杂的搜索功能,简单数据可以走缓存,一些复杂的搜索缓存无法解决,此时就需要另外一个组件---分布式搜索

(7)在为微服务中还需要异步通信的消息队列组件,一个请求来了调用a,a调用b,b调用...整个业务的链路就会很长,调用时长就等于每个服务调用的时长之和,性能下降。而异步通信的消息队列不是去调用a而是通知a,通知完以后就结束了,业务的链路就变短了,响应时间就变短了,吞吐能力变强;

(8)当然那么庞大的微服务,在出现问题排查是个大问题,所以需要引入两个新的组件---分布式日志服务(统治成千上百服务的日志,统一的存储和分析)和 系统的监控链路追踪(实时监控这个服务每一个节点的运行状态,CPU的占用等情况);

(9)庞大复杂的微服务集群怎么部署呢?需要一个自动化的部署---Jenkins(自动化的编译),在使用Docker(打包形成镜像),在基于K8s实现自动化的部署;

技术栈很多很杂,进行梳理学习

2. 服务架构演变

单体架构

单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。

例如:一个商城的项目,把所有的功能模块放到一个项目中进行打包部署到Tomcat服务器

优点

①架构简单;②部署成本低;

缺点

①耦合度高;适合部署一些小型的项目;

分布式架构

分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。

例如:把一个商城项目的每个模块都进行拆分成一个项目去开发。

优点:

①降低服务耦合;

②有利于服务升级拓展

服务治理

拆分也会带来一些问题:都是一个单体项目,部署在不同的服务器,调用时会出现远程调用(跨越服务器)的问题。分布式架构的要考虑的问题:

①服务拆分粒度如何?怎么拆,把服务作为独立的模块。

②服务集群地址如何维护?上百个机器的地址怎么维护。

③服务之间如何实现远程调用?跨服务的调用。

④服务健康状态如何感知?服务器的状态,有可能宕机。

微服务

微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:

①单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发;

②面向服务:微服务对外暴露业务接口,用来远程调用;

③自治:团队独立、技术独立、数据独立(每个服务独立的数据库)、部署独立;

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

例如:一个会员的功能,进行进一步的细化拆分

总结:

(1)单体架构特点

简单方便,高度耦合,耦合度高,扩展性差,适合小型项目。例如:学生管理系统。

(2)分布式架构特点

松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝。

(3)微服务:一种良好的分布式架构方案

优点:拆分粒度更小、服务更独立、耦合度更低。

缺点:架构非常复杂,运维、监控、部署难度提高。

3. 微服务技术对比

微服务这种方案需要技术框架来落地,全球的互联网公司都在积极尝试自己的微服务落地技术。在国内最知名的就是SpringCloud和阿里巴巴的Dubbo

微服务技术对比

Dubbo

SpringCloud

SpringCloudAlibaba

注册中心

zookeeper、Redis

Eureka、Consul

Nacos、Eureka

服务远程调用

Dubbo协议

Feign(http协议)

Dubbo、Feign

配置中心

SpringCloudConfig

SpringCloudConfig、Nacos

服务网关

SpringCloudGateway、Zuul

SpringCloudGateway、Zuul

服务监控和保护

dubbo-admin,功能弱

Hystix

Sentinel

企业需求 

①使用SpringCloud技术栈、服务接口采用Restful风格、服务调用采用Feign方式;

②使用SpringCloudAlibaba技术栈、服务接口采用Restful风格、服务调用采用Feign方式;

③使用SpringCloudAlibaba技术栈、服务接口采用Dubbo协议标准、服务调用采用Dubbo方式;

④基于Dubbo老旧技术体系、服务接口采用Dubbo协议标准、服务调用采用Dubbo方式;

4. SpringCloud

(1)SpringCloud是目前国内使用最广泛的微服务框架。官网地址:Spring Cloud。

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

SpringCloud与SpringBoot的版本兼容关系如下:

注:本次学习的版本是 Hoxton.SR10,因此对应的SpringBoot版本是2.3.x版本。 

图书推荐:《巧用ChatGPT快速提高职场晋升力》

本次送书 1 本! 

抽奖方式:利用程序进行抽奖。

参与方式:关注博主(只限粉丝福利哦)、点赞、收藏,评论区随机抽取,最多三条评论!

关键点

ChatGPT赋能职场,一本书掌握AI在职场中的的全面应用

10大创新技术+30多个实战案例+50多种ChatGPT应用策略

有效提高沟通能力、提高工作效率、提升个人品牌、提升创造力、提升管理能力

助你在竞争激烈的职场环境中脱颖而出

卖点

★超实用 通过30多个实战案例和操作技巧,使读者能够快速上手并灵活运用ChatGPT技术及提高职场晋升力。

★巨全面 50多种ChatGPT应用策略,涵盖提高沟通能力、提高工作效率、提升个人品牌、提升创造力、提升领导力和管理能力、促进职业发展全方面。

★真好懂 以通俗易懂的语言解释ChatGPT的原理及应用,零门槛提高职场硬核能力。

★高回报 学习本书,全面提升职场能力,大大提高工作效率,促进职业发展,实现自我价值。

内容简介

        本书从ChatGPT的基本知识、技术原理和应用场景出发,详细探讨了如何运用ChatGPT提升职场竞争力。全书共分为10章,内容包括ChatGPT在职场沟通、工作效率、个人品牌价值、职业发展、创意思维、领导力与管理、学习与自我成长、数据分析、服务与谈判等方面的应用。通过阅读本书,读者可以了解到ChatGPT的强大功能和在各领域的实际应用,从而有效提升职场竞争力。

        本书内容丰富、实用性强,旨在帮助读者在职场中更好地运用ChatGPT技术。适合职场人士、管理者、开发者及对人工智能技术感兴趣的读者阅读。同时,本书也适用于相关培训机构作为教材使用,助力职场发展。

当当网链接:当当图书

京东的链接:京东安全

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

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

相关文章

数据与视图的完美契合:Vue响应式的交织魅力

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

springboo单机多线程高并发防止重复消费的redis方案

springboo单机多线程高并发防止重复消费的redis方案 仅提供方案与测试。 想法:第一次收到userCode时,检查是否在redis中有,如果有,就表明已经消费了,返回抢单失败;否则,就去消费,顺…

从REST到GraphQL:升级你的Apollo体验

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

Qt之实现支持多选的QCombobox

一.效果 1.点击下拉列表的复选框区域 2.点击下拉列表的非复选框区域 二.实现 QHCustomComboBox.h #ifndef QHCUSTOMCOMBOBOX_H #define QHCUSTOMCOMBOBOX_H#include <QLineEdit> #include <QListWidget> #include <QCheckBox> #include <QComboBox>…

R语言生物群落(生态)数据统计分析与绘图

R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂&#xff0c;涉及众多统计分析方法。以生物群落数据分析中的最常用的统计方法回归和混合效应模型、多元统计分析技术及结构方程等数量分析方法为主线&#xff0c;通过多个来自经典…

计算机算法分析与设计(14)---贪心算法(会场安排问题和最优服务次序问题)

文章目录 一、会场安排问题1.1 问题描述1.2 思路分析1.3 例题分析1.4 代码编写 二、最优服务次序问题2.1 问题描述2.2 思路分析2.3 代码编写 一、会场安排问题 1.1 问题描述 假设在足够多的会场里安排一批活动&#xff0c;并希望使用尽可能少的会场。设计一个有效的贪心算法进…

十八、字符串(3)

本章概要 正则表达式 基础创建正则表达式量词CharSequencePattern 和 Matcherfinde()组&#xff08;Groups&#xff09;start() 和 end()Pattern 标记split()替换操作reset()正则表达式与 Java I/0 正则表达式 很久之前&#xff0c;_正则表达式_就已经整合到标准 Unix 工具…

python网络爬虫实例

目录 1、访问百度 2、输入单词百度翻译 3、豆瓣电影排行榜 4、豆瓣电影top250 5、下载美女壁纸 1、访问百度 from urllib.request import urlopen url"http://www.baidu.com" respurlopen(url)with open("mybaidu.html",mode"w") as f:f.wr…

ilr normalize isometric log-ratio transformation

visium_heart/st_snRNAseq/05_colocalization/create_niches_ct.R at 5b30c7e497e06688a8448afd8d069d2fa70ebcd2 saezlab/visium_heart (github.com) 更多内容&#xff0c;关注微信&#xff1a;生信小博士 The ILR (Isometric Log-Ratio) transformation is used in the anal…

Maven 生命周期clean default size含义

clean 负责清理工作&#xff0c;清理上一次项目构建产生的一些文件&#xff0c;如编译后的字节码文件&#xff0c;打包后的jar包文件 default 整一个项目构建的核心工作&#xff0c;如编译&#xff0c;测试&#xff0c;打包&#xff0c;安装&#xff0c;部署等等 size 生成报告…

CLion使用SSH远程连接Linux服务器

最近要一直用实验室的服务器写Linux下的C代码, 本来一直用VScode(SSH)连接服务器, 但是我以前还是用JetBrains的IDE用的多, 毕竟他家的IDE代码提示和功能在某些细节上更加丰富。所以这次我使用了Clion里的远程连接(同样也是SSH工具)连接上了我的服务器, 实现了和VScode上同样的…

【FPGA零基础学习之旅#17】搭建串口收发与储存双口RAM系统

&#x1f389;欢迎来到FPGA专栏~搭建串口收发与储存双口RAM系统 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0…

Linux 开机启动一条PHP命令

当你开机的时候要自动的启动一条PHP命令场景&#xff1a;比如webman 你需要手动启动项目进程 你可以这样操作 流程&#xff1a; 1、准备好你要执行的命令 2、将命令写入一个服务文件 3、开机自启这个服务 实例&#xff1a; 1、比如这个命令 /usr/local/php/bin/php /ho…

Docker:创建主从复制的Redis集群

一、Redis集群 在实际项目里&#xff0c;一般不会简单地只在一台服务器上部署Redis服务器&#xff0c;因为单台Redis服务器不能满足高并发的压力&#xff0c;另外如果该服务器或Redis服务器失效&#xff0c;整个系统就可能崩溃。项目里一般会用主从复制的模式来提升性能&#x…

CouchDB简单入门

CouchDB 1.curl命令 RESTful 新增&#xff1a;POST请求修改&#xff1a;PUT请求删除&#xff1a;DELETE请求查找&#xff1a;GET请求 查看数据库有哪些 curl -X GET http://admin:123456localhost:5984/_all_dbsadmin: 用户名 123456:改成自己密码 创建数据库 curl -X PU…

《语音优先》智能语音技术驱动的交互界面设计与语音机器人设计(译者序)...

“言为心声,语为心境”&#xff0c;语言与对话是我们沟通与协作的重要方式。而智能语音技术是一种基于人工智能和自然语言处理技术的语音交互技术。它可以通过语音识别技术将用户的语音指令转换为文本&#xff0c;然后通过自然语言处理技术对文本进行分析和理解&#xff0c;最终…

WIN11+OPENCV4.8 编译及下载失败处理方法

1. 基础准备 1. 下载Opencv和Contrib库 Opencv&#xff1a;Releases opencv/opencv GitHub Contrib&#xff1a;Tags opencv/opencv_contrib GitHub 2. 安装Visual Studio 或 MinGW64 MinGW&#xff1a;Tags opencv/opencv_contrib GitHub 这里安装1.12.0 MinGW 。 以…

flutter 使用FlutterJsonBeanFactory工具遇到的问题

如下图&#xff0c;使用FlutterJsonBeanFactory工具生成的数据类 但是其中 生成的 import package:null/&#xff0c;导致的错误&#xff1a;Target of URI doesn’t exist: ‘package:null/generated/json/asd.g.dart’ 尝试过的方法&#xff1a; 手动添加包名&#xff0c;…

【计算机网络笔记】网络应用进程通信

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

allegro中shape的一些基本操作(三)——挖空铜皮(shape)、删除孤岛

挖空铜皮&#xff08;shape&#xff09; 去除孤岛shape 挖空铜皮&#xff08;shape&#xff09; 我们在有的时候需要考虑分布电容的对信号完整性的影响&#xff0c;所以需要在整个铜皮的中间挖掉一块铜皮。 这三个分别对应挖不规则铜皮、矩形铜皮、圆形铜皮 例如&#xff1a…