前后端分离微服务架构如何设计

author author     2023-03-17     501

关键词:

参考技术A

前端

前端开发人员专注业务的页面呈现,非常注重用户体验度,也是与各种角色打交道最多的。

比如:

一般前端工作包括六个部分:

后端

如果前后端职责划分很清楚的话,后端更多开发工作在于业务接口设计、业务逻辑处理以及数据的持久化存储,并提供详细的接口设计文档给前端开发人员使用。

一般后端工作包括五个部分:

1、与产品经理对接需求

2、业务 API 接口开发:根据根据需求文档进行业务接口开发

4、接口对接:与前端开发人员接口对接

5、前后端联调测试:包括页面展示以及接口数据

6、bug修复

前端开发技术栈

h5 、 css 、 nodejs / vue / angular / react 、 webpack 、 hbuilder / vscode 等

后端开发技术栈

SpringCloud / Springboot 、 SpringMVC 、 ORM 框架、数据库、缓存框架( Redis , Codis , Memcached 等),大数据框架( Hadoop / Spark / hive / Hbase / Storm / ES / Kafka )等等

技术选型

最好选择成熟稳定,易上手、开发效率高的技术,因为实际项目开发时间是有限的,开发人员没有多少精力放在学习和深度研究技术上。

数据格式

后端开发提供接口设计文档,详细写明每个接口的请求地址、请求参数、响应参数等等;一般采用 REST 风格以 JSON 格式提供数据。

接口设计

一个接口设计的好坏,直接影响到前后端的一些沟通协调问题。

依笔者的经验来看,如果后端接口不稳定,会导致前端开发人员反复修改页面数据呈现。常常出现后端开发说这是前端问题,前端开发说是后端问题,来回扯皮,沟通效率低下。

接口容量问题

一个接口的业务容量大小,往往代表前后端工作量的大小。

如果一个接口的业务容量太小,前端需要分阶段处理的事情就多,尤其是对多个接口 Ajax 异步处理;

如果一个接口的业务容量太大,那么业务耦合性高,万一需求变更,后端程序改动大,不利于程序的扩展。

一、前后端分离的思想要转变

不能老是按照传统WEB( js/h5/css/ 后端代码放在一个工程)开发思维去看待前后端分离

二、沟通成本问题

以前传统 WEB 开发,开发人员从需求到设计到开发基本上是一个人。

而前后端分离后,前端只负责页面呈现,后端更注重业务逻辑处理以及数据的持久化,双发都有自己的侧重点,工作量上有私心。

三、组织结构问题

康威定律

第一定律: Communication dictates design (组织沟通方式会通过系统设计表达出来)

第二定律: There is never enough time to do something right, but there is always enough time to do it over (时间再多一件事情也不可能做得美,但总有时间做完一件事情)

第三定律 : There is a homomorphism from the linear graph of a system to the linear graph of its design organization (线型系统和线型组织架构间有潜在的异质同态特性)

第四定律: The structures of large systems tend to disintegrate during development, qualitatively more so than with small systems (大的系统组织总是比小系统更倾向于分解)

康威定律说明以下几点

四、部署及监控运维

前后端分离后,拆分的服务会带来线上部署以及如何监控运维的复杂性。

总体来说,前后分离所带来的好处还是更明显的。一个成熟的前后端分离的团队,文档化约定,前后端职责分离、接口约定都是做得比较好的

前后端要不要分离以及如何做

前后端分离要不要搞?这个我觉得按照康威定律办就好了,前后端如果是两拨人,不要多想一定要分离,如果是一拨人,确定前后端是否要分离需要算账,收益是它会强制我们按照服务的理念指导系统设计,将来的微服务也就顺理成章,代... 查看详情

前后端分离原理

前言  前后端分离已成为互联网项目开发的业界标准使用方式,通过Nginx+Tomcat的方式(也可以中间加一个Node.js)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种... 查看详情

关于web实现前后端分离,前后端解耦

 一、前言”前后端分离“已经成为互联网项目开发的业界标杆,通过Tomcat+Ngnix(也可以中间有个Node.js),有效地进行解耦。并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客... 查看详情

