面试题之微服务

1、面试题

1.1 微服务的优点是什么,缺点是什么?

商城的项目,有很多模块,商品管理,用户管理,营销管理,订单管理,开发人员多了,有200个开发人员在一起开发,每个微服务可以独立上线,每个微服务可以使用不同的技术。开发规模大了,开发人员多,必须用微服务。

缺点是性能低了

1.2 在什么情况下用springcloud alibaba,什么情况下用dubbo

在这里插入图片描述

内部调用用dubbo,允许别的公司调用用spring cloud alibaba

1.3 高并发,高性能,高可用必须用微服务吗?

在这里插入图片描述

微服务是为了解决团队中开发人员多的问题,

独立部署,上线,不同的模块能使用不同的技术,一个模块部署成一个集群,高可用,一个模块的集群全宕机了,不影响别的模块

1.4分布式id的解决方案

主键自动加1存在的问题是什么?

user表主键是自动加1,对手中午12点注册,每天中午12点注册一个帐号。看到自己的编号 100,200,400

对手能看到很多商业机密

用程序获取你的所有数据

item/getinfo?id=1

axios for(id=1;999999999){}

分库分表

服务器1 users表id从1开始

服务器2 users表id从1开始

在这里插入图片描述

一台db 1万/s

数据库集群 3万/s

redis 集群 30万/s

分段,一次准备好1万个id

id组成 时间+随机数+序号(00000001-99999999)

1.5 框架的高扩展如何实现

dubbo,springmvc,spring,mybatis 框架

框架是工具类,实现了通用功能

mybatis实现了连接数据库,查询sql,缓存,

框架通过扩展调用程序员写的代码

写框架,必须实现高扩展

1,框架中申明接口,抽象类,普通类

2,注解 @Restcontroller @Service,@Mapper

3,动态代理,调代理对象。InvocationHandler.invoke()

4,spi

baidu jdbc spi, duboo spi, springboot spi,spring cloud spi

5,责任链设计模式

在这里插入图片描述

Aspect,Interceptor/plugin

6,

订单模块
class OrderServiceImpl
{
    createOrder(Order oder){
        保存数据库
            积分
            优惠卷
            风控系统
            区域限制
    }
}

开闭原则

允许增加功能,不允许修改代码

解决方法

1,aop,拦截器,过滤器 都要修改订单模块代码

2,mq

在这里插入图片描述

1.6 超卖,如何减库存,如何下订单

在这里插入图片描述

超卖解决方法是在redis中执行lua脚本,实现原子性

如何下订单,分三步,1,lua减库存,2,订单进延迟队列 3,回库

2、随笔

超卖解决方法是在redis中执行lua脚本,实现原子性

如何下订单,分三步,1,lua减库存,2,订单进延迟队列 3,回库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

青木编码

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

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

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

打赏作者

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

抵扣说明:

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

余额充值