- 1. 什么是SAAS平台?他的特点是什么?
- 2. 餐掌柜各个平台的作用是什么?
- 3. 说出餐掌柜项目的通用服务、核心业务、系统架构作用是什么? 分别用到的技术是什么?
- 4. 项目模块及核心项目模块职责?
- 5. 能够说出项目数据库表结构设计及分库设计
- 6. 什么是微服务? 微服务的特点是什么?
- 7.能够描述docker-compose文件创建的容器及容器启动的依赖关系?
- 8. 能够描述运营平台服务的调用链路?
- 9. 能够说出basicXXX 的基础类的作用?
- 10. 能够说出 Vo和POJO的作用范围?
- 11. 能够理解异常枚举类的作用?
- 作用:各模块的异常枚举,给用户友好提示
12. 能够掌握业务开发模块间的调用链路(生产者、消费者的接口的定义)
1. 什么是SAAS平台?他的特点是什么?
SaaS平台:供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得Saas平台供应商提供的服务
总结:服务共享,数据隔离
互联网特性
SaaS软件行业知名产品NetSuite所提供的在线ERP、在线CRM等模块产品都是基于网络的,这样的优势在于不必投入任何硬件费用,也不用请专业的系统维护人员就能上网,有浏览器就可以进行ERP、CRM系统的使用。快速的实施、便捷的使用、低廉的价格都有赖于SaaS产品的互联网特性。
多重租赁(Multi-tenancy)特性
SaaS服务通常基于一套标准软件系统为成百上千的不同客户(又称为租户)提供服务。这要求SaaS服务能够支持不同租户之间数据和配置的隔离,从而保证每个租户数据的安全与隐私,以及用户对诸如界面、业务逻辑、数据结构等的个性化需求。由于SaaS同时支持多个租户,每个租户又有很多用户,这对支撑软件的基础设施平台的性能、稳定性和扩展性提出很大挑战。SaaS作为一种基于互联网的软件交付模式,优化软件大规模应用后的性能和运营成本是架构师的核心任务。
服务(Service)特性
SaaS使软件以互联网为载体的服务形式被客户使用,所以很多服务合约的签订、服务使用的计量、在线服务质量的保证和服务费用的收取等问题都必须加以考虑。而这些问题通常是传统软件没有考虑到的。 服务的使用必须通过 权限 控制
可扩展(Scalable)特性
可扩展性意味着最大限度地提高系统的并发性,更有效地使用系统资源。比如应用:优化资源锁的持久性,使用无状态的进程,使用资源池来共享线和数据库连接等关键资源,缓存参考数据,为大型数据库分区。
2. 餐掌柜各个平台的作用是什么?
- 运营平台:运营商管理基础数据模块【统一权限、日志、图片、数字字典】以及商家管理的平台(运营商)
- 商家平台:点餐后台核心业务,提供员工、店铺、桌台、菜品、订单、结算等功能(商家)
- 点餐平台:H5点餐平台,客户实现开桌、点餐、追加菜品等功能(客户)
3. 说出餐掌柜项目的通用服务、核心业务、系统架构作用是什么? 分别用到的技术是什么?
1.通用服务有哪些:
通用非业务系统的中台系统:权限、支付、图片、数字自动、日志中心、报表等
提供SaaS化的服务建立通用服务业务为了业务的敏捷,创新!有下面三个特征:
- 敏捷 业务需求变化快,变更以天甚至更短的频率计算,一个单体大型应用,庞大的开发团队对单一应用的变更变得越来越困难。将大应用变为多个小的应用组合,才能适应外部的快速变化,实现业务的敏捷。
- 解耦 随着业务的发展,业务系统之间的交互通常会变得越来越复杂。一个功能的修改可能会影响很多方面。只有将需要大量交互的功能独立,从应用中拆解出来,这样可以使得应用之间耦合度大幅下降。
复用 一些公共的能力通过复用,大大提高了开发效率,避免了重复建设。同时使得数据和流程可以集中得以管理和优化
2.核心业务
点餐平台:负责客户点餐业务,为Android、IOS、H5提供统一服务接口
商家平台:负责基础数据配置,同时提供店员及交易结算服务
运营平台:负责商家管理及运营报表系统
3. 系统架构作用是什么? 分别用到的技术是什么?
spring alibab的核心组件Sentinel
阿里巴巴开源产品,把流量作为切入点,从流量控制,熔断降级,系统负载保护等多个维度保护服务的稳定性.
- Nacos
阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台.
- RocketMQ
Apache RocketMQ基于Java的高性能,高吞吐量的分布式消息和流计算平台.
- Dubbo
Apache Dubbo是一款高性能的Java RPC框架.
- Seata
阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案.
- Alibaba Cloud OSS
阿里云对象存储服务器(Object Storage Service,简称OSS),是阿里云提供的海量,安全,低成本,高可靠的云存储服务.
- Alibaba Cloud Schedulerx
阿里中间件团队开发的一款分布式调度产品,支持周期性的任务与固定时间点触发任务.
展现层:负载与用户的交互,分为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等组件
4. 项目模块及核心项目模块职责?
在餐掌柜项目中采用maven的分层构架,来维护整体的项目架构,各个模块相对独立,达到功能及组件的复用,从而减少开发成本的投入,避免反复造轮子的现象,整体的分层构建如下图所示:
各个功能模块的职责:
5. 能够说出项目数据库表结构设计及分库设计
项目按照功能模块领域垂直把数据库分为5个库
- 解决业务层面的耦合,业务清晰
- 能对不同业务的数据进行分级管理、维护、监控、扩展等
- 高并发场景下,垂直分库一定程度的提升IO、数据库连接数、降低单机硬件资源的瓶颈,关于==【垂直分库、水平分库、垂直分表、水平分表】==在后续的项目中我们会使用sharding-jdbc来实现
-
6. 什么是微服务? 微服务的特点是什么?
什么是微服务:
微服务是一种用于构建应用的架构方案。微服务架构有别于更为传统的单体式方案,可将应用拆分成多个核心功能。每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作(和出现故障)时不会相互影响。
四个概括: 小:微服务体积小,2 pizza 团队。
- 独:能够独立的部署和运行。
- 轻:使用轻量级的通信机制和架构。
- 松:为服务之间是松耦合的
微服务的特点:
- 单一职责:微服务中每一个服务都对应唯一的业务能力,做到单一职责
- 微:微服务的服务拆分粒度很小,例如一个用户管理就可以作为一个服务。每个服务虽小,但“五脏俱全”。
- 面向服务:面向服务是说每个服务都要对外暴露RPC协议Dubbo服务接口API。并不关心服务的技术实现,做到与平台和语言无关,也不限定用什么技术实现,只要提供Rest的接口即可。
- 自治:自治是说服务间互相独立,互不干扰
- 团队独立:每个服务都是一个独立的开发团队,人数不能过多。
- 技术独立:因为是面向服务,提供Rest接口,使用什么技术没有别人干涉
- 前后端分离:采用前后端分离开发,提供统一Rest接口,后端不用再为PC、移动段开发不同接口
- 数据库分离:每个服务都使用自己的数据源
部署独立,服务间虽然有调用,但要做到服务重启不影响其它服务。有利于持续集成和持续交付。每个服务都是独立的组件,可复用,可替换,降低耦合,易维护
7.能够描述docker-compose文件创建的容器及容器启动的依赖关系?
百度的:
Docker-Compose标准模板文件应该包含version、services、networks 三大部分,最关键的是services和networks两个部分。
image是指定服务的镜像名称或镜像ID。如果镜像在本地不存在,Compose将会尝试拉取镜像。
build
服务除了可以基于指定的镜像,还可以基于一份Dockerfile,在使用up启动时执行构建任务,构建标签是build,可以指定Dockerfile所在文件夹的路径。Compose将会利用Dockerfile自动构建镜像,然后使用镜像启动服务容器。
container_name: 容器名称。
8. 能够描述运营平台服务的调用链路?
上图为运营平台的调用链路,从中我们可用看到:用户发起请求访问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【基础服务】的服务提供方模块
9. 能够说出basicXXX 的基础类的作用?
BasicPojo:所有实体类公共字段的定义。
BasicVo : 所有VO对象公共字段的定义。
IBasicEnum: 枚举对象实现的基础方法定义。
10. 能够说出 Vo和POJO的作用范围?
1.图解
2. 对象转换工具(BeanConv)
作用:VO对象与POJO对象属成员变量拷贝工具
11. 能够理解异常枚举类的作用?
为了规范异常处理后返回的信息,我们为每一个模块定义了异常处理枚举: