微服务理解篇

一 :架构演变

1 单体架构: 简单理解为一个服务涵盖所有需求功能
2 垂直架构: 按照业务功能将单体架构拆分成小模块服务, 如:订单系统,用户系统,商品系统 ##缺点 引入分布式事务,分布式锁等,优点:模块解耦##
   垂直拆分:根据业务层级拆分,比如商城的订单系统,用户系统,商品系统
   水平拆分:根据业务拆分,用户系统,对处于同一个层级的服务做拆分,典型案例如数据库表将用户表拆分,分表操作
3 rpc(Remote Procedure Call Protocol):基于垂直架构,各个业务系统单独部署,但是之间需要有通讯,产生rpc概念  ##这块的Rpc只表示远程调用的概念,不作为通讯协议理解##
4 soa(Service-Oriented Architecture): 基于Rpc远程调用概念和垂直架构的背景,soa作为一种服务治理的思想出现,解决垂架构各个业务系统独过于独立的问题,使得各个业务系统能相互感知,由此诞生出注册中心(zookeeper,Eureka,Nacos,ServiceComb等)
5 微服务: 垂直架构就已经是微服务的雏形,搭配soa的思想后,各个业务系统将自己注册到注册中心,由注册中心维护各个服务的信息,完成各个服务之间的交互  ##soa是服务统一管理的思想,微服务是业务的具体实现##


二: 微服务治理体系


1 ServiceComb:go语言的,java版本的,基于RPC协议的
  java chassis:开箱即用,在内部集成了Feign,Hystrix,Ribbon,优化了的熔断限流隔离机制,在Hystrix的基础上优化了线程的创建,负载均衡等,内部集成了SpringCloud的诸多组件,也是基于Rpc
  Service-Center:注册中心是双层架构的,两个sc公用一个数据存储区,将实例信息缓存在其中,消费端和注册中心建立长连接,监控注册中心的服务实例信息
  saga: ap模式的,各个服务各自提交各自的,谁有问题最后尝试重试,做事务补偿,或者向前做回滚,最终保持一致性

2 Eureka:
  实例注册
  心跳机制
  定时拉取(实例缓存)
3 Nacos
  实例注册
  心跳机制
  定时拉取(实例缓存)
4 zookeeper
  实例注册->建立长连接->拉取最新实例缓存

参考图(网图)

三 :服务发现


1 服务发现原理: 服务端和消费端都将自 己注册到注册中心,注册中心维护一个大的map,保存注册上来的服务信息,各个服务通过定时向注册中心发送消息,
 即心跳机制,防止服务实例被注册中心剔除,同时会定时从注册中心拉取最新的实例信息缓存到本地

2 注册中心挂了服务实例之间还嫩相互调用的原理:
 不管是dubbo(zookeeper)还是Eureka,Nacos,都会定时从注册中心拉取最新的实例信息缓存到本地,注册中心不能用了,只是新的服务无法完成注册以及服务发现,但是之前已经存在的服务还是可以走缓存完成正常的调用


四 :注册中心连接方式


1 长连接和短链接概念:
  长连接是双方简历socket不间断持续通讯,短链接建立socket后发送一次消息即关闭socket,形象一点,长连接就像是打电话,短链接就像是发消息

2 常见注册中心的分类
  短连接: Eureka,Nacos(分版本,老版本短链接,新版本长连接)
  长连接: zookeeper,ServiceComb,Nacos(分版本,老版本短链接,新版本长连接)

3 类比:

 长连接: 及时的同步实例信息,如果有变更实例,注册中心将基于长连接及时的变更后的数据给消费者
  短连接:实例变更,注册中心上的实例信息不会第一时间通知到消费短服务,消费端是定时拉取的
  注意:存在时间差的

