前后端分离微服务架构如何设计
前端
前端开发人员专注业务的页面呈现,非常注重用户体验度,也是与各种角色打交道最多的。
比如:
一般前端工作包括六个部分:
后端
如果前后端职责划分很清楚的话,后端更多开发工作在于业务接口设计、业务逻辑处理以及数据的持久化存储,并提供详细的接口设计文档给前端开发人员使用。
一般后端工作包括五个部分:
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 (大的系统组织总是比小系统更倾向于分解)
康威定律说明以下几点
四、部署及监控运维
前后端分离后,拆分的服务会带来线上部署以及如何监控运维的复杂性。
总体来说,前后分离所带来的好处还是更明显的。一个成熟的前后端分离的团队,文档化约定,前后端职责分离、接口约定都是做得比较好的
前后端分离必须用vue吗
首先:软件系统架构的前后端分离更多是在近几年伴随互联网的盛行为提高前端与后端交互的响应速率,提升用户的体验进行衍生出了前后端分离架构。如:Vue、NodeJS与微服务架构结合。)webpack设置proxy,这个通过webpack文档或GOOGLE一下可以解决。微信前端,原来是jsp,现在要前后端分离。单纯的html5还是vue呢...
网站架构有哪些
3. 分布式架构 分布式架构是一种将网站的服务和功能分散到多个服务器或数据中心上的架构模式。这种架构可以提高网站的可用性和性能,因为请求可以被分散到多个服务器上处理。分布式架构还包括负载均衡技术,用于确保服务器的均衡负载,避免单点故障。4. 微服务架构 微服务架构是一种将应用程序拆分成一系列小型...
HttpClient实战:单线程和多线程连接池实例
在前后端分离和微服务架构中,RESTful风格API的流行促使系统间服务调用多采用HTTP或HTTPS。鉴于HTTP1.1支持持久连接,HTTP连接池技术因此被广泛应用,以管理和维护连接。HTTP连接池的优势在于能有效减少TCP连接的建立与销毁,提高效率。本文以最新HttpClient4.5.3为例,介绍其连接池管理的核心类PoolingHttpClient...
前端bfe是什么意思?
保证了网站稳定性和可靠性。前端BFE可以应用于各种大流量网站,特别是电子商务、社交媒体、新闻门户等需要处理大量请求和并发的网站。此外,在前后端分离和微服务化架构中也可以采用BFE进行网关操作。还有一些企业也可以将BFE作为前端边缘服务,来集成企业内部业务,提高企业内部的开发效率和管理效果。
微应用和微服务有什么区别?
使得整个系统的可扩展性和灵活性得到了显著提升。总结来说,微应用是前端设计中的精巧组织方式,它依赖于微服务架构的灵活性和独立性,构建出分布式且易于扩展的用户界面。微服务则是后端的基石,通过拆分和自治的特性,支持微应用构建功能丰富的交互体验。两者共同塑造出高效、灵活和可维护的现代软件生态。
GitHub 近两万 Star,无需编码,可一键生成前后端代码,开源项目
JeecgBoot 是一款基于代码生成器的 低代码 开发平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,JWT,支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发!JeecgBoot 提供了一系列 低代码模块 ,实现在线开发 真正的零代码 :Online表单...
微服务权限设计
此种方案下网关要做的事也将更加专注,只做请求的转发即可,后端各个微服务也只需专注于自己的业务即可。 此种方案,在我看来是比较推荐的方案,并且应该能满足微服务架构下大多数系统的权限处理需求。当然缺点是对用户服务的高性能、高可靠以及可扩展提出了更高的要求。除了上述三种鉴权方式,微服务架构下可能还有其他...
微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计
微服务之间存在错综复杂的依赖关系,一次请求可能会依赖多个后端服务,在实际生产中这些服务可能会产生故障或者延迟,在一个高流量的系统中,一旦某个服务产生延迟,可能会在短时间内耗尽系统资源,将整个系统拖垮,因此一个服务如果不能对其故障进行隔离和容错,这本身就是灾难性的。我们的微服务架构中使用了Hystrix组件来进行容...
paas平台、saas平台争奇斗艳?PaaS化的低代码平台才是最终趋势!
MyApps平台采用私有化部署模式,为数据安全提供保护。用户可选择本地部署或私有云部署,实现数据的物理隔离及访问灵活性。平台采用业内领先的SpringBoot微服务架构,支持SpringCloud模式,具备快速开发、灵活拓展、无缝集成及高性能应用能力。前端采用JQ和VUE架构,实现前后端分离,提升系统升级的便捷性及系统的...
oa办公系统都有何优缺点?
平台的业内领先技术架构,如SpringBoot微服务架构和前后端分离设计,确保了系统的高性能和易扩展性。自主研发的可视化引擎更是支持1200+功能点,适应不同行业的多样化需求,体现了自主研发的优势。面对国产化趋势,MyApps平台兼容国产软硬件,满足企业的国产化转型需求。它还具备强大的数据源集成能力,无缝连接...
大季亨乐尔: 首先,先分清楚前后端的工作前端的工作:实现整一个前端页面以及交互逻辑,以及利用ajax与nodejs服务器(中间层)交互后端的工作:提供API接口,利用redis来管理session,与数据库交互 我们项目的整一个架构如下:接下来进入正题,...
应县18036207913: 微服务架构下,进行前后端分离,前端怎么写 - ?
大季亨乐尔: 分离后的前端,不再是一个简单的HTML文件,已经是一个独立的应用系统.除了要考虑页面的数据渲染展示,还要用工程化的思想来考虑前端的架构,前后端的交互和数据安全等事情.RESTful接口交互 前后端分离之后,更多的是采用RESTful...
应县18036207913: 前后端分离架构到底怎么该搭建 - ?
大季亨乐尔: tokenbasedauthentication后端还是要有session的,只不过是可能需要自己实现,如果通过token进行身份标识的话;用cookie也可以;
应县18036207913: 如何在开发时部署和运行前后端分离的JavaWe - ?
大季亨乐尔: 在开发中大型的JavaEE项目时,前后端分离的框架逐渐成为业界的主流,传统的单机部署前后端在同一个项目中的工程项目越来越少.这类JavaWeb项目的后端通常都采用微服务的架构,后端会被分解为诸多个小项目,然后使用dubbo+...
应县18036207913: php前后端分离 前端用什么框架 - ?
大季亨乐尔: 分离的话看你们是以前端为主还是后端为主了(基本看公司人员技术分配而定) 如果是以后台为主的话基本上前端只需要获取数据做展示做一些基本的逻辑就ok了 使用的技术大多都是ajax es6的promise虽说也不错但总归还在适应阶段 还有各种新玩意就不说了 如果是以前台为主的话你需要根据架构来做具体的业务 实际上数据的调用都是一样 多的是逻辑前端需要比较严谨 代码组件化 什么router redux 一堆东西
应县18036207913: 如何使用webpack,proxy实现前后端分离,并且方便后期前后端联调 - ?
大季亨乐尔: 分离的痛点是分离后,接口提供不及时,文档不完善,模拟数据不方便等.说一下我们的解决办法:1)webpack设置proxy,这个通过webpack文档或GOOGLE一下可以解决.2)第二步就是需要在后端提供接口及数据和接口文档,而因为前后端...
应县18036207913: 前后端如何做到分离开发,最后再整合部署 - ?
大季亨乐尔: 由于后端提供的接口方式可能多种多样,同时开发人员在编写Node端代码访问这些接口的方式也有可能多种多样.如果我们在接口访问方式及使用上不做统一架构处理,则会带来以下一些问题:1. 每一个开发人员使用各自的代码风格编写接口...
应县18036207913: 如何通过nodejs来实现php的前后端分离 - ?
大季亨乐尔: 如果你是一个大公司,那么可以用nodejs做一个中间层,很多大公司这么干.可以用Express或者其他的.好处是可以保证不改变你的PHP的API接口还有事件驱动,坏处是你多一层.如果是一个小公司,再考虑下吧.大前端不一定需要node,直接上个前端的framework不行吗?