【一】微服务技术栈导学

news2024/12/25 12:37:12

微服务技术栈导学

  • 什么是微服务?
  • 微服务技术栈
    • 注册中心
    • 配置中心
    • 服务网关
    • 分布式缓存
    • 分布式搜索
    • 消息队列
    • 分布式日志服务&系统监控和链路追踪
    • 自动化部署
  • 微服务技术栈包含知识点
  • 学习路线

知识内容来自于黑马程序员视频教学和百度百科。博主仅作笔记整理便于回顾学习。如有侵权请私信我。


什么是微服务?

微服务(或微服务架构):是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。
这些服务通常

  • 有自己的堆栈,包括数据库和数据模型;
  • 通过REST API,事件流和消息代理的组合相互通信;
  • 它们是按业务能力组织的,分隔服务的线通常称为有界上下文。

尽管有关微服务的许多讨论都围绕体系结构定义和特征展开,但它们的价值可以通过相当简单的业务和组织收益更普遍地理解:

  • 可以更轻松地更新代码。
  • 团队可以为不同的组件使用不同的堆栈。
  • 组件可以彼此独立地进行缩放,从而减少了因必须缩放整个应用程序而产生的浪费和成本,因为单个功能可能面临过多的负载。

微服务也可以通过它们不是什么来理解。微服务架构最经常得出的两个比较是整体架构面向服务的架构(SOA)。
微服务和整体架构之间的区别在于,微服务由许多较小的,松散耦合的服务组成一个应用程序,与大型,紧密耦合的应用程序的整体方法相反。

举例:
一个商城系统就得提供相当多的服务, 比如订单服务,用户功能,商品服务,支付服务等等,这些模块如果使用单体架构来实现,那么耦合度会相当高,开发难度也会很大。如果使用微服务开发,把每一个服务都当成一个单体应用来开发,那么订单服务,用户服务,商品服务,支付服务等模块,每一个就成为一个微服务。

由这些微服务构成整个的商城系统。这样明显是更加合理的。每个服务也可以根据业务的需要去进行集群部署。一方面降低了服务的耦合,一方面有利于服务的维护升级。


微服务技术栈

在这里插入图片描述
微服务要做的第一件事情就是拆分。因为传统的单体架构是所有的业务功能写在一起,随着业务越来越复杂,代码饱和的变得越来越多。将来想要升级维护就会变得很困难。所以像一些大型的互联网项目就必须去做拆分。
在这里插入图片描述

拆分的时候,会根据业务模块把一个单体的项目,拆分成许多独立的项目。每一个项目完成一部分业务功能,将来独立开发和部署。把这样一个独立的项目称为服务
在这里插入图片描述

一个大型的互联网项目往往会包含数百甚至上千的服务,最后形成一个服务集群。而一个业务往往就需要由多个服务共同来完成。
在这里插入图片描述

比如说一个请求来了,它可能先去调用了服务A,服务A又去调用服务B,服务B又去调用服务C,当业务越来越复杂时,这些服务之间的关系就会越来越复杂。
这么复杂的一个调用关系,想靠人去记录和维护是不可能的。


注册中心

在这里插入图片描述

所以在微服务里会有一个组件叫做注册中心。它可以去记录微服务中每一个服务的端口,IP,以及它能完成什么功能这些信息。
当一个服务需要调用另一个服务时,它不需要自己去记录对方的IP,只要去找注册中心就行了。从注册中心去拉取对应的注册信息。


配置中心

在这里插入图片描述

同时,随着服务越来越多,每个服务都有自己的配置文件,将来如果要更改配置,如果逐一去修改,那会十分麻烦。
所以在微服务里还会有一个配置中心。它可以统一去管理整个服务群体成千上百的这些配置。如果以后有些配置需要变更,只需要去找到配置中心便可。它可以去通知相关的微服务,实现配置的“热更新”。


服务网关

在这里插入图片描述

当我们的微服务运行起来以后,用户就可以来访问我们。这个时候还需要一个服务网关,因为这里有这么多的微服务,用户如何知道该访问哪一个呢?而且也不是随便什么人都能来访问我们的服务吧。

举例:就像一个小区,服务网关就相当于门卫大叔。服务集群中的每一个服务就相当于小区里的住户。当有用户来请求访问服务时,它还需要知道具体的服务“住在哪里”?

所以,服务网关:

  • 一方面校验用户的身份;
  • 另一方面,可以将用户的请求路由到我们具体的服务中。

路由过程中,也可以去做一些负载均衡。
在这里插入图片描述
这个时候服务接收到请求去处理业务,该访问数据库的时候访问数据库,最后把查询到的数据放回给用户就ok了。


分布式缓存

这里虽然画的是一个数据库,但实际上会是一个数据库集群。不过集群在庞大,也不可能有用户多。所以将来数据库肯定无法扛住这样的高并发。
在这里插入图片描述

