面试问题6

一.gc的过程。

1.第一步进行第一次标记,也就是从GCroot对象往下确认调用链,没有被引用的对象标记为垃圾,这种方法为可达性分析,gcroot对象从虚拟机栈,本地方法栈对象,方法区静态变量对象,方法区常量对象中选取。
2.第二步进行第二次标记,查看对象的finilize方法的引用对象是否在第一次标记的引用链上,如果有引用则放弃该对象的回收。
3.进行回收操作,新生代采用的是复制算法,老年代采用的是标记清除算法,或者标记整理法进行回收垃圾。

二、.双token机制

双token机制是为了解决活跃用户频繁登录设计的,用户登录后会返回两个token一个是accesstoken一个是refreshtoken,accesstoken一般有效期为30分钟内,accesstoken一般为一天或者两天,校验过程如下,1.服务器端校验accesstoken有效则放行 ,无效则校验refreshtoken
2.校验refreshtoken在有效期内,则说明该用户至少在这一天或者2天内是活跃的,刷新accesstoken和refreshtoken给到客户端。
3.这样如果用户是一天内活跃的就不用重新登录了。
4.如果两个token都失效了,则证明该用户一天或者两天没有活跃了,需要重新登录。

三、springgateway原理

1.springgateway底层使用的springwebflux框架进行通信,这个框架使用的是netty的reactor模型进行服务调用转发。
2.在多cpu的场景下,高并发使用的是主从reactor多线程模型进行服务转发。
3.reactor进行服务连接的建立和io事件处理。当请求过来的时候,分配给acceptor,acceptor分配给subreactor。
4.subReactor负责多路分离已连接的socket,读写网络数据;业务处理功能,其交给worker线程池完成。通常,subReactor个数上可与CPU个数等同。
5.该通信模式为io多路复用,在高并发的情景下性能更好。

四、springzuul原理

1.zuul原理和gateway不同,使用的是tomcat进行服务连接建立,通过zuulservlet进行服务的转发调用。
2.可以实现各种filter进行服务拦截。包括请求前,请求后处理。

五、springateway路由刷新

1.RefreshRoutesEvent继承了ApplicationEvent ,并且在定时任务里面去发布事件。
2.在发布事件里面,把路由定义也就是rotedefinition放到DynamicRouteDefinitionRepository类中,实现路由的刷新。

六、一万人同时登录能否使用消息去做。

1.不能使用消息去做,登录属于实时性要求很高的接口,消息适合处理实时性不高,但是并发量大的事务。
2.一万人同时操作,登录的接口链路尽量要短,对于一些异步操作不用使用同步去做,例如打点操作异步去做,用户信息存储redis,加快用户登录成功后获取用户信息速度。

七、如何从架构层面优化性能。

1.高并发服务单独做一个服务出来。
只能想到这个了,有厉害的可以评论区指导下。

八、saas平台如何架构

知识盲区。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值