关于前后端分离与不分离

...要负责程序设计架构思想,管理数据库等。   前后端分离和微服务一样,渐渐地影响了新的大型系统的架构。微服务和前后端分离要解决是类似的问题,解耦——可以解耦复杂的业务逻辑,解耦架构。可要是说相像吧... 查看详情

前后端分离实践

前后端分离并不是什么新鲜事,到处都是前后端分离的实践。然而一些历史项目在从一体化Web设计转向前后端分离的架构时,仍然不可避免的会遇到各种各样的问题。由于层出不穷的问题,甚至会有团队质疑,一体化好好的,为... 查看详情

前后端分离与不分离

前后端不分离   在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。    这种应用模式比较适合纯网... 查看详情

带头大哥777:为什么要前后端分离?

 一、前戏前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多... 查看详情

你是如何看待前后端分离的?

首先看看前后端分离是什么?  “前端”通常指的是,相对来说更接近用户的一端,例如:APP,网页、桌面程序等,在现实开发中大部分情况可以理解为“客户端”;  “后端”相对来说就更泛化了,可以理解为是为前端提... 查看详情

[刘阳java]_为什么要前后端分离

前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例... 查看详情

如何在开发时部署和运行前后端分离的javawe

在开发中大型的JavaEE项目时,前后端分离的框架逐渐成为业界的主流,传统的单机部署前后端在同一个项目中的工程项目越来越少。这类JavaWeb项目的后端通常都采用微服务的架构,后端会被分解为诸多个小项目,然后使用dubbo+zo... 查看详情

基于springcloudalibaba前后端分离架构分布式微服务高并发架构数据平台化(中台)思想+多租户saas企业开发架构技术选型和设计方案

 基于SpringCloudAlibaba分布式微服务高并发数据平台化(中台)思想+多租户saas设计的企业开发架构,支持源码二次开发、支持其他业务系统集成、集中式应用权限管理、支持拓展其他任意子项目。一、架构技术选型二、架构全... 查看详情

前后端分离springboot+springcloudalibaba+vue一||项目架构简介

1、概述??本项目是一个基于SpringBoot2.x+vue2.X的分布式微服务架构项目,项目会不断进行迭代更新。该项目后端利用SpringCloudAlibaba微服务架构解决方案进行重构。项目前端利用vue框架开发,页面展示主要为pc端和手机端(微信公众... 查看详情

springboot2.x开发案例之前后端分离鉴权

前言阅读本文需要一定的前后端开发基础,前后端分离已成为互联网项目开发的业界标准使用方式,通过Nginx代理+Tomcat的方式有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服... 查看详情

企业管理系统前后端分离架构设计系列一权限模型篇(代码片段)

原文:企业管理系统前后端分离架构设计系列一权限模型篇前段时间分别用vue和react写了两个后台管理系统的模板vue-quasar-admin和3YAdmin。两个项目中都实现了基于RBAC的权限控制。因为本职工作是后端开发,比较清楚权限控制一个管... 查看详情

javaweb项目放弃jsp?为什么要前后端解耦?为什么要前后端分离?

前戏前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端... 查看详情

企业快速开发平台springcloud+springboot+mybatis+elementui实现前后端分离

 鸿鹄云架构【系统管理平台】采用服务化的组件开发模式,可实现复杂的业务功能。是一个大型企业、分布式、微服务、云架构的JavaEE体系快速研发平台使用当前最流行最先进的开源技术实现服务组件化及管理,真正为... 查看详情

springcloud+springboot+mybatis+elementui实现前后端分离之企业快速开发平台业务服务

  鸿鹄云架构【系统管理平台】采用服务化的组件开发模式,可实现复杂的业务功能。是一个大型企业、分布式、微服务、云架构的JavaEE体系快速研发平台使用当前最流行最先进的开源技术实现服务组件化及管理,真正... 查看详情

面试官问:前后端分离项目,有什么优缺点?(代码片段)

1、背景前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多... 查看详情