欢迎光临散文网 会员登陆 & 注册

Livegoods房屋海选平台项目简介

2021-05-19 15:30 作者:编程大战  | 我要投稿

Java前后端分离微服务架构项目实战

一、认识前后端分离

    在传统的web应用开发中,大多数的程序员会将浏览器作为前后端的分界线。将浏览器中为用户进行页面展示的部分称之为前端,而将运行在服务器,为前端提供业务逻辑和数据准备的所有代码统称为后端。

    由于前后端分离这个概念相对来说刚出现不久,很多人都知道只闻其声,不见其形,所以可能会对它产生一些误解,误以为前后端分离只是一种web应用开发模式,只要在web应用的开发期进行了前后端开发工作的分工就是前后端分离。

    其实前后端分离并不只是开发模式,而是web应用的一种架构模式。在开发阶段,前后端工程师约定好数据交互接口,实现并行开发和测试;在运行阶段前后端分离模式需要对web应用进行分离部署,前后端之前使用HTTP或者其他协议进行交互请求。然而作为一种架构模式,我们在实施的过程中主要对以下四个方面来进行比较和重新认识。

前后端分离大概可以从四个方面来理解:

  • 交互形式

  • 代码组织方式

  • 开发模式

  • 数据接口规范流程

1、交互形式

在前后端分离架构中,后端只需要负责按照约定的数据格式向前端提供可调用的API服务即可。前后端之间通过HTTP请求进行交互,前段获取到数据后。进行页面的组装和渲染,最终返回给浏览器。

2、代码组织方式

在传统架构模式中,前后端代码存放于同一个代码库中,甚至是同一工程目录下。页面中还夹杂着后端代码。前后端工程师进行开发时,都必须把整个项目导入到开发工具中。

而前后端分离模式在代码组织形式上有以下两种:

  • 半分离
    前后端共用一个代码库,但是代码分别存放在两个工程中。后端不关心或很少关心前端元素的输出情况,前端不能独立进行开发和测试,项目中缺乏前后端 交互的测试用例。

  • 分离 
    前后端代码库分离,前端代码中有可以进行Mock测试(通过构造虚拟测试对 象以简化测试环境的方法)的伪后端,能支持前端的独立开发和测试。而后端 代码中除了功能实现外,还有着详细的测试用例,以保证API的可用性,降低 集成风险。

3、开发模式

    我们之前的架构属于传统的MVC架构,整体没有进行前后端分离,在项目的开发阶段,前端工程师负责编写HTML,完成前端的页面设计并套页面,然后再使用模板技术将写好的前端代码转换为Smarty脚本,同时内嵌一些后端提供的模板变量和一些逻辑操作。应用运行期,将全部代码进行打包,和后端代码部署到同一服务器上,同时会进行简单的动静态分离部署。

此时,应用的开发流程如下图所示。

    而在实现前后端分离架构之后,前端工程师只需要编写HTML、js、CSS等前端资源,然后通 过HTTP请求调用后端提供的服务即可。除了开发期的分离,在运行期前后端资源也会进行分离部署。

前后端分离之后,开发流程将如下图所示。

通过上面的两幅流程图,不难发现,在开发模式上,前后段分离不仅仅只是工程师的分工开发,更重要的意义在于实现了前后端的并行开发,简化了开发流程。

4、数据接口规范流程

在开发期间前后端共同商定好数据接口的交互形式和数据格式。然后实现前后端的并行开发,其中前端工程师再开发完成之后可以独自进行mock测试,而后端也可以使用接口测试平台进行接口自测,然后前后端一起进行功能联调并校验格式,最终进行自动化测试。

分离的四个好处

前后端分离模式和传统的web应用架构相比有很大的不同,到底分还是不分,这还真是个问题。

从目前应用软件开发的发展趋势来看,主要有两方面需要注意:

  1. 越来越注重用户体验,随着互联网的发展,开始多终端化。

  2. 大型应用架构模式正在向云化、微服务化发展。

我们主要通过前后端分离架构,为我们带来以下四个方面的提升:

  • 为优质产品打造精益团队
    通过将开发团队前后端分离化,让前后端工程师只需要专注于前端或后端的开发工作,是的前后端工程师实现自治,培养其独特的技术特性,然后构建出一个全栈式的精益开发团队。

  • 提升开发效率
    前后端分离以后,可以实现前后端代码的解耦,只要前后端沟通约定好应用所需接口以及接口参数,便可以开始并行开发,无需等待对方的开发工作结束。与此同时,即使需求发生变更,只要接口与数据格式不变,后端开发人员就不需要修改代码,只要前端进行变动即可。如此一来整个应用的开发效率必然会有质的提升。

  • 完美应对复杂多变的前端需求
    如果开发团队能完成前后端分离的转型,打造优秀的前后端团队,开发独立化,让开发人员做到专注专精,开发能力必然会有所提升,能够完美应对各种复杂多变的前端需求。

  • 增强代码可维护性
    前后端分离后,应用的代码不再是前后端混合,只有在运行期才会有调用依赖关系。    

应用代码将会变得整洁清晰,不论是代码阅读还是代码维护都会比以前轻松。

二、项目简介

    livegoods房屋海选平台,就是一个前后端分离架构项目。客户端包含移动客户端、PC客户端的微服务项目。项目包含了用户在线房屋租赁、房屋买卖、和房屋相关的商城功能。

    只要是前后端分离的项目,就一定有前端团队和后端团队。前端团队负责编写客户端页面,后端团队负责实现服务端操作。

使用的技术:

  • Spring Boot

  • Spring Cloud

  • Spring Data MongoDB

  • Spring Data Elasticsearch

  • SpringMVC

  • Spring Cache

  • Vue.js

  • ......

软件及工具:

  • IDEA 

  • FastDFS

  • Nginx

  • MongoDB

  • Elasticsearch

  • Redis

  • Docker

    上面罗列使用的技术、软件、工具都是针对需要实现接口中功能使用的,实际上还需要很多其他技术及软件。例如整个项目的后台就是没有要求进行实现。很多和电商项目重复的内容被调换掉了,没有在当前项目中进行完成。


项目总体结构

    整个项目使用微服务架构,并使用Spring Cloud作为微服务架构总体实现技术。拆分颗粒度为接口(接口文档一个接口),每个接口对应一个项目。

  • 使用Eureka作为注册中心

  • 使用Gateway作为网关

  • 使用Config作为分布式配置中心

  • 使用OpenFeign进行接口通信

  • 使用Hystrix进行服务容灾

  • 搜索使用Elasticsearch提升搜索效率

  • 缓存工具使用Redis

  • 缓存技术使用Spring Cache

  • 数据库使用MongoDB

  • 数据访问技术使用Spring Data

  • 分布式事务处理方案使用Tx-LCN

  • 图片上传下载使用FastDFS.

    MongoDB身为NoSQL数据库,又带有索引,本身读取性能就很高,此处可以使用redis作为缓存工具,也可以直接从MongoDB中取数据。在本次项目中使用redis作为缓存工具,Spring Cache作为缓存技术。

快来跟着视频一起做项目吧~


Livegoods房屋海选平台项目简介的评论 (共 条)

分享到微博请遵守国家法律