前后台,为什么要分离.

在快速迭代的业务中,用户量不断上涨,访问量并发越来越大,就会遇到如下的系统问题:

  • 用户访问页面越来越慢
  • 系统性能下降,数据库扛不住,连接数经常打满,最终数据库挂掉,重启之后有快速挂掉.
  • 改了一个小地方,另外一个看似不相干的地方却挂掉了,严重耦合

遇到上述的问题我们经常使用"前后台分离"的架构优化方案

在业务早期,最常见的场景

虚拟一个类似于“AJK”租房买房的业务场景,这个业务的数据有两大来源:

  • 用户发布的数据
  • 爬虫抓取来的数据

这个业务对应的系统有两类使用者:

  • 普通用户,浏览与发布数据,俗称“前台用户”
  • 后台用户,运营与管理数据,俗称“后台用户”
    在这里插入图片描述
    在创业公司,为了快速迭代,系统架构如上:
  • web层:前台web,后台web
  • 任务层:抓取数据
  • 数据层:存储数据

上述的框架方案有哪些问题?
系统两类数据源,一类是用户发布的数据,一类是爬虫抓取的数据,两类数据的特点不一样:

  • 自有数据相对结构化,变化少
  • 抓取数据源很多,数据结构变化快

如果将两者数据耦合在一个数据库中,经常出现的情况有:

  • 抓取数据结构变化
  • 需要修改数据结构
  • 影响前台用户展现
  • 经常被动修改前台用户展现逻辑,配合抓取升级

所以我们可以从中察觉到,耦合的根部原因在于 数据层的耦合

优化的方案如下:
前台展示数据,后台抓取数据 分离,解耦.
在这里插入图片描述
上述的方案

  • 前台展现的稳定数据,数据库独立
  • 后台抓取的多变数据,数据库独立
  • 任务层新增一个异步转换的任务

此方案的优点(较于业务早期方案)

  • 频繁变化的抓取程序,以及抓取的异构数据存储,解耦
  • 前台数据与web都不需要被动配合升级
  • 即使出现问题,前台用户的发布与展现都不影响

另一个方案就是微服务,数据库为服务私有,不存在数据耦合,但是真的就没有问题吗?
上面解决了不同数据源写入的耦合问题,再来看看前台与后台用户访问的耦合问题。
用户侧,前台访问的特点是:

  • 访问模式有限
  • 访问量较大,DAU不达到百万都不好意思说是互联网C端产品
  • 对访问时延敏感,用户如果访问慢,立马就流失了
  • 对服务可用性要求高,系统经常用不了,用户还会再来么
  • 对数据一致性的要求高,关乎用户体验的事情就是大事

运营侧,后台访问的特点是:

  • 访问模式多种多样,运营销售各种奇形怪状的需求,大批量分页的,模糊搜索的
  • 用户量小,访问量小
  • 访问延时不这么敏感,大批量分页,几十秒能出结果,也能接受
  • 对可用性能容忍,系统挂了,10分钟之内重启能回复,也能接受
  • 对一致性的要求始终,晚个30秒的数据,也能接受
    在这里插入图片描述
    前台和后台的模式与访问需求都不一样,但是,如果前台与后台混用同一套服务结构化数据,会导致:
  • 后台的低性能访问,对前台用户产生巨大的影响,本质还是耦合
    在这里插入图片描述
  • 随着数据量变大,为了保证前台用户的时延,质量,做一些类似与分库分表的升级,数据库一旦变化,可能很多后台的需求难以满足

此时的耦合的根本原因,是服务层的耦合。

服务层高耦合的解决方案:
优化思路:冗余数据,前台与后台服务与数据分离,解耦。
在这里插入图片描述
如上图所示:

  • 前台和后台独立服务与数据,解耦
  • 如果出现问题,相互不影响
    在这里插入图片描述
  • 通过不同的技术方案,在不同容忍度,业务对系统要求不同的情况下,可以使用不同的技术栈来满足各自的需求,如上图,后台使用ES或者hive在进行数据存储,用以满足“售各种奇形怪状的,大批量分页的,查询需求”

小结

  • 创业早期,可能存在数据耦合,需要进行前台与后台分离,数据解耦
  • 微服务架构,可能存在服务耦合,需要进行前台与后台分离,服务解耦