五 :注册中心cap理论的应用


  CP:zookeeper保证了cp,强一致性,zk的master挂了后会重新选举领导,选举期间注册中心对外不可用,zk一般是长连接,严格要求各个实例上的节点信息一致
  AP:Eureka和RocketMq的命名服务器一样,各个service是平等的,但是Eureka会相互注册,Eureka的某个节点挂了,其他节点照样可以正常工作,只是暂时的节点数据不一致,当挂掉的节点恢复后会从那个正常节点上同步数据,Eureka保证了临时节点数据不一致,但是基本可用,最后一致
  注意: nacos的新版本支持AP和CP,设置即可

六: 微服务体系的类比
1 http协议和rpc协议:
相同点:都是基于tcp/ip的传输层协议
不同: http传输数据是面向互联网大众应用的,做的封装和数据格式比较的繁杂,报文体系比较大,数据载体冗余,造成传输效率就比RPC低,RPC传输协议是面向服务对象,是一种专门根据服务量身定制的协议,因此只能在两个约定的服务上,不能跨应用,否则无法解析数据,Rpc去除了http多余的封装,数据包比http数据包小的,量身定制,数据包缩小,因此RPC比http效率高,Rpc也可以基于http

2 Dubbo和SpringCloud对比以及ServiceComb体系
  Dubbo是长连接,注重的是服务分层,讲究的是效率,基于rpc
  SpringCloud是短链接,基于http,是诸多丰富组件的合成体
  ServiceComb是长链接,基于RPC,集成了SpringCloud的常用组件,SpringCloud像是台式机,ServiceComb更像是一体机
 

六 : 结语

 综上所述,仅代表个人认知,欢迎指错

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Fastjson代码审计实战

代码审计-漏洞复现 漏洞分析采用的是华夏ERP2.3, 查看pom.xml文件发现fastjson版本1.2.55,该版本存在漏洞,利用DNSlog进行验证。 fastjson涉及反序列化的方法有两种,JSON.parseObject()和JSON.parse(),在代码中直接搜…

长城资产信息技术岗24届校招面试面经

本文介绍2024届秋招中,中国长城资产管理股份有限公司的信息技术岗岗位一面的面试基本情况、提问问题等。 10月投递了中国长城资产管理股份有限公司的信息技术岗岗位,所在部门为长城新盛信托有限责任公司。目前完成了一面,在这里记录一下一面经…

大数据数据可视化工具ECharts,从入门到精通!

介绍:ECharts是一个强大的数据可视化图表库,它基于JavaScript开发,并具有丰富的特性和灵活性。 多平台支持:ECharts可以在PC和移动设备上流畅运行,它对移动端进行了优化,确保在不同设备上都有良好的展示效果…

【LangChain学习之旅】—(9) 用SequencialChain链接不同的组件

【LangChain学习之旅】—(9)用SequencialChain链接不同的组件 什么是 ChainLLMChain:最简单的链链的调用方式直接调用通过 run 方法通过 predict 方法通过 apply 方法通过 generate 方法 Sequential Chain:顺序链首先,…

ChatGPT+Midjourney+闲鱼赚钱方法实战探索

最近天天在朋友群内看到朋友接单(出售提示词,图片),轻轻松松半小时就赚200-300,特意探索了一下相关玩法,总结出一套ChatGPTMidjourney闲鱼赚钱方法,主打的是易上手,有可操作性! 具体…

9.前端--CSS-三大特性

1.层叠性 相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突的问题 层叠性原则: 样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行哪个样式样式不…

Vulnhub-dc5

靶场下载 https://download.vulnhub.com/dc/DC-5.zip 信息收集 # nmap -sn 192.168.1.0/24 -oN live.port Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-21 20:56 CST Nmap scan report for 192.168.1.1 (192.168.1.1) Host is up (0.00057s latency). MAC Address:…

Java线程池七大参数详解和配置(面试重点!!!)

一、corePoolSize核心线程数 二、maximunPoolSize最大线程数 三、keepAliveTime空闲线程存活时间 四、unit空闲线程存活时间的单位 五、workQueue线程工作队列 1、ArrayBlockingQueue FIFO有界阻塞队列 2、LinkedBlockingQueue FIFO无限队列 3、PriorityBlockingQueue V…

