当前位置: 首页 > news >正文

微服务理解篇

一 :架构演变

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

2 Dubbo服务发现原理: 服务端将自己注册到zk上,消费端在zk上订阅自己需要的服务,zk将消费方需要的服务通过长连接推送到消费端,消费端将信息缓存在本地,然后消费方发起Rpc调用服务端服务端有信息变更,注册中心zk会通过长连接将信息推送到消费端,dubbo没有心跳机制,但是基于长连接检测服务存活状态3 注册中心挂了服务实例之间还能相互调用的原理:不管是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更像是一体机
 

六 : 结语

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

相关文章:

微服务理解篇

一 :架构演变 1 单体架构: 简单理解为一个服务涵盖所有需求功能2 垂直架构: 按照业务功能将单体架构拆分成小模块服务, 如:订单系统,用户系统,商品系统 ##缺点 引入分布式事务,分布式锁等,优点:模块解耦## 垂直拆分:根据业务层级拆分,比如商城的订单系统,用户系统,商品系统…...

项目篇:基于TCP通信模型的外卖软件实现

一、基本成员及功能实现 本项目主要由服务器,消费者,商家,外卖员组成。基本的功能如下。 对所有人: 1、可以注册登录 2、可以修改个人信息 3、可以销户 商家: 1、注册时需要填写售卖商品信息 2、可以修改商品信…...

深入浅出 diffusion(2):pytorch 实现 diffusion 加噪过程

我在上篇博客深入浅出 diffusion(1):白话 diffusion 原理(无公式)中介绍了 diffusion 的一些基本原理,其中谈到了 diffusion 的加噪过程,本文用pytorch 实现下到底是怎么加噪的。 import torch…...

【软件测试】学习笔记-构建并执行 JMeter 脚本的正确姿势

有些团队在组建之初往往并没有配置性能测试人员,后来随着公司业务体量的上升,开始有了性能测试的需求,很多公司为了节约成本会在业务测试团队里选一些技术能力不错的同学进行性能测试,但这些同学也是摸着石头过河。他们会去网上寻…...

iOS 面试 Swift基础题

一、Swift 存储属性和计算属性比较: 存储型属性:用于存储一个常量或者变量 计算型属性: 计算性属性不直接存储值,而是用 get / set 来取值 和 赋值,可以操作其他属性的变化. 计算属性可以用于类、结构体和枚举,存储属性只能用于类和结构体。存储属性可…...

(七)for循环控制

文章目录 用法while的用法for的用法两者之间的联系可以相互等价用for改写while示例for和while的死循环怎么写for循环见怪不怪表达式1省略第一.三个表达式省略(for 改 while)全省略即死循环(上面已介绍) 用法 类比学习while语句 …...

ASP .NET Core Api 使用过滤器

过滤器说明 过滤器与中间件很相似,过滤器(Filters)可在管道(pipeline)特定阶段(particular stage)前后执行操作。可以将过滤器视为拦截器(interceptors)。 过滤器级别范围…...

CodeGPT--(Visual )

GitCode - 开发者的代码家园 gitcode.com/ inscode.csdn.net/liujiaping/java_1706242128563/edit?openFileMain.java&editTypelite marketplace.visualstudio.com/items?itemNameCSDN.csdn-codegpt&spm1018.2226.3001.9836&extra%5Butm_source%5Dvip_chatgpt_c…...

1.Mybatis入门

目录 前言 1入门 1.1 入门程序实现 1.2 数据准备 ​编辑 1.3 配置Mybatis 1.4 编写SQL语句 1.5 单元测试 1.6 解决SQL警告与提示 2. JDBC介绍(了解) 2.1 介绍 2.2 代码 2.3 问题分析 2.4 技术对比 3. 数据库连接池 3.1 介绍 3.2 产品 4. lombok 4.1 介绍 4.…...

android camera系列(Camera1、Camera2、CameraX)的使用以及输出的图像格式

一、Camera 1.1、结合SurfaceView实现预览 1.1.1、布局 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-au…...

live555搭建流式rtsp服务器