因此我们还会加入缓存。缓存就是把数据库数据放入到内存当中。内存的查询效率比数据库快很多。
而且这样的缓存还不能是单体缓存为了应对高并发,还要做成这样分布式缓存。也是一个集群。
用户的请求先到缓存,缓存未命中再去查询数据库。


分布式搜索

业务中还会有许多搜索功能,简单查询可以走缓存,一些海量的搜索,复杂的搜索途径分析,缓存也无法完成。
这个时候,还需要用到分布式搜索。数据库将来主要的职责就是做一种数据的写操作,还有一些事务类型,对安全性要求较高的数据存储。
在这里插入图片描述


消息队列

最后,在微服务当中还需要一种异步通信的消息队列组件
在这里插入图片描述
为什么呢?其实对于分布式服务或在微服务里面,业务往往会跨越多个服务。一个请求来了,它先调用服务A,A再调用B,B再调用C,整个业务的链路就会很长。响应时长就会等于每个服务的执行服务之和,所以性能会有一定的下降。
异步通信 的意思就就是:当请求来了,调用了服务A,这个时候,服务A不是去调用服务B和C,而是发一条消息通知服务B和C:“你们两个,赶紧干活去。”这个时候服务B和C就去干活了,而服务A直接结束。所以业务链路就变短了,响应时间也缩短了,我们的吞吐能力也就变强了。
异步通信能大大提高我们服务的并发。
在一些秒杀这样的高并发场景下,就可以去利用了。


分布式日志服务&系统监控和链路追踪

在这样一个如此庞大和复杂的服务,在运行过程中,如果出现了什么问题,如何排查呢?
所以在微服务运行过程中,我们还会引入两个组件:来解决服务的异常定位。
在这里插入图片描述
分布式日志服务: 统计整个集群成千上百的服务的运行日志,统一地去做一个存储,统计,分析。将来出现问题就会方便定位。
系统监控&链路追踪: 实时监控整个集群中每一个服务结点的运行状态,CPU负载,内存占用等等情况。一旦出现任何问题,直接可以定位到具体的某一个方法,栈信息。这便可以很快的定位到异常所在。


自动化部署

那么如此庞大复杂的微服务集群,将来很有可能达到成百上千甚至上万的服务。这个时候我们部署该怎么办呢?如果是靠人工去部署,显然不现实。所以将来这些微服务集群,还需要去做一种自动化的部署。
在这里插入图片描述
Jenkins:可以帮助对这些微服务项目进行自动化的编译。基于docker去做一些打包,形成镜像。再基于kubernetes或者rancher这样的技术,去实现自动化的部署。
这一套就称为持续集成(Continuous Integration)

结合微服务的技术,再加上持续集成,这才是完整的微服务技术栈。


微服务技术栈包含知识点

在这里插入图片描述
微服务治理: 这一部分就是SpringCloud这个框架它所包含的一些技术。


学习路线

在这里插入图片描述


By–Suki 2022/12/29

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

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

相关文章

Android设计模式详解之适配器模式

前言 适配器模式在Android开发中使用率很高,如ListView、RecyclerView; 定义:适配器模式把一个类的接口变换成客户端所期待的另一个接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作; 使用场景&…

2023年加密行业会更难吗?欧科云链研究院“七大趋势预测”

回望2022,加密行业遭遇了种种不可控因素而导致的艰难险阻,也在变革与发展中孕育着生机与活力。 这一年,我们亲眼目睹了Luna暴雷,三箭资本、FTX这些曾经被认为“大而不倒”的机构接连倒下,市场信心严重受挫;…

登陆港股市场,阳光保险的 “价值锚点”

不确定性环境里,信心比黄金还重要。 最近,利好信号频频出现在保险行业,资本信心不断加固。上个月月底,个人养老金制度启动实施,市场迅速传来喝彩声。这不仅将加快推动养老保险作为第三支柱的壮大,而且还为…

ARM体系架构中的存储系统

在计算机系统当中,数据的存储是以字节为单位的,每个地址单元当中都可以存放一个字节的数据,每个字节为8bit。在C语言中编译器为char型的数据分配了一个字节的存储空间,为long型的数据分配了4个字节的存储空间,为int型的…

【NI Multisim 14.0编辑环境——工具栏】

