知识点梳理之微服务

🐒个人主页:信计2102罗铠威

🏅JavaEE系列专栏

📖前言:

本篇博客主要以介绍微服务的架构知识点

🎀服务治理Ncaos

进行服务的自动化管理:包括服务注册、服务发现、服务提出。首先将服务在Ncaos注册中心进行注册,通过网关来接收前端的请求。

🐕服务调用

是指不同项目之间如何相互调用,通过restTlement可以实现,但是代码比较固定(地址是写死的),也可以通过feign插件实现服务调用,feign默认集成ribbon,并且Ncaos可以兼容Feign,实现负载均衡。

🐕服务网关

就像springMVC架构流程一样,由一个spring cloud gateway网关来统一处理前端的所有请求,公共问题、信息认证、可以处理跨域问题,以及可以进行过滤,因为每个模块可能开启的多个服务端口,可以基于Ribbon实现负载均衡(并且里面还有七种负载均衡相关策略,默认是轮询的,还有按权重进行分配的,或者随机的,或者选择最小连接数的,如果没有最小就就轮询)

🐕服务容错

使用阿里巴巴 Sentinel软件可以对用户请求进行限流(1秒中不超过2次,为了保证如果其中的一个服务垮掉了,其他服务不会不可用,就是雪崩效应,尽量做好容错。可以进行隔离、超时、限流、熔断、降级,对其他的服务进行保护。
使用过jmeter进行压力测试

🐕MQ消息队列

MQ功能亮点:进行异步解耦 ,就是在常规情况下,假设我需要进行注册用户信息,将请求发到后端,存入数据库处理后,我们需要发送一个验证码/短信进行验证,需要调用相关的api,执行其他逻辑,最后才能把结果响应给前台,中间会耽误很长的时间。现在就是想将数据存到mysql之后立马给用户做出反馈,对于验证码。短信的发送交给MQ去执行,异步的进行处理,用户体验感会更好。rocketMQ支持可靠同步发送、可靠异步发送、单向发送

🐕Redis实现分布式锁

方式一:使用setnx命令
先与传统单体项目相比,sychronized、reentantLock因为锁的粒度太小了,所以对于分布式环境下不适用,可以采用Redis来实现分布式锁。因为Redis它有一个SetNX命令设置键值对(如果该键值对存在则此次操作无效,如果不存在,可以设置键值对进行加锁),锁超时可以释放,互斥的每次只有一个客户端拿到锁。
但是正常情况下会有很多问题:如果进程突然挂了,可能锁来不及释放,导致其他用户无法进入(所以需要设置过期时间,如果过期时间设置不合理,也会出问题,需要延长过期时间)
2.如果用户线程突然出异常了,可能执行不到释放锁的语句,所以使用的时候必须加上try{}finally{}确保锁会释放掉。
方式二:使用redission
redission是基于setnx命令进行封装的,将上面的问题都进行了预防,可以导入redission依赖,来实现分布式锁。但是仍然要使用finally进行锁的释放。

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信计2102罗铠威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值