微服务之基本介绍
一、微服务架构介绍
1、微服务架构演变过程
单体应用架构->垂直应用架构一>分布式架构一>SOA架构-->微服务架构
① 单体应用架构
互联网早期, 一般的网站应用流量较小,只需一个应用,将所有功能代码都部署在一起就可以,这样可 以减少开发、部署和维护的成本。
传统的单体架构,也就是单点应用,也就是早期的SSM或者SSH整合项目。
采用分层架构模式、数据库访问层、业务逻辑层、控制层,从前端到后端所有的代码都是一个人写的。
比如说一个电商系统,里面会包含很多用户管理,商品管理,订单管理,物流管理等等很多模块,我们 会把它们做成一个web 项目,然后部署到一台tomcat服务器上。
优点:
·项目架构简单,小型项目的话,开发成本低
·项目部署在一个节点上,维护方便
缺点:
·全部功能集成在一个工程中,对于大型项目来讲不易开发和维护
·项目模块之间紧密耦合,单点容错率低
·无法针对不同模块进行针对性优化和水平扩展
应用场景:政府项目、管理系统、crm、oa 适合于个人小团队开发。
② 垂直应用架构
随着访问量的逐渐增大,单一应用只能依靠增加节点来应对,但是这时候会发现并不是所有的模块都会 有比较大的访问量。
还是以上面的电商为例子,用户访问量的增加可能影响的只是用户和订单模块,但是对消息模块的影响就比较小.那么此时我们希望只多增加几个订单模块,而不增加消息模块.此时单体应用就做不 到了,垂直应用就应运而生了。
所谓的垂直应用架构,就是将原来的一个应用拆成互不相干的几个应用,以提升效率。比如我们可 以将上面电商的单体应用拆分成:
·电商系统(用户管理商品管理订单管理)
·后台系统(用户管理订单管理客户管理)
·CMS 系统(广告管理营销管理)
这样拆分完毕之后, 一旦用户访问量变大,只需要增加电商系统的节点就可以了,而无需增加后台
③ 分布式架构
当垂直应用越来越多,重复的业务代码就会越来越多。这时候,我们就思考可不可以将重复的代码抽取 出来,做成统一的业务层作为独立的服务,然后由前端控制层调用不同的业务层服务呢?这就产生了新的分布式系统架构。它将把工程拆分成表现层和服务层两个部分,服务层中包含业务逻辑。表现层只需 要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。
优点:
抽取公共的功能为服务层,提高代码复用性
缺点:
·系统间耦合度变高,调用关系错综复杂,难以维护
④ SOA架构
在分布式架构下,当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个 调度中心对集群进行实时管理。此时,用于资源调度和治理中心(SOAService OrientedArchitecture, 面向服务的架构)是关键。
SOA面向服务架构就是基于分布式架构模式演变过来,俗称服务化,也就是面向于接口开发(服务开发)。将共同存在业务逻辑抽取成一个公共的服务,提供给其他接口实现调用,服务与服务之间采用rpc远程调用技术。
能够解决什么问题:代码冗余性问题。
SOA架构模式特点:
SOA架构模式传输协议采用SOAP协议(Http/Https+XML)实现传输,在高并发情况下实现通讯该协议存在大量的冗余性传输,而且非常占用带宽,所以在后来微服务架构中使用json替代了xml。
SOA架构模式实现方案:WebService或者ESB企业服务总线,底层采用SOAP协议传输。
传统政府、银行项目还是保留的在使用WebSercice,互联网公司肯定采用http+json形式实现传输。
优点:
·使用注册中心解决了服务间调用关系的自动调节
缺点:
-服务间会有依赖关系, 一旦某个环节出错会影响较大(服务雪崩)
·服务关心复杂,运维、测试部署困难
- 采用SOAP协议实现通讯,xml传输非常重,效率比较低;
- 服务化管理和治理设施不够完善;
- 依赖于中心服务发现机制;
- 不适合于前后分离架构模式;
⑤ 微服务架构
微服务架构在某种程度上是面向服务的架构SOA 继续发展的下一步,它更加强调服务的“彻底拆分”。
微服务架构模式就是从soa架构模式演变过来的,比SOA架构模式对服务拆分粒度会更加精细,采用前后端分离的架构模式,让专业的人去做专业的事情,可以实现高效率开发。
微服务架构中,每个服务之间都是互不影响,每个服务必须要独立部署、运维、互不影响,微服务架构模式非常轻巧、轻量级,适合于互联网公司开发模式。
服务与服务之间通讯的协议采用restful形式,数据交换格式采用Http+Json格式实现传输。整个传输过程中采用二进制,所以Http协议可以实现跨语言的传输,并且和其他语言实现通讯,所以开放平台一般都是采用Http+Json格式传输。
优点:
·服务原子化拆分,独立打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展
·微服务之间采用Restful等轻量级http协议相互调用
缺点:
·分布式系统开发的技术成本高(容错、分布式事务等)
2、SOA架构和微服务架构的区别
1通讯协议
微服务架构基于SOA架构模式演变过来,继承SOA架构优点,在微服务架构中去除了SOA架构中SOAP协议和ESB企业服务总线,改为Http+JSON形式传输接口。
ESB企业服务总线:解决多系统之间跨语言无法实现通讯的问题,对数据协议实现转换,可以提供可靠的消息传输,通过第三方框架实现。
一般情况下都是采用Http+JSON格式传输,所以没有必要使用ESB企业服务总线。
2服务拆分粒度
微服务架构模式比SOA架构模式粒度更加精细,提倡让专业的人去做专业的事情,目的是实现高效率的开发,每个服务与服务之间都互不影响,每个服务都是独立数据库、Redis连接、MQ等,并且都是实现独立部署,整个服务架构更加轻巧、轻量级。
在SOA架构中,有可能存在多个服务共享同一个数据库,微服务架构更加强调每个服务都是独立数据库部署,互不影响。
3迭代
微服务的架构模式比SOA架构模式更适合于互联网公司敏捷、高效、快速迭代版本开发,因为粒度非常精细。
3、微服务架构产生的原因
- 微服务架构基于SOA架构演变过来的,在传统的WebService架构中有如下问题: 1)依赖中心化服务发现机制;2) 使用Soap通讯协议,通常使用XML格式来序列化通讯数据,xml格式非常喜欢重,比较占宽带传输;3)服务化管理和治理设施不完善
- 高并发和高访问量的需求:随着数据时代的发展,高访问量和高并发量越来越常见。传统的单体应用架构在处理海量数据访问时显得力不从心,难以满足新时代的需求。为了更好地应对高并发和海量数据的问题,微服务架构应运而生,通过将复杂的单体应用拆分成多个小服务单元,提高了系统的可扩展性和可用性。
- 技术发展的推动:随着技术的发展,各种新技术和新工具不断涌现,为微服务架构的实现提供了可能。例如,容器技术(如Docker)和自动化部署工具(如Kubernetes)使得服务的独立部署和管理变得更加容易;轻量级通信机制(如HTTP RESTful API)使得服务之间的通信更加灵活和高效。
- 业务快速变化的需求:在快速变化的业务环境下,企业需要能够快速响应市场变化和客户需求。微服务架构允许团队根据需要对单个服务进行快速开发和部署,从而快速适应变化的市场需求。这种灵活性使得微服务架构成为现代软件开发的重要趋势之一。
4、为什么我们要使用SpringCloud
SpringCloud并不是rpc远程调用框架,而是一套全家桶的微服务解决框架,理念就是解决我们在微服务架构中遇到的任何问题。
例如:服务注册中心、分布式配置、服务保护等。
SpringCloud 微服务架构思想
SpringCloud 属于微服务全家桶框架 解决我们在微服务架构中遇到难题。
5、微服务架构中常见问题
1.分布式服务注册中心(服务治理) Eureka、Zookeeper、Consule、Nacos、Redis、数据库等;
2.分布式配置中心 SpringCloud Config、携程阿波罗、Nacos Config;
3. 分布式事务解决方案(MQ最终一致性/LCN(已经淘汰)/ Seata(阿里背书))
4. 分布式任务调度平台(xxl-job、elastic job、阿里巴巴Scheduler)
5.分布式日志采集系统ELK+Kafka
6.分布式服务追踪与调用链Zipkin、skywalking等。
7.分布式锁(Redis(Redisson)/Zookeeper(Curator)实现分布式锁)
8.服务的接口保护(hystrix/sentinel)
这么多小服务,如何管理他们?(服务治理注册中心[服务注册发现剔除])
·这么多小服务,他们之间如何通讯?(restful rpc)
·这么多小服务,客户端怎么访问他们?(网关)
·这么多小服务, 一旦出现问题了,应该如何自处理?(容错)
·这么多小服务, 一旦出现问题了,应该如何排错?(链路追踪)
6、SpringCloud第一代与第二代的区别
SpringCloud第一代:
SpringCloud Config 分布式配置中心
SpringCloud Netflix 核心组件
Eureka:服务治理
Hystrix:服务保护框架
Ribbon:客户端负载均衡器
Feign:基于ribbon和hystrix的声明式服务调用组件
Zuul: 网关组件,提供智能路由、访问过滤等功能。
SpringCloud第二代(自己研发)和优秀的组件组合:
Spring Cloud Gateway 网关
Spring Cloud Loadbalancer 客户端负载均衡器
Spring Cloud r4j(Resilience4J) 服务保护
Spring Cloud Alibaba Nacos 服务注册
Spring Cloud Alibaba Nacos 分布式配置中心
Spring Cloud Alibaba Sentinel服务保护
SpringCloud Alibaba Seata分布式事务解决框架
Alibaba Cloud OSS 阿里云存储
Alibaba Cloud SchedulerX 分布式任务调度平台
Alibaba Cloud SMS 分布式短信系统
7、为什么Alibaba要推出SpringCloud组件
目的就是为了对阿里云的产品实现扩展。
SpringCloud与alibaba相结合,技术上有人负责更新新的组件,也还可以继续使用Spring社区的技术,阿里另外一方面也可以推广一波阿里云和各种商业软件,双赢局面。于是SpringCloud Alibaba诞生了
二、微服务概念名词
1、服务治理概念
在RPC远程调用过程中,服务与服务之间依赖关系非常大,服务Url地址管理非常复杂,所以这时候需要对我们服务的url实现治理,通过服务治理可以实现服务注册与发现、负载均衡、容错等。
2、服务注册中心概念
每次调用该服务如果地址直接写死的话,一旦接口发生变化的情况下,这时候需要重新发布版本才可以该接口调用地址,所以需要一个注册中心统一管理我们的服务注册与发现。
注册中心:我们的服务注册到我们注册中心,key为服务名称、value为该服务调用地址,该类型为集合类型。Eureka、consul、zookeeper、nacos等。
服务注册:我们生产者项目启动的时候,会将当前服务自己的信息地址注册到注册中心。
服务发现: 消费者从我们的注册中心上获取生产者调用的地址(集合),在使用负载均衡的策略获取集群中某个地址实现本地rpc远程调用。
3、服务接口调用
生产者:提供接口被其他服务调用
消费者:调用生产者接口实现消费
服务注册:将当前服务地址注册到nacos注册中心
服务发现:
三、版本对应表
在引入微服务相关依赖时,需要注意其版本问题,防止版本冲突
相关文章:
微服务之基本介绍
一、微服务架构介绍 1、微服务架构演变过程 单体应用架构->垂直应用架构一>分布式架构一>SOA架构-->微服务架构 ① 单体应用架构 互联网早期, 一般的网站应用流量较小,只需一个应用,将所有功能代码都部署在一起就可以&#x…...
嘉立创面板制作不规则图案技巧
首先附上效果图展示: 所需软件:嘉立创EDA(专业版)、photoshop、Adobe Illustrator 嘉立创EDA(专业版): 嘉立创面板绘制很容易上手,只要了解这几个图层的作用便可以做出自己想要的面板。 材料边界层: 代表选⽤的材料…...
如何使用Python中的collections模块提供的数据结构,如deque、Counter、OrderedDict等
Python 的 collections 模块提供了一些额外的数据结构,这些数据结构在内置的数据类型(如列表、字典、集合等)的基础上,增加了额外的功能或优化了性能。下面是如何使用 collections 模块中的 deque、Counter 和 OrderedDict 这三种…...
2024年道路安全员考试题库
2024年道路安全员考试题库 16.根据《中华人民共和国道路运输条例》,关于从事客运经营使用的车辆的规定,下列说法错误的是( )。 A.客运经营者应当使用符合国家规定标准的车辆从事道路运输经营 B.客运经营者应当加强对车辆的维护和检测,确保车辆符合国家规定的技术标准 C.…...
自建 Docker 镜像
本文地址:blog.lucien.ink/archives/547 本文主要参考自:自建Docker 镜像/源加速的方法 1. 简介 最近 Docker Hub 被禁一事引起了不小的波动,在这里简单讲下在这之后应该如何访问公开的 Docker Hub。 2. Cloudflare 2.1 搭建 搭建的前提是…...
php实现抖音小程序支付
开发者发起下单_小程序_抖音开放平台 第一步、抖音小程序发起支付 tt.pay_小程序_抖音开放平台 前端提交订单数据到后端接口,然后使用 tt.pay发起支付 请求参数 属性 类型 必填 说明 order_id string 是 担保交易服务端订单号 order_token string 是 …...
代码审计(1):CVE-2022-4957分析及复现
0x00漏洞描述: ѕрееdtеѕt iѕ а vеrу liɡhtԝеiɡht nеtԝоrk ѕрееd tеѕtinɡ tооl imрlеmеntеd in Jаvаѕсriрt. Thеrе iѕ а Crоѕѕ-ѕitе Sсriрtinɡ vulnеrаbilitу in librеѕроndеd ѕрееdtеѕt…...
问题:设备管理指标为完好率不低于( ),待修率不高于5%,事故率不高于1%。 #知识分享#经验分享#经验分享
问题:设备管理指标为完好率不低于( ),待修率不高于5%,事故率不高于1%。 A、100% B、95% C、90% D、80% 参考答案如图所示...
【Linux】(六)—— vim编辑器
vim文件编辑器 Vim(Vi Improved)是一个高度可配置的文本编辑器,最初基于UNIX下的Vi编辑器发展而来,广泛用于程序开发和系统管理中。vim编辑器可以只通过终端命令即可编写修改文件,不需要和gedit一样需要打开类似于记事…...
06016传感器原理与应用202207
06016传感器原理与应用202207 选择题(2*11) 1.基本的电子测量系统由四部分组成,即电源、信号调节、显示系统和B(P7) A.分档器 B.传感器 C.处理器 D.采集器 2.热电阻温度计的测量电路采用精度较高的是B&am…...
java web:springboot mysql开发的一套家政预约上门服务系统源码:家政上门服务系统的运行流程
java web:springboot mysql开发的一套家政预约上门服务系统源码:家政上门服务系统的运行流程 家政上门服务系统的优势 服务质量更稳定:由专业的家政人员提供服务,经过严格的培训和筛选。 价格更透明:采用套餐式收费&…...
二叉树的后序遍历-力扣
二叉树的后序遍历,指首先遍历二叉树的左节点,然后遍历二叉树的右节点,最后遍历中间节点。按照顺序进行递归遍历即可。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *rig…...
C++基础编程100题-008 OpenJudge-1.3-06 甲流疫情死亡率
更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0103/06/ 描述 甲流并不可怕,在中国,它的死亡率并不是很高。请根据截止2009年12月22日各省报告的甲流确诊数和死亡数,计算甲流在各省的死亡率。 输入 输入仅一行ÿ…...
计算机网络 ——网络层(IPv4地址)
计算机网络 ——网络层(IPv4地址) 什么是IPv4地址IP地址的分类特殊的IP地址 查看自己的IPv4地址 我们今天来看IPv4地址: 什么是IPv4地址 IPv4(Internet Protocol version 4)是第四版互联网协议,是第一个被…...
重写mybatisPlus自定义ID生成策略
1.项目中需要引入mybatisplus核心组件 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mp.version}</version></dependency> 2.新建一个类实现IdentifierGenera…...
华为坤灵路由器配置SSH
配置SSH服务器的管理网口IP地址。 <HUAWEI> system-view [HUAWEI] sysname SSH Server [SSH Server] interface meth 0/0/0 [SSH Server-MEth0/0/0] ip address 10.248.103.194 255.255.255.0 [SSH Server-MEth0/0/0] quit 在SSH服务器端生成本地密钥对。 [SSH Server…...
盘点一个Python网络爬虫的实战问题
点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 西宫南内多秋草,落叶满阶红不扫。 大家好,我是Python进阶者。 一、前言 前几天在Python最强王者交流群【🇿 &#x…...
100道面试必会算法-32-二叉树右视图用栈实现队列
100道面试必会算法-32-二叉树右视图&用栈实现队列 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4]示例 2: 输入: [1,n…...
⽀付逻辑漏洞思路⼩集合
⼀.直接的价格修改 ⼆.修改⽀付状态 三.修改购买数量 四:⽀付附属值修改 ➀:修改优惠劵⾦额 ➁:修改优惠劵⾦额及业务逻辑问题 ➂:修改积分⾦额 ➃:满减修改 五:订单替代⽀付 六:⽀付接…...
嵌入式学习——Linux高级编程复习(线程)——day40
1. 线程 1.1 定义 线程是一个轻量级的进程 是一个任务被创建、调度、消亡的过程 1.2 线程和进程的区别与联系 1. 线程是CPU任务调度的最小单元 2. 进程是操作系统资源分配的最小单元 3. 线程(Thread)是操作系统能够进行运算调度的最小单位…...
kvm管理工具-virsh
virsh 查看全部虚拟机列表停止虚拟机列表启动虚拟机强制关闭虚拟机连接虚拟机控制台查看虚拟机的详细信息查看虚拟机接口信息查看虚拟机xml文件配置删除虚拟机 KVM(Kernel-based Virtual Machine)是一种基于 Linux 内核的虚拟化技术,允许在一…...
VisionPro的应用和入门教程
第1章 关于VisionPro 1.1 康耐视的核心技术 1. 先进的视觉系统 康耐视的视觉系统结合了高性能的图像传感器、复杂的算法和强大的计算能力,能够实时捕捉、分析和处理高分辨率图像。其视觉系统包括固定式和手持式两种,适用于各种工业环境。无论是精密电…...
整数规划问题算法例子
整数规划问题算法概述 整数规划(Integer Programming, IP)问题是优化问题的一种,其中决策变量必须取整数值。整数规划问题在许多实际应用中广泛存在,如资源分配、排班、路径优化等。 0-1背包问题旅行商问题利用线性规划库求解整数规划问题的方法 以下是两个常见的整数规划…...
C#启动一个cmd.exe多次随时输入命令并获取输出
想要实现的效果,程序通过Process类一次启动cmd,后台线程每隔一定时间,向其输入命令,获得并处理输出。 一、基本操作 首先,通常操作的例子一抓一大把: 1、通过Process启动cmd执行一条/多条(&am…...
持续总结中!2024年面试必问 20 道分布式、微服务面试题(五)
上一篇地址:持续总结中!2024年面试必问 20 道分布式、微服务面试题(四)-CSDN博客 九、请解释API网关在微服务架构中的作用。 API网关是微服务架构中的一个重要组件,它充当所有客户端请求的单一入口点,然后…...
Android输入法IME(三)之 管理端(IMMS)启动流程
2.2. IME管理端(IMMS)初始化流程 IMMS运行在system server进程中,属于系统服务的一部分,用于控制输入法的显示/隐藏、切换、绑定等操作。 涉及代码文件路径: IMMS运行在system server进程中,属于系统服务的…...
elasticsearch安装与使用(4)-搜索入门
1、创建索引 PUT /hotel {"mappings": {"properties":{"title":{"type": "text"},"city":{"type": "keyword"},"price":{"type":"double"}}} }2、写入文档 …...
【UML用户指南】-12-对高级结构建模-接口、类型和角色
目录 1、名称 2、操作 3、关系 4、理解接口 5、常用建模技术 5.1、对系统中的接缝建模 5.2、对静态类型和动态类型建模 5.2.1、对静态类型建模 5.2.2、对动态类型建模 使接口易于理解和易于访问 接口在关于一个抽象做什么的描述与关于这个抽象如何做的实现之间定义了…...
C++笔试强训day42
目录 1.最大差值 2.兑换零钱 3.小红的子串 1.最大差值 链接https://www.nowcoder.com/practice/a01abbdc52ba4d5f8777fb5dae91b204?tpId182&tqId34396&rp1&ru/exam/company&qru/exam/company&sourceUrl%2Fexam%2Fcompany&difficulty2&judgeSta…...
Docker 中运行的 MySQL 数据库与 Docker 外部的管理系统连接
步骤 1:运行 MySQL 容器 首先,确保你的 Docker 容器中运行了 MySQL 数据库。 docker run --name mysql-container -e MYSQL_ROOT_PASSWORDmy-secret-pw -d -p 3306:3306 mysql:latest--name mysql-container 为容器命名。-e MYSQL_ROOT_PASSWORDmy-sec…...
做策划的网站推广/网站排名掉了怎么恢复
地图图像服务(ImageryService)提供了根据地理位置(经度和纬度)坐标和地图的缩放级别解析出对应于地图图片系统的完整地图数据元数据,包括图片映射地址、图片大小等一系列详细参数。通过该服务的服务接口也可以反向实现…...
中国旅游电子商务网站建设情况/seo少女
攻防世界 WEB 新手练习区 题目解答 浏览器:Firefox(火狐浏览器) 文章目录001 view source002 robots003 backup004 cookie005 disabled_button006 weak_auth001 view source 难度系数: 1.0 题目来源: Cyberpeace-n3k0 题目描述: X…...
wordpress图片主题演示/网页模板免费html
本人性别男,年龄47岁,一位建筑工程师,性格开朗,喜欢学习,2013年在网上搜索记忆关键词,从此开始了学习超级记忆和思维导图之路!也因此,接触了魔方!初学魔方,我…...
物联网技术是学什么的/seo薪资水平
FlatBuffers是一个高性能、跨平台的序列化库,支持C、C#、C、Go、Java、JavaScript、TypeScript、PHP和Python。由google开发,并用于游戏及其他对性能要求高的应用。 1、不用解析/解包,就可以直接访问序列化的数据 1)写schema文件。…...
做游戏ppt下载网站有哪些内容/直销的八大课程
绑定两台路由器之间的多条E1链路的方法有如下几种1.硬件IMUX 2-82.ATM IMA 2-323.Multilink ppp 2-84.Load balancing 2-6其中1、2为硬件解决方式,3、4为软件解决方式 PPP multilink配置方法:interface Mu…...
公司门户网站源码/企业网络营销策划案例
局域网计算机文件共享,您可能没有权限使用网络资源。请与这台服务器的管理员联系以查明您是否有访问权限2010-05-31 15:07:00| 分类: 电脑技术 | 标签:|字号大中小如果出现“xxx计算机无法访问,您可能没有权限使用网络资源。请与…...