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

微服务中间件

Nacos
Nacos 端口号:8848 注册中心和配置中心
 
Nacos的心跳机制-------为每个微服务和Nacos保持沟通和交换信息
默认情况下:服务启动每隔5秒向Nacos发送一个心跳包,包含基本信息
 
一个服务心跳3次心跳(15秒)未与Nacos进行信息交互-----不健康
一个服务心跳6次心跳(30秒)未与Nacos进行信息交互------从注册列表中删除

Dubbo
RPC(Remote Procedure Call):远程过程调用
   需要通信协议和序列化协议
Dubbo是一套RPC框架(实现微服务之间的相互调用)
   使用的是2.7之后的版本
   通信协议------dubbo(默认)
   序列化协议------hessianz(默认)
   特征:
使用NIO单一长链接
优秀的并发性能,处理大型文件
注册发现流程
服务的提供者启动服务会将自己具备的服务注册到注册中心(Nacos),其中包括ip地址及端口等信息,同时注册该项目提供的远程调用的方法。
消费者的那个项目,也注册到注册中心,同时从Nacos中获得所有服务列表
当注册中心发现新的服务,会通知已订阅的消费者,更新所有服务队列
RPC调用,根据注册中心服务列表的信息,只需要服务名称就可以利用Dubbo调用远程方法

负载均衡(Loadbalance)
多个功能相同的项目运行(集群),可以承受更高的并发,负载均衡为了将请求尽可能的在相对空闲的服务器上运行。
Dubbo内置的负载均衡算法
random loadlabance 随机分配(默认)------随机生成一个随机数,在哪个范围就让哪个服务器运行
优点:算法简单,效率高,长时间运行下,任务分配比例准确
缺点:偶然性高,如果连续的几个随机请求发送带性能弱的服务器,会导致宕机
round Robin Loadlabance 权重平滑分配------按照比例,选择占比最大的,选择后减去总权重数,然后一次加上占比数.
Leastactive Loadbalance 活跃度自动感知分配-------记录每个服务器处理一次请求的使时间,按照时间比例分配任务数,运行一次时间多的分配的请求少。
Consistanthash Loadbalance一致性hash算法分配------根据请求的参数进行hash运算,以后每次相同参数的请求都会访问固定服务器,因为根据参数选择服务器,不能平衡的分配到每台服务器上,所以用得也较少。
配置
生产者:
要有service接口
业务逻辑层实现类上添加@DubboService
SpringBoot启动类添加@EnableDubbo
消费者:
Pom文件添加消费者模块的service依赖
在业务逻辑层调用前,添加@DubboReference

Seata
 在微服务架构下提供高性能和简单易用的分布式事务
 事务的四个特性:
 原子性:事务中的操作是一个整体,要么都成功,要么都失败
 一致性:事务的执行不能破坏数据的完整性和一致性,一个事务执行前和执行后,数据库都必须处于一直状态(如果数据库在运行过程中发生故障,有些事务未完成就被迫中断,但是事务对数据库已经做了一定的修改(一些如物理数据库),数据库则处于一种不正确的状态,这就是不一致状态)
隔离性:并发事务是相互隔离的,每个事务都有各自的数据空间,事务之间的执行是互不干扰的。
事务的四个隔离了机制:
读未提交(Read Uncommited)------如果一个事务已经开始写数据,其他事务不能同时进行写操作,但是,允许其他事务读此行数据,可以通过排他锁实现,可以避免更新丢失,但是会造成脏读(一个事务读取到了另一个事务未提交的数据操作结果。)。          
读已提交(Read Commmited)-------读取数据的事务允许其他数据访问,但是对于未提交的写事务,会禁止访问。避免了脏读,但是可能会出现不可重复读。
可重复读(Repeatable Read)--------读取数据的事务将会禁止写事务(允许读事务),写事务禁止任何其他事务。可以通过共享锁和排他锁实现。避免了不可重复读和脏读,但是可能会出现幻读
可串行化------要求事务序列化,一个一个的执行,但是只靠行锁是无法实现的。但是一般不会用

持久性:保存到硬盘。

Seata组成
TC:事务协调器
TM:事务管理器
RM:资源管理器

AT模式运行过程:
事务的发起方(TM)向事务协调器(TC)申请一个全局事务id,并保存
Seata会管理事务中所有的参与方的数据源,将数据操作前后的镜像都保存到undo-log表中,依靠它来实现提交和回滚。
事务的发起方(TM)会连同全局id一起通过远程调用,运行RM中的方法。
RM接收全局id,去运行指定方法,并运行结果的状态发送到TC。
如果所有的分支都正常,TC会通知所有分支进行提交,此时才会正真的影响数据库。反之如果有任何一个分支发生异常,TC会通知所有分支进行回滚,数据库恢复运行前的内容。
启动命令:Seata-server.bat -h 127.0.0.1 -m -file
使用:业务逻辑层实现类增加@GlobalTransational

Sentinel 
端口号:8080
为了保证服务的稳定性,在请求数到达设计最高值是,将过期的请求限流/保证在设计请求数内的请求能够稳定完成处理。

一般运用在控制层上。
增加@SentineResource(Value,blockHandler,fallback)
                          限流方法  降级方法

相关文章:

  • C语言学习-数组应用-三子棋(4.1)
  • java编程思想
  • HECTF2022
  • CTFshow web37 38 39 40
  • vue3项目,vite+vue3+ts+pinia(8)-开发和生产模式配置+跨域
  • 基于STM32-Socket-Qt 遥控小车(一代)
  • 对Java中的Exception(异常)机制的详细总结(大全)
  • 浏览器无痕模式有什么作用,手机浏览器开启无痕模式的方法
  • 猿创征文 | Devpos运维的10个日常使用工具分享
  • 基于IPv6的5G专网终端身份认证技术与应用
  • 3D开发学习之笛卡尔坐标系
  • ElasticSearch-查询语法(全文查询)
  • 安全狗受邀亮相第二届工控中国大会
  • 【双十一特辑】爱心代码(程序员的浪漫)-李峋
  • 修改寄存器值的方法
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Babel配置的不完全指南
  • CAP 一致性协议及应用解析
  • JAVA SE 6 GC调优笔记
  • JavaScript 基本功--面试宝典
  • k个最大的数及变种小结
  • MQ框架的比较
  • Spring Boot快速入门(一):Hello Spring Boot
  • Webpack 4 学习01(基础配置)
  • 蓝海存储开关机注意事项总结
  • 我这样减少了26.5M Java内存!
  • 学习JavaScript数据结构与算法 — 树
  • 译米田引理
  • 字符串匹配基础上
  • (13)Hive调优——动态分区导致的小文件问题
  • (C语言)球球大作战
  • (Forward) Music Player: From UI Proposal to Code
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (南京观海微电子)——I3C协议介绍
  • (四)图像的%2线性拉伸
  • (推荐)叮当——中文语音对话机器人
  • (转载)Linux网络编程入门
  • .Net 8.0 新的变化
  • .NET 中的轻量级线程安全
  • .NetCore部署微服务(二)
  • .netcore如何运行环境安装到Linux服务器
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .NET微信公众号开发-2.0创建自定义菜单
  • /3GB和/USERVA开关
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • []C/C++读取串口接收到的数据程序
  • [CentOs7]搭建ftp服务器(2)——添加用户
  • [CF]Codeforces Round #551 (Div. 2)
  • [ICCV2017]Neural Person Search Machines
  • [Java]快速入门二叉树,手撕相关面试题
  • [leetcode top100] 0924 找到数组中消失的数,合并二叉树,比特位计数,汉明距离