简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
本文使用的是Security6的版本,先介绍SpringSecurity的使用,然后再去介绍OAuth2。SpringSecurity也只是入门知识版本:SpringBoot3.1.4、Security6.1.4创建一个简单的SpringBoot应用引入依赖编写一个简单的Controller启动项目后测试接口调用引入Spring Security依赖之后 ,访问 API 接口时,需要首先进行登录,
而Nacos2.X 从http请求改为了grpc请求的方式了,在健康检查这方面就是基于长连接来实现的。客户端发送心跳是在构建grpc连接时会有一个线程每隔5s发送一次,NacosClient端发送心跳的代码在。我们能大致猜测:当一个服务的实例进行了更新,那么是不是应该推送给所有订阅了该服务的客户端?当我订阅了某个服务,是不是应该将该服务信息推送给我?在服务实例检查检查流程中,如果出现了要注销的服务
官方文档:发送某个实例的心跳接口信息心跳机制 在线流程图健康检查在线流程图健康检查:现在先回到NacosClient进行服务注册时的代码,通过调用方法进行服务注册再来看类中run()方法具体的实现接收客户端的心跳接口,该接口找到instance所属的service后,再调用方法进行处理修改instance的LastBeat时间健康检查在线流程图健康检查机制是在服务注册的流程中进行的,接下来回忆一下
前置知识 pull模式pull拉模式的缺点,以保存本地文件举例:所以还有一种push推送模式。我们一般会引入第三方中间件来实现,以Nacos为例。我们修改了nacos中的配置,它就会将更新后的数据推送给微服务。push模式有两种实现方式:在微服务端添加读数据源,为dataId添加监听器,当规则配置文件更改之后我就获取到更改后的规则内存并更新内存中的数据;再添加一个写数据源,每当dashboard中
我们刚开始使用sentinel时,我们会先引入下面这个maven依赖然后编写这样的demo这种方式使得sentinel的定义资源、保护业务代码逻辑这些和我们的业务代码耦合在一起了。后来就使用了注解来解决这个问题但其实通过这个注解,它底层还是使用的上面的那一套try{}catch(){}finally()。只不过是利用了AOP的机制实现罢了sentinel中,其实核心的代码都是在微服务客户端这边,重
例如,可以使用一个环形数组来存储时间窗口内的数据点,数组的大小等于时间窗口的大小(以时间单位为单位)。每当有新的数据点进入时,旧的对应时间点的数据将被覆盖,从而实现滑动时间窗的效果。而且,当桶满了之后,多余的水将会溢出。随着时间的推移,新的数据点进入窗口,而旧的数据点则被移出窗口,从而形成了一个滑动的时间窗口。我们引入了下面的依赖,也就是我们实际使用sentinel的场景下
Topic是逻辑上的概念,producer和consumer通过Topic进行业务沟通Topic并不存储数据,数据是保存在Topic下的多组Partition中的,消息会尽量平均的分发在各组Partition中,每组Partition保存了Topic下的一部分消息每组Partition包含一个Leader和多个Follower,每组Partition的个数成为备份因子replica factor。
zookeeper整体元数据、Controller Broker选举机制、Leader Partition选举机制、Leader Partition自动平衡机制、Partition故障恢复机制、HW一致性保障-Epoch更新机制
Kafka是通过幂等性中单调递增的sequenceNumber来保证消息是顺序,因为是单调递增的,所以还能判断是否存在消息丢失一旦Kafka发现Producer传过来的SequenceNumber出现了跨越,那么就意味着中间有可能消息出现了丢失,就会往Producer抛出一个OutOfOrderSequenceException异常。再结合MessageQueue中的消息有序性,就能保证整体消息的
Kafka 客户端详细属性介绍