【架构】酒店预订应用程序的系统设计架构

背景

       我们需要一个酒店预订应用程序,满足用户预定功能以及一个酒店管理后台;

目标

        为用户提供了从酒店列表---->预订------>付款一套完整的流程;

功能模块拆解

  1.   酒店管理服务 hotel management service
  2.   顾客服务之搜索--customer service search   
  3.   顾客服务之预定--customer service booking
  4.   查询预定服务 view booking service  

酒店管理服务 Hotel Management service

       管理服务将提供给酒店经理/业主使用。经理可以管理酒店的相关信息。管理员有一个单独的门户来访问和更新数据。

       酒店经理使用管理应用程序触发一个 API 时,初始请求就被发送到负载平衡器LB,然后负载平衡器将请求分发到所需的服务器进行处理。酒店服务集群有多个服务器,其中包含与酒店服务相关的 API 的服务。 

       Hotel Service 酒店服务与 Hotel DB 集群进行交互,后者遵循主从架构,以减少数据库中的负载。数据库集群实现,我们可以创建一个或多个主数据库的副本,称为从数据库。主数据库用于写操作,从数据库只用于读操作。每当对主数据库执行写操作时,它都会将数据同步到从数据库。

       每当数据库 API 中的任何数据被更新时,就将数据发送到 CDN (内容分布网络)和消息队列系统(如 Kafka、 RabbitMQ)以进行进一步处理。CDN 是一组在地理上分布的服务器,它们协同工作以提供 Internet 内容的快速传输。

顾客服务---搜索 预定 Customer Service For Search And Booking

       该服务提供顾客搜索和预订酒店的能力。客户有一个单独的门户来访问和处理数据。

       CDN 应用程序向客户显示内容,如附近的酒店、推荐、优惠等。酒店数据在消息传递队列系统中发送以处理它。这里我们有一个消息传递队列使用者,它从队列中获取数据并存储数据到ES服务中。客户应用程序请求 API,然后负载均衡LB重定向和分发请求到各自的服务,以处理请求。这里两个服务,一个是搜索酒店和预订服务,预订酒店和预订服务也将与第三方服务的支付服务Payment Service交互。

      搜索服务必须从ES中获取数据。Elasticsearch 是一个最适合其搜索引擎功能的 NoSQL 数据库。预订服务与 Redis 和预订数据库集群通信。Redis 是一个缓存系统,它存储临时数据,这样数据就不需要查询数据库,最终可以减少数据库中的负载Load,同时也减少了 API 的响应时间。在数据库中所做的任何更改都将发送到消息传递队列。然后消费者将从队列中获取数据并将其放到 Casandra。Casandra (Apache Cassandra)是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于改善电子邮件系统的搜索性能的简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身(NoSQL 数据库,擅长处理大量数据)。

查询预定服务 View Booking Service  

 

      该服务会把当前和旧的预订信息都显示给用户。酒店经理也会访问该服务,如导出历史订单等;

      Customer/Manager 应用程序将请求发送到负载均衡器,并将请求分发到预订管理服务器。然后通过 Redis 和 Cassandra 对数据进行服务请求。它通过 Redis 请求最近的数据,因为它是一个缓存服务器。这可以减少应用程序端的加载时间。Apache Streaming 服务从消息队列获取数据,并将其存储在 Hadoop 中,可用于多种目的的 BigData 分析。像业务分析,寻找潜在客户,受众分类等。

最后还有一个通知模块:

      消费kafka的消息并向消费者发送通知。这可以发送给客户/经理,比如每当客户预订酒店时,酒店通知就会发送给经理,或者如果有新的报价,就会通知客户。

汇总后的架构图

参考:

Apache Spark是一个开源集群运算框架,最初是由加州大学柏克莱分校AMPLab所开发。相对于HadoopMapReduce会在执行完工作后将中介资料存放到磁盘中,Spark使用了存储器内运算技术,能在资料尚未写入硬盘时即在存储器内分析运算。Spark在存储器内执行程序的运算速度能做到比Hadoop MapReduce的运算速度快上100倍,即便是执行程序于硬盘时,Spark也能快上10倍速度。[1]Spark允许用户将资料加载至集群存储器,并多次对其进行查询,非常适合用于机器学习算法

Apache Hadoop是一款支持数据密集型分布式应用程序并以Apache 2.0许可协议发布的开源软件框架,有助于使用许多计算机组成的网络来解决数据、计算密集型的问题。基于MapReduce计算模型,它为大数据分布式存储与处理提供了一个软件框架。所有的Hadoop模块都有一个基本假设,即硬件故障是常见情况,应该由框架自动处理[3]

Apache Hadoop的核心模块分为存储和计算模块,前者被称为Hadoop分布式文件系统(HDFS),后者即MapReduce计算模型。Hadoop框架先将文件分成数据块并分布式地存储在集群的计算节点中,接着将负责计算任务的代码传送给各节点,让其能够并行地处理数据。这种方法有效利用了数据局部性,令各节点分别处理其能够访问的数据。与传统的超级计算机架构相比,这使得数据集的处理速度更快、效率更高[4][5]

Apache Hadoop框架由以下基本模块构成:

  • Hadoop Common – 包含了其他Hadoop 模块所需的库和实用程序;
  • Hadoop Distributed File System (HDFS) – 一种将数据存储在集群中多个节点中的分布式文件系统,能够提供很高的带宽;
  • Hadoop YARN – (于2012年引入) 一个负责管理集群中计算资源,并实现用户程序调度的平台[6][7]
  • Hadoop MapReduce – 用于大规模数据处理的MapReduce计算模型实现;
  • Hadoop Ozone – (于2020年引入) Hadoop的对象存储。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自驱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值