dubbo面试积累
1.应用架构有哪些?
单一应用架构:所有功能写到同一项目,运行在单一进程中
当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。
垂直应用架构:
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。
分布式服务架构:(RPC:远程过程调用)
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。
流动计算架构
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。
2.RPC的概念,特点?
RPC的概念:(远程过程调用)
特点: 通信和序列化
3.注册中心:(Euraka、consul、zookeeper),Springcloud最多的是euraka,它支持多节点部署来保证自身的高可用
给服务提供者用来注册服务,给服务消费者提供服务提供者的url
1)什么是注册中心:
注册中心相当于手机的通讯录,服务注册就是将服务的地址添加到通讯录里面,服务发现就是当需要找这个服务的时候通过这个通讯录找到服务的地址进行拨号。
2)为什么要注册中心:
服务中心的作用不仅是服务的注册和发现,还要考虑服务注册后服务的及时发现,服务宕机后的及时下线,路由,异常时降级,自身高可用。
3)假如我服务消费者调用了一次服务提供者,注册中心突然宕机了,还能进行远程过程调用?
可以调用,因为服务消费者,已经将注册中心的服务提供者url缓存在本地
如果注册中心是集群,某一个台宕机了,会切换到另外一台
注册中心是发布订阅(pub/sub)的一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
4)多模块项目是单体应用?还是分布式应用?
判断主要根据是否使用了?“服务框架”(Dubbo,SpringCloud),有没有用到RPC
应用架构的演变
单体应用:所有功能写到同一项目,运行在单一进程中,
分布式应用:将功能(服务)拆分到多个项目中编写,使用服务框架(dubbo、springcloud),并且发布时需要放到不同服务器的应用
为什么要从单体应用过渡到分布式应用?
dubbo负载均衡
默认根据权重,随机,Random LoadBalance
根据请求累计,活跃数指调用前后计数差
服务降级的概念:业务剧增,不处理或者换方式处理
集群容错的概念:,找另外一台服务器
RPC,远程过程调用,是一种标准,也有这样的协议,是C/S架构
发布/订阅(消息通信模式) === 服务提供者/服务消费者