C4.5决策树的基本建模流程

C4.5决策树的基本建模流程 作为ID3算法的升级版,C4.5在三个方面对ID3进行了优化: (1)它引入了信息值(information value)的概念来修正信息熵的计算结果,以抑制ID3更偏向于选择具有更多分类水平…

算法通关村番外篇-面试150题五

大家好我是苏麟 , 今天带来LeetCode面试题的哈希题目 . 哈希表 202. 快乐数 描述 : 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为…

Selenium + Django + Echarts 实现亚马逊商品数据可视化爬虫项目

最近完成了1个爬虫项目,记录一下自己的心得。 项目功能简介 根据用户输入商品名称、类别名称,使用Selenium, BS4等技术每天定时抓取亚马逊商品数据,使用Pandas进行数据清洗后保存在MySql数据库中. 使用Django提供用户端功能,显…

Unity中URP下获取主灯信息

文章目录 前言一、计算BulinnPhone的函数有两个重载1、 目前最新使用的是该方法(这是我们之后主要分析的函数)2、 被淘汰的老方法,需要传入一堆数据 二、GetMainLight1、Light结构体2、GetMainLight具有4个方法重载3、1号重载干了什么&#x…

GNSS技术与无人机协同:开启未来交通新篇章

随着科技的不断发展,全球导航卫星系统(GNSS)技术与无人机技术的协同应用成为未来交通系统的引人瞩目的新方向。创新微公司在这一领域的技术创新为实现GNSS技术与无人机的紧密协同提供了新的可能性。本文将深入探讨GNSS技术与无人机协同的前景…

Pytorch中Dataset和dadaloader的理解

不同的数据集在形式上千差万别,为了能够统一用于模型的训练,Pytorch框架下定义了一个dataset类和一个dataloader类。 dataset用于获取数据集中的样本,dataloader 用于抽取部分样本用于训练。比如说一个用于分割任务的图像数据集的结构如图1所…

基于springboot+vue的足球青训俱乐部管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…

美多商城用户注册-展示用户注册页面-补充短信验证码后端逻辑-避免频发发送-pipeline操作redis-7...

补充短信验证码前后端逻辑 1.补充注册短信验证码后端逻辑 在user中的views中添加添加短信验证码的参数 sms_code_client request.POST.get(sms_code) 保存注册数据之前,对比短信验证码,在views中添加校验 redis_conn get_redis_connection(verify_code…

【C++干货铺】C++异常处理机制

个人主页点击直达:小白不是程序媛 C系列专栏:C干货铺 代码仓库:Gitee 目录 C语言传统的处理错误的方式 C处理异常方式 异常的使用 异常的抛出和捕获 异常的重新抛出 异常安全 异常规范 自定义异常体系 C标准库中的异常体系 ​编辑…

防火墙基础1

防火墙简绍 什么是防火墙? 状态防火墙工作原理? 防火墙如何处理双通道协议? 防火墙如何处理nat? 路由交换终归结底是连通性设备。 网络在远古时期没有防火墙大家都是联通的,any to any。 防御对象: 授权用户 非授权用户 防火墙是一种隔离…

Elment UI的el-table-column表头旁边有点击按钮类似的操作

Elment UI的el-table-column表头旁边有点击按钮类似的操作 <el-table-column fixed"right" label"操作" ><!-- 表头 --> {{-- <template slot"header" header"scope">--}} {{-- <span…

3.jmeter接口关联及实战

1.当所传参数包含键值对和json文件时&#xff0c;键值对放在链接后&#xff0c;参数放在消息体数据中 2.当查看结果树返回乱码时&#xff0c;修改请求中内容编码为utf-8 一、jmeter接口关联 1.正则表达式提取器 接口2.3传递的参数中需要用到接口1的返回值 禁用接口2.3&#…
最新文章