源代码已上传gitee 一、需求 live555源代码中的liveMediaServer是将本地文件作为源文件搭建rtsp服务器&#xff0c;我想用live555封装一个第三方库&#xff0c;接收流数据搭建Rtsp服务器&#xff1b;预想接口如下&#xff1a; class LiveRtspServer { public:/***brief构造一…...

Apache孵化器领路人与导师的职责

对于捐赠到 ASF 孵化器的项目来说&#xff0c; ASF 孵化器项目管理委员会&#xff08;IPMC&#xff09;的成员会扮演两个角色&#xff0c;一个 孵化器领路人&#xff08;Champion&#xff09;&#xff0c;另外一个是孵化器导师&#xff08;Mentor&#xff09;。 本文源自 ALC …...

【C++中STL】set/multiset容器

set/multiset容器 Set基本概念set构造和赋值set的大小和交换set的插入和删除set查找和统计 set和multiset的区别pair对组两种创建方式 set容器排序 Set基本概念 所有元素都会在插入时自动被排序。 set/multist容器属于关联式容器&#xff0c;底层结构属于二叉树。 set不允许容…...

使用 create-react-app 创建 react 应用

一、创建项目并启动 第一步&#xff1a;全局安装&#xff1a;npm install -g create-react-app 第二步&#xff1a;切换到想创建项目的目录&#xff0c;使用命令create-react-app hello-react 第三步&#xff1a;进入项目目录&#xff0c;cd hello-react 第四步&#xff1a;启…...

obs-studio 源码学习 obs.h

obs.h 引用头文件介绍 c99defs.h&#xff1a;这个头文件提供了一些 C99 标准的定义和声明&#xff0c;包括一些常用的宏定义和类型定义&#xff0c;用于提高代码的可移植性和兼容性。 bmem.h&#xff1a;这个头文件提供了对内存分配和管理的功能&#xff0c;包括一些内存分配…...

C语言-指针的基本知识(上)

一、关于内存 存储器&#xff1a;存储数据器件 外存 外存又叫外部存储器&#xff0c;长期存放数据&#xff0c;掉电不丢失数据 常见的外存设备&#xff1a;硬盘、flash、rom、u盘、光盘、磁带 内存 内存又叫内部存储器&#xff0c;暂时存放数据&#xff0c;掉电数据…...

4核16G幻兽帕鲁服务器优惠价格表,阿里云和腾讯云报价

幻兽帕鲁服务器价格多少钱&#xff1f;4核16G服务器Palworld官方推荐配置&#xff0c;阿里云4核16G服务器32元1个月、96元3个月&#xff0c;腾讯云幻兽帕鲁服务器服务器4核16G14M带宽66元一个月、277元3个月&#xff0c;8核32G22M配置115元1个月、345元3个月&#xff0c;16核64…...

GitHub 上传文件夹到远程仓库、再次上传修改文件、如何使用lfs上传大文件、github报错一些问题

按照大家的做法&#xff0c;把自己遇到的问题及解决方案写出来&#xff08;注意&#xff1a;Error里面有些方法有时候我用可以成功&#xff0c;有时候我用也不能成功&#xff0c;写出来仅供参考&#xff0c;实在不行重头再clone&#xff0c;add&#xff0c;commit&#xff0c;p…...

一些es的基本操作

目录 给索引增加字段&#xff1a;给索引删除字段[^1]&#xff1a;创建索引&#xff1a;插入document删除document(应该是按ID) : 给索引增加字段&#xff1a; 用postMan: 给名为population_portrait_hash_seven的索引增加了一个text类型的字段。 用chrome插件Elasticvue 的Re…...

酒鬼酒2024年展望:稳发展动能,迈入恢复性增长轨道

文 | 琥珀酒研社 作者 | 渡过 最近几个月来&#xff0c;白酒估值回落到近十年来低位&#xff0c;反映出了整个白酒行业的市场低迷和虚弱现状。不管是头部企业五粮液、泸州老窖&#xff0c;还是区域酒企口子窖、金种子酒等&#xff0c;最近都通过“回购”或“增持”&#xff0…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...