一、什么是SAAS平台?它的特点是什么?

SAAS平台就是供应商将应用软件都部署在自己的服务器里面,客户根据自身所需,可以通过互联网向供应商购买相应的应用软件服务,按照服务多少和服务时长付费,并通过互联网获取相应服务
特点:互联网特性、多重租赁特性、服务特性、可扩展特性

二、餐掌柜各个平台的作用是什么?

运营平台: 运营商管理基础数据模块运营商管理基础数据模块【统一权限、日志、图片、数字字典】以
及商家管理的平台
商家平台: 点餐后台核心的业务,提供店铺、菜品、桌号、订单、结算等功能
点餐平台: H5点餐平台,给客户点单、加菜、开桌等功能

三、说出餐掌柜项目的通用服务、核心服务、系统架构作用是什么?分别用到的技术是什么?

通用服务: 主要有三大特征敏捷、解耦、复用
核心服务:
image.png
系统架构:
展现层:负载与用户的交互,分为Android、IOS、web应用,他们都是通过访问统一的gateway网关来实现业务数据的访问
代理层:选用高性能的nginx服务,通过域名与不同servrce的绑定,通过gateway路由到不同的服务器组
权限控制层:使用无状态的JWT认证,结合Spring Security实现统一的权限控制
服务治理:使用nacos注册中心,配置中心实现服务的治理
服务调用:使用Spring Cloud alibaba 的核心组件dubbo进行服务之间的调用
流量控制:使用 Sentinel把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性
缓冲层:spring cache 配合redis轻松无侵入的实现业务数据的缓冲
基础业务支撑:基于spring boot脚手架,轻松集成OSS图片存储、sharding-jdbc分库分表、mybatis-plus、docker、接口文档swagger2、分布式事务seata、MySQL、RocketMQ/RabbitMQ等组件
image.png

四、项目模板及核心项目模块职责?

采用的是maven的分层架构来设计的,各个模块都相对独立,便于维护,可扩展性强
super: 主模块,管理整个项目的依赖和插件,负责模块的定义
framework: 对各个核心的模块进行集成
gateway: 网关对外的统一接口,集成对日志client、鉴权client、knife4j组件
basic: 基础服务模块,与业务无关的组件都在这里集成
report: 报表模块,提供统一的日志报表,对各个子系统报表提供接口支撑
security: 统一鉴权模块,依赖spring-security
shop: 商家中心模块:各个主业务功能的实现,并且提供H5点餐端
trading: 交易平台,提供商家平台支付业务的结算功能

五、能够说出项目数据库表结构设计及分库设计?

遵循领域模型设计DDD,总共有五个库,基础表、权限表、商家表、交易表、报单表,
项目全都采用逻辑关联,未使用外键约束
虽然没有遵循第三范式消除冗余字段,但是冗余是为了提高查询的效率
尽可能的服务独立化,查询单标化

六、什么是微服务?微服务特点是什么?

微服务是体积小的服务,他们可以独立部署和运行,并且他们之间是松耦合的
特性:
单一职责: 微服务中的服务都有自己的职责
微小: 微服务的服务拆分粒度很小
面向服务: 微服务的服务之间相互独立,互不干扰
自治: 微服务的服务都要对外暴露协议和提供接口

七、能够描述docker-compose文件创建的容器及容器启动的依赖关系?

image.png

八、能够描述运营平台服务的调用链路?

image.png
用户发起请求访问restkeeper-vue-operator,在vue中有网关设置
vue中网关会调用restkeeper-gateway-operator网关,然后由restkeeper-gateway-operator网关路由对应业务系统web项目
model-basic-job-listen模块主要负责日志的收集【后面分析】
运营平台中有2个核心web模块:model-security-web【统一权限】、model-basic-web【基础服务】的服务消费方模块
运营平台中有2个核心producer模块:model-security-producer【统一权限】、model-basic-producer【基础服务】的服务提供方模块

九、能够说出basicXXX的基础类的作用?

BasicPojo 各个模块中POJO对象继承的基础父类 定义了所有实体类的公共字段
BasicVo 各个模块中VO对象继承的基础父类 定义了所有VO对象的公共字段
IBasicEnum 各个模块中枚举对象实现的基础父接口 定义了枚举对象实现的基础方法

十、能够说出VO和POJO的作用范围?

image.png

十一、能够理解异常枚举类的作用?

主要是为了规范异常处理后返回的信息

十二、Dubbo服务架构执行流程?

day01项目概述及环境搭建(Dubbo) - 图6
1.启动Dubbo容器Container
2.服务提供者Provider先去注册中心nacos注册 服务名,端口,ip,group,version,接口全路径等信息
3.服务消费者去注册中心nacos订阅所需的服务(已经在nacos中注册的服务)
4.当服务提供者Provider发生变化时,注册中心nacos异步通知服务消费者Consumer
5.服务消费者Consumer通过动态代理发起远程同步调用服务提供者Provider
6.服务消费者Consumer和服务提供者Provider每隔一分钟会向监控中心Monitor发起访问次数和频率等统计信息

十三、Dubbo调用方式?基于什么协议实现?

同步调用和异步调用
基于RPC协议实现

十四、Dubbo常用注解是什么?

@DubboService
@DubboReference
@EnableDubbo

十五、能够掌握业务开发模板间的调用链路(生产者、消费者的接口的定义)?

image.png
shop 商家服务平台
applet H5点餐小程序dubbo接口实现【服务提供方】
interface 商家平台所有dubbo接口定义
listen 商家服务平台定时任务及监听模块【监听消费、定义任务】
producer 后端业务dubbo接口实现【服务提供方】
service 核心业务层【被所有服务提供方、服务消费方、监听、定时任务依赖】
user 用户业务依赖于model-security-service的业务实现【服务提供方】
web 对外商家服务平台web层,被restkeeper-gateway-shop系统调用【服务消费方】