1、有没有用过消息队列?用的哪个?
消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,有消息系统来确保信息的可靠专递,消息发布者只管把消息发布到MQ中而不管谁来取,消息使用者只管从MQ中取消息而不管谁发布的,这样发布者和使用者都不用知道对方的存在。
消息队列中间件是分布式系统中重要的组件,主要解决异步处理,应用解耦,流量削锋和消息通讯四个问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有RabbitMQ,Kafka等。
2、mybatis与jpa区别?
jpa的前身是著名的ssh中的h——>Hibernate。
mybatis和jpa,两个持久层框架。从底层到用法都不同。但是实现的功能是一样的。在业务逻辑多是多表关联的情况下,mybatis绝对比jpa要更加适合。无论是以后的维护还是业务的变更都方便不少。
3、乐观锁和悲观锁
当程序中可能出现并发的情况时,就需要保证在并发情况下数据的准确性,以此确保当前用户和其他用户一起操作时,所得到的结果和他单独操作时的结果是一样的。这就叫做并发控制。
没有做好并发控制,就可能导致脏读、幻读、不可重复读等问题。
悲观锁
每次读取数据的时候,都会担心数据被修改,所以每次查询数据的时候都会加锁,确保自己在读取数据的时候不会被别人修改。使用完成后对数据经行解锁,由于数据经行加锁,期间对该数据进行读写的其他线程都会进行等待。
乐观锁
每次获取数据的时候,都不会担心数据被修改,所以每次获取数据的时候都不会进行加锁。但是在更新数据的时候需要判断该数据是否被别人修改过。如果数据被其他线程修改,则不进行数据更新,如果数据没有被其他线程修改,则进行数据更新。由于数据没有进行加锁,期间该数据可以被其他线程进行读写操作。
两种所各有优缺点,读取频繁使用乐观锁,写入频繁使用悲观锁。
4、SpringCloud用到了哪些组件?(五大组件)
- 服务发现——Netflix Eureka (主要是把我们的各种服务注册进去,以便以后去调用服务)
- 服务网关——Netflix Zuul (用于对用户的身份认证、请求限流,统一地址)
- 负载均衡——Netflix Ribbon (有多个服务的时候,我们就需要用负载均衡策略去调用)
- 熔断器——Netflix Hystrix (服务也可能会崩掉,这就需要去做服务的熔断,主要是做熔断、降级和限流的)
- 分布式配置——Spring Cloud Config (不同的微服务中可能会有一些配置,管理起来是不好管理的,所以就得有一个统一的配置中心)
5、具体用什么操作的Redis?
Jredis、Springdata redis(流行)
6、有没有用过Docker? k8s?
docker是容器化技术,k8s是一套自动化部署的工具,可全生命周期管理docker容器。
Docker:
docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到不同的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。简言之,就是可以在Linux上镜像使用的这么一个容器。
Docker是一个快速交付应用、运行应用的技术:
(1).可以将程序及其依赖、运行环境一 起打包为一个镜像,可以迁移到任意Linux操作系统
(2).运行时利用沙箱机制形成隔离容器,各个应用互不干扰
(3).启动、移除都可以通过一行命令完成,方便快捷
大概了解了Docker,那我们接下来了解下什么是K8S?
K8S:
Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg),它主要用于 容器编排 启动容器、自动化部署、扩