前台与后台分离”的架构设计方案,是最常见的解耦与优化方案之一。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Studio是一款为安卓应用开发提供全套解决方案的IDE。当下,越来越多的应用程序集成了后台分离的技术,这种技术能够充分利用网络的优势分散负载,提高资源利用率,保证用户体验同时也能提高性能,使得开发者能够更加专注功能实现和UI设计。那么如何利用Android Studio实现后台分离的选课系统呢? 首先,在后台服务器中实现选课系统的核心功能,包括选课、退课、查看成绩等等,同时提供API供移动客户端使用。其次,在Android Studio中,应该采用MVVM架构分层,将Activity、Fragment和ViewModel分别放在不同的层次。这样,可以实现Activity、Fragment和ViewModel之间的解耦,使得代码更加清晰。 在具体实现方面,可以利用Retrofit + RxJava来实现API接口的访问和处理,它们的组合可以快速实现对后台数据的异步请求和响应处理。同时,对于UI界面的设计,可以利用Google官方的Material Design组件库,以便从美感和视觉交互层面来提高用户体验。 其次,为了保证系统的安全性,需要采用OAuth2.0协议对客户端的API请求进行授权,与此同时,后台服务器还应该采用安全认证技术,例如HTTPS来保证数据的安全性。 总之,利用Android Studio实现后台分离的选课系统,需考虑多方面的因素,例如架构、API访问和安全性等等。如果参考上述的实现方法,开发者可以通过Android Studio轻松地实现这一目标。 ### 回答2: Android Studio是一个非常流行的开发工具,可以帮助开发者很方便地实现各种应用程序。而对于学生选课系统来说,我们可以借助Android Studio实现后台分离的架构。 在实现后台分离的选课系统中,我们需要通过Android Studio构建Web API服务器,让端和后端能够通过API接口进行数据交互。在开发的过程中,我们需要设计API接口,以及后端服务,分别负责处理数据请求和响应,并将接口和服务组织成一个Web API服务器。 在端开发中,我们使用React Native来实现UI界面和用户交互,React Native是一个流行的跨平台框架,它可以通过JavaScript语言编写UI代码,并把这些代码转化为原生代码来实现界面展示。在这种情况下,我们需要使用相关的React Native模块和工具来实现选课系统的端部分。 最后,我们可以将后台组合起来,让API接口能够将数据传递给端,实现选课系统的功能。在这个过程中,我们需要注意接口和数据的安全性,同时也需要考虑系统的性能和扩展性。 总之,我们可以通过Android Studio将后台分离的选课系统开发出来,这个过程需要我们对相关技术有一定的了解和掌握,并且需要注重代码的可维护性和性能。当然,这个选课系统只是一个简单的例子,实际上,我们可以通过Android Studio实现更加复杂和功能强大的应用程序。 ### 回答3: 在Android Studio中实现后台分离的选课系统,需要分别开发端和后端。端主要面向用户,包括用户的课程查询、选课、退课等操作,后端则负责处理端传递过来的数据并且进行数据存储、业务逻辑处理等操作。 端开发需要优先确定好UI设计,保证用户体验。采用现有的设计模板,可以提高开发效率。Android Studio提供了各种UI组件,开发者可以根据需求自由组合,展现出富有交互性、美观合理的UI。 在后端开发中,首先需要搭建数据库环境,设计好数据库表结构。利用MySQL或MySQLite等数据库方便进行数据的存储和管理。后端开发需要使用Web框架如Spring等,通过MVC模型实现数据的处理和返回,方便维护和升级。后端还需要实现一些必要的安全性、架构性、高可用性等功能,确保系统稳定性和数据的安全性。 在后端交互方面,我们可以采用RESTful API或WebSocket等技术实现数据传输和通讯。Android Studio为了提高开发效率,内置很多便携的第三方库如Simple HTTP Library、Volley等,这些库可以帮助我们实现后端数据传输和通讯等功能。 综合考虑上述各个方面,我们可以在Android Studio中实现后台分离的选课系统。通过后端分离,可以使代码层面实现模块化,从而增强系统的可维护性、灵活性和扩展性,同时也分别满足了用户和开发者的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值