image.png
day01-项目概括及环境搭建 - 图3

1. 什么是SAAS平台?他的特点是什么?

SaaS平台:供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得Saas平台供应商提供的服务
image.png
image.png
总结:服务共享,数据隔离
互联网特性
SaaS软件行业知名产品NetSuite所提供的在线ERP、在线CRM等模块产品都是基于网络的,这样的优势在于不必投入任何硬件费用,也不用请专业的系统维护人员就能上网,有浏览器就可以进行ERP、CRM系统的使用。快速的实施、便捷的使用、低廉的价格都有赖于SaaS产品的互联网特性。

多重租赁(Multi-tenancy)特性
SaaS服务通常基于一套标准软件系统为成百上千的不同客户(又称为租户)提供服务。这要求SaaS服务能够支持不同租户之间数据和配置的隔离,从而保证每个租户数据的安全与隐私,以及用户对诸如界面、业务逻辑、数据结构等的个性化需求。由于SaaS同时支持多个租户,每个租户又有很多用户,这对支撑软件的基础设施平台的性能、稳定性和扩展性提出很大挑战。SaaS作为一种基于互联网的软件交付模式,优化软件大规模应用后的性能和运营成本是架构师的核心任务。

服务(Service)特性
SaaS使软件以互联网为载体的服务形式被客户使用,所以很多服务合约的签订、服务使用的计量、在线服务质量的保证和服务费用的收取等问题都必须加以考虑。而这些问题通常是传统软件没有考虑到的。 服务的使用必须通过 权限 控制

可扩展(Scalable)特性
可扩展性意味着最大限度地提高系统的并发性,更有效地使用系统资源。比如应用:优化资源锁的持久性,使用无状态的进程,使用资源池来共享线和数据库连接等关键资源,缓存参考数据,为大型数据库分区。

2. 餐掌柜各个平台的作用是什么?

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

image.png

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

1.通用服务有哪些:

通用非业务系统的中台系统:权限、支付、图片、数字自动、日志中心、报表等
image.png
提供SaaS化的服务建立通用服务业务为了业务的敏捷,创新!有下面三个特征:

  • 敏捷 业务需求变化快,变更以天甚至更短的频率计算,一个单体大型应用,庞大的开发团队对单一应用的变更变得越来越困难。将大应用变为多个小的应用组合,才能适应外部的快速变化,实现业务的敏捷。
  • 解耦 随着业务的发展,业务系统之间的交互通常会变得越来越复杂。一个功能的修改可能会影响很多方面。只有将需要大量交互的功能独立,从应用中拆解出来,这样可以使得应用之间耦合度大幅下降。
  • 复用 一些公共的能力通过复用,大大提高了开发效率,避免了重复建设。同时使得数据和流程可以集中得以管理和优化

    2.核心业务

    点餐平台:负责客户点餐业务,为Android、IOS、H5提供统一服务接口
    商家平台:负责基础数据配置,同时提供店员及交易结算服务
    运营平台:负责商家管理及运营报表系统
    image.png

    3. 系统架构作用是什么? 分别用到的技术是什么?

    image.png
    spring alibab的核心组件
    image.png

  • 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的分层构架,来维护整体的项目架构,各个模块相对独立,达到功能及组件的复用,从而减少开发成本的投入,避免反复造轮子的现象,整体的分层构建如下图所示:
image.png
各个功能模块的职责:
image.png

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: 容器名称。
    day01-项目概括及环境搭建 - 图13
    day01-项目概括及环境搭建 - 图14

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

    day01-项目概括及环境搭建 - 图15
    上图为运营平台的调用链路,从中我们可用看到:

  • 用户发起请求访问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.图解

day01-项目概括及环境搭建 - 图16 2. 对象转换工具(BeanConv)

作用:VO对象与POJO对象属成员变量拷贝工具

11. 能够理解异常枚举类的作用?

为了规范异常处理后返回的信息,我们为每一个模块定义了异常处理枚举:

作用:各模块的异常枚举,给用户友好提示


12. 能够掌握业务开发模块间的调用链路(生产者、消费者的接口的定义)

image.png