目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具栏 🍊3.“主”工具栏 🍊4.“元器件”工具栏 🍊5.“Simulation”(仿真)工具栏 🍊6.“Place probe”(放置探针…

ARM64内存虚拟化分析(2)常用结构体

内存虚拟化相关的几个重要结构体如下图所示: 这里介绍几个结构体以及相互之间有关系。 (1)AddressSpace结构体 它用于表示一个虚拟机或虚拟CPU能够访问的所有物理地址。其中: root:指向根MR Current_map&#xff1…

营销在中国

(1)4P、4C、4R、4I作为一个企业,不外乎就是两个是:产-销。你生产-客户购买,这个交易能做成,不外乎在于交换的价值,以及交易的价格-成本。一、4P4P,是美国密歇根大学教授杰罗姆麦卡锡…

向量的点乘与X乘以及意义

一、向量的点乘 向量的点乘(dot)是一个标量积,也叫向量的内积、数量积。 点乘公式: 有向量a b a(a1,a2,a3,...,an) b(b1,b2,b3,...,bn); 那么向量a(dot)ba1b1a2b2a3b3....anbn 从上面我们能可以看出,点乘得到的结…

2022年个人融资方法和工具研究报告

第一章 理论和概况 1.1 融资概念 融资,英文为Financing,指为支付超过现金或转账的购货款而采取的货币交易手段,或者为取得特定资产而筹集资金所采取的货币手段。融资通常指货币资金的持有者和需求者之间,直接或间接地进行资金融…

Appium基础 — 模拟手势点击坐标

1、模拟手势点击坐标 在定位元素的时候,你使出了十八班武艺还是定位不到,怎么办呢?(面试经常会问) 那就拿出绝招:点击元素所在位置的坐标。(坐标定位) 详细说明: 如下…

OpenWrt无法打开国内网站的解决方法

最近小半个月以来根据lean和lieno源码编译的OpenWrt固件在使用了smartdns之后会出现无法打开国内网页的情况。 诡异的是, 重启防火墙之后, 能正常访问百度等国内网站, 但是, 过上一段时间, 就又不行了。 在经过近一个…

示波器应用(三)

示波器可做什么? 基础材质检查环境搭建校验 相似材质之间的细微差异分析 场景调光依据/竞品分析 定位曝光、色相问题 风格化调色监视 LUTs检查 材质检查 单看上图的分量示波器,仔细想一想这张图是什么色相? 公布答案 分量示波器rgb模…

电子采购方案:构建高效智能数字化采购

过去几十年,公用事业行业发生了重大变化。能源需求的转变导致企业利润率的波动,但不是运营成本的波动。 许多公用事业公司通过后勤部门流程自动化来削减成本,比如招采流程自动化。 在招采活动中,人工招采会产生盲点。由于公共事业…

Vue(一)

1.Vue简介 将html/css/js封装到vue里,形成一个组件,改动某个组件里内容不会影响另一个 要实现将左边数据变成li的形式放进容器里面,传统实现方式: vue形式编码简易实现:指令实现 Diff会跟原来的比较,跟原来一样的会直接…

设备管理器,其他设备,PCI数据捕获和信号处理控制器出现感很多未知设备感叹号,通用解决方法,以华为matebook为例

问题的关键是找到对应的驱动。 通用解决方法: 打开设备管理器,找到未知设备,右键属性——详细信息——下拉列表找到硬件标识符Hardware Ids——复制第一行的ID——打开浏览器搜索相关内容,确定该设备对应的驱动名称——从可靠渠…

在人生最好的状态读研,社科院与杜兰大学金融管理硕士项目与你共同努力奔赴未来

人生中最好的状态是什么阶段呢?说起中年,人们往往会联想到“危机”、“油腻”等词语,确实,中年人面临着事业、家庭、健康等的各种关卡,让人觉得危机四伏。其实中年也是人一生中最为丰美的岁月,面对生活中的…

F280049C Programmable Gain Amplifier PGA

文章目录PGA14.1 Introduction简介14.1.1 Features特性14.1.2 Block Diagram结构框图14.2 Linear Output Range线性输出范围14.3 Gain Mode放大模式14.4 External Filtering外部滤波14.7 Enabling and Disabling the PGA Clock时钟使能禁止14.10 Analog Front End Integration模…

Github Package npm 应用发布实践

Github Package npm 应用发布实践 文章目录Github Package npm 应用发布实践1. 简介2. 创建新库3. 编写 index.js4. npm init 初始化5. npm install6. 创建 release-package.yml7. 发布8. 查看已发布的包9. 管理 npm 包1. 简介 GitHub Packages 是一个用于托管和管理包的平台&…

高压功率放大器在磁巴克豪森噪声表征方法研究中的应用

实验名称:基于数据驱动的结构钢表面应力磁巴克豪森噪声表征方法研究 研究方向:材料测试 实验目的: 磁巴克豪森噪声(Magnetic Barkhausen Noise,MBN)技术可用于定量评估铁磁材料的表面应力。当前MBN法应力评估技术存在特…

【ESP32-Matter】基于 Matter 协议的 esp32-c3 开发板通讯测试过程

实验结果: 关于实验环境的搭建,请参考博客: 【ESP-Matter】基于matter协议 chip-tool 控制 esp32-c3 开发板点灯 写在前边的话: matter 能带来什么? 让多种支持 IP 网络的设备协同工作,如 Wi-Fi 和 Th…