前后端分离微服务架构如何设计
发布时间:2025-05-18 10:45:30 发布人:远客网络
一、前后端分离微服务架构如何设计
前端开发人员专注业务的页面呈现,非常注重用户体验度,也是与各种角色打交道最多的。
如果前后端职责划分很清楚的话,后端更多开发工作在于业务接口设计、业务逻辑处理以及数据的持久化存储,并提供详细的接口设计文档给前端开发人员使用。
2、业务 API接口开发:根据根据需求文档进行业务接口开发
4、接口对接:与前端开发人员接口对接
5、前后端联调测试:包括页面展示以及接口数据
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(大的系统组织总是比小系统更倾向于分解)
前后端分离后,拆分的服务会带来线上部署以及如何监控运维的复杂性。
总体来说,前后分离所带来的好处还是更明显的。一个成熟的前后端分离的团队,文档化约定,前后端职责分离、接口约定都是做得比较好的
二、目前javaweb主流的开发框架有哪些
1、Java Web开发的用到的框架之多简直令人发指,而且因为版本的更新换代导致的问题也是层出不穷。然而这也是Web技术不断演化的结果,要么选择接受,要么引领节奏。
2、原来常用的Javaweb框架是SSH(Struts+ Spring+ Hibernate)后来随着Spring的强大以及Struts漏洞上的等等问题,演变成为了Spring+ SpringMVC+ Hibernate/Mybatis。互联网这块比较常见的是Mybatis。再后来也慢慢演变为了Springboot+ Mybatis。
3、Struts2以WebWork优秀的设计思想为核心,吸收了 Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架 Struts2以WebWork优秀的设计思想为核心,吸收了 Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架。
4、Spring是一个强大而又“轻量级”的Java开发框架,之所以打引号是因为感觉并不是那么轻量。Spring的主要目的在于简化Java应用开发,以配置方式代替硬编码方式的编程,模块解耦,其架构包括了数据访问、远程通信、AOP、核心容器等部分。
5、数据持久化框架其实也有很多,需要掌握的不仅是Hibernate,只是因为Hibernate在以前的企业级应用中用的比较多而已,另外MyBatis也占有相当重要的份额。Hibernate是一个全自动的持久化框架,并不是那么方便,所以很多开发者更倾向于使用MyBatis,淘宝就是这样。
6、Spring MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。
7、MyBatis是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的 XML或注解用于配置和原始映射,将接口和 Java的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
8、springboot框架,被称作一栈式解决方案。比较轻量,也是当前微服务下的趋势;springboot本身就是构建与spring之上,各种思想和特性无需多说,去掉了spring繁琐的配置,简化了原有spring开发的流程,提供了各种实用的特性如metric,actuctor等等;重要的是springboot附带了整个springcloud生态。两个框架对你解决大,中,小项目都没任何问题。
9、在眼花缭乱的流行Java web框架中挑选出适合自己的框架可不是一项简单的任务,因为每个公司在创建自己的Web应用程序和移动应用程序时都有自己坚持的理念,所以要根据自己当前工作的需要掌握相应的框架。
三、微服务和前端的关系
微服务是后端架构,前端如vue框架使用微服务和其他语言类似,分为前端团队和后端开发相互开发对接即可。
推荐一个开源项目。采用vue3作为前端框架。
MateCloud基于Spring Cloud Alibaba推出的微服务快速开发平台,集成Nacos 2.0.3、Sentinel 1.8.2、Jetcache等诸多中间件。前端采用Vue3.2.4、Vite 2.5.1、Ant-Design-Vue 2.2.6、TypeScript的大型中后台解决方案。其中前端4.0.8-M2版本正在发布,实现了系统管理的基础功能,主要包括菜单管理、用户管理、角色管理、部门管理、日志管理、客户端管理等功能。正持续更新中,欢迎体验。