前端微服务框架,常用的java开发框架有哪些
前端微服务框架,常用的java开发框架有哪些详细介绍
本文目录一览: 微服务架构有哪些框架
什么是微服务微服务并没有一个官方的定义,可以理解为一种架构风格,将一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。以往的应用程序开发中,应用程序都是单体型,在开发和部署上比较方便,但是随着业务的不断增加,开发迭代和性能瓶颈等问题都会增加开发难度。微服务正是为解决这一设计问题而应运而生,微服务在将复杂系统切分为数十乃至上百个小服务的同时,这些小服务带来了语言和框架选择上的灵活性,缩短应用开发上线时间,可根据不同的工作负载和资源要求对服务进行独立缩扩容等优势。微服务框架的技术点微服务被拆分为多个微服务进程后,进程内的方法调用变成了进程间的远程调用,这种变化会带来分布式系统的一系列问题,比如:服务的注册与发现身份验证与授权服务的伸缩控制反向代理与负载均衡路由控制流量切换日志管理性能度量、监控与调优分布式跟踪过载保护服务降级服务部署与版本升级策略支持错误处理从上述微服务存在的技术点可以得到微服务基础架构的如下关键点:
微服务技术框架的介绍微服务框架可以分为侵入式和非侵入式两种,什么是侵入式和非侵入式呢?可以以微服务框架SpringCloud来进行说明,在微服务框架中使用ErukaServer作为服务注册中心,在微服务单元上配置使用EurekaClient向注册中心进行注册,这样就会带来一个问题,在旧代码或者非JAVA代码(比如Python)中使用SpringCloud微服务框架,这样就需要对旧代码及非JAVA代码进行微服务化的改造。SpringCloud是侵入式的微服务框架,侵入式微服务架构还存在Dubbo框架。什么是非侵入式的微服务框架呢,还是以微服务框架中微服务的注册来进行说明,比如将服务注册和服务调用从现有服务中抽离出来,形成一个服务代理。该服务代理也叫做Sidecar,负责找到目的服务并负责通讯的可靠性和安全等问题。当服务大量部署时,随着服务部署的Sidecar代理之间的链接形成了一个如下图所示的网格,该网格成为微服务的通讯基础设施层,承载微服务之间的所有流量,被称为ServiceMesh(服务网格)。非侵入式的微服务框架的比较有代表性的方案有Istio和Conduit。下面对这几种方案进行一个简单初步的介绍。SpringCloudSpringCloud作为一个微服务的开发框架,包括了很多的组件,其中包括SpringCloudNetflix(Eureka、Hystrix、Zuul、Archaius)、SpringCloudConfig、SpringCloudBus、SpringCloudCluster、SpringCloudConsul、SpringCloudSecurity、SpringCloudSleuth、SpringCloudDataFlow、SpringCloudStream、SpringCloudTask、SpringCloudZookeeper、SpringCloudConnectors、SpringCloudStarters、SpringCloudCLI等。另外SpringBoot为SpringCloud提供一个简化基于Spring的开发环境,可以适应SpringBoot快速开发单个微服务。DubboDubbo是一个阿里巴巴开源出来的一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含:远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。集群容错:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。自动发现:基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。SpringCloudVSDubbo一个关于SpringCloud和Dubbo很有意思的比喻,使用Dubbo构建的微服务架构就像组装电脑,各个环节的可选自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,但是如果是一个高手,这一切都不存在问题。SpringCloud就像品牌机,在SpringSource的整合下,做了大量兼容性的测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外配件时,需要对配件足够的了解。
微服务架构的软件运行可能存在哪些问题?
微服务架构开发在软件编程开发领域中是一种非常常见的软件开发方式了,而今天我们就一起来了解一下,基于微服务架构的系统软件在运行过程中都有哪些问题会发生。
一:Hystrix是什么?
1.1:基本解释
Hystrix开始由Netflix(看过美剧的都知道,它是一个美剧影视制作的巨头公司)开源的,后来由SpringCloudHystrix基于这款框架实现了断路器、线程隔离等一系列服务保护功能,该框架的目标在于通过控制访问远程系统、服务和三方库的节点,从而延迟和故障提供更强大的容错能力。hystrix具备服务降级、服务熔断、线程和信号隔离、请求缓存、请求合并以及服务监控等强大功能。起到了微服务的保护机制,防止某个单元出现故障.从而引起依赖关系引发故障的蔓延,终导致整个系统的瘫痪。
1.2:断路器的概念
断路器本身是一个开关装置,用在电路上保护线路过载,当线路中有电器发生短路的时候。“断路器”能够及时切断故障,防止发生过载、发热甚至起火等严重后果。当分布式架构中,断路器模式起到的作用也是类似的。当某个服务发生故障的时候,通过断路器的故障监控向调用方返回一个错误响应,而不是长时间的线程挂机,无限等待。这样就不会使线程因故障服务被长时间占用不释放,避免了故障在分布式系统中的蔓延。
二:Hystrix解决超时问题
2.1:问题
假设我们前端提供了用户查询订单的功能,先请求映射到OrderController,控制器通过调用服务orderService获取订单信息,前端传过来两个参数:一个是订单id,一个是用户id,orderService需要通过用户id调取用户服务来获取用户的相关信息返回给订单服务去组装信息,假设这里是通过http请求的,我们有一个单独的工程叫做:userService部署在其他的服务器上。但是这个服务器宕机了,这时候订单服务调取用户信息就失败了,然后查询订单整个请求就失败了!由一个服务的宕机就导致整个查询都失败了,牵一发而动全身。
三:Hystrix的流程
Hystrix实际上的工作原理是这样的:通过command来解耦请求与返回操作,在具体的实例中就是,Hystrix会对依赖的服务进行观察,通过command.toObservable调用返回一个观察的对象,同时发起一个事件,然后用Subscriber对接受到的事件进行处理。北京北大青鸟建议在command命令发出请求后,它通过一系列的判断,顺序依次是缓存是否命中、断路器是否打开、线程池是否占满,然后它才会开始对我们编写的代码进行实际的请求依赖服务的处理,也就是Hystrix.run方法,如果在这其中任一节点出现错误或者抛出异常,它都会返回到fallback方法进行服务降级处理,当降级处理完成之后,它会将结果返回给,际的调用者,经过一系列流程处理的。
关于微服务架构特点分析?
随着互联网的不断发展,我们在进行服务器开发组织架构上通常会采用分布式架构方法来进行设计。今天,我们就一起来了解一下,微服务架构都有哪些特点。
InfoQ:你近的QConSanFrancisco提出的一个关键前提是,组织如果要从单体大型应用转变为基于微服务的体系结构就得要打破它们的庞大的整体流程。你能再进一步解释一下吗?
RafaelSchloming:对于转变为微服务本身,人们实际上并不怎么关心,他们真正关心的是提升特性的完成速度。为了提升特征的完成速度就必需做出改变,而微服务只是这种改变所产生的一个附属物罢了。
对于组织来说非常常见的一种情况是,当他们发展到一个临界点,增加再多的人也不会提升特性的完成速度。当这种情况发生时,通常是因为组织用于产出特性的结构和/或过程成为了瓶颈,而不是人员的数量。
当一个组织遇到这种障碍,开始调查为什么这些特性似乎花费的时间远远超出了合理的资源,答案往往是,每个特性都需要太多不同团队的协调。
这会发生在两个不同的维度上。你的人员可以按职能划分为团队:产品与开发、质保与运维。你的人员也可以按组件划分:例如,前端与领域模型、搜索索引和消息通知。当单个特性需要跨多个不同的团队进行协调时,交付特性的控制因素是不同团队之间的沟通速度和效率。像这样组织结构的组织实际上是被一个庞大的整体过程所阻碍的,这个过程要求每个特性(在某种程度上)要有许多许多的组织来理解它。
InfoQ:那么如何解决这个问题呢?
Schloming:为了把很多人用在一个问题上,你需要把他们分成团队,因为人们不能在非常大的群体中有效地沟通。你这么做的时候,其实就是在做出一系列的权衡。你所营造的是每支团队内部具有高保真的沟通和协调,而团队之间是低保真和相对较差的协调。
为改进一个组织内的特性完成速度,您可以将你的人组织成独立的、跨职能的、自给自足的特性团队,可以从头到尾自主掌控一个完整的特性。这将以两种方式提高特性的完成速度。先,由于不同的职能(产品、开发、质保和运维)都圈定于一个特性内,你就可以自定义该特性区域的流程了,例如,IT培训分享对于一个没有人正在使用的新特性,你的流程就不需要优先考虑其稳定性了。其次,由于该特性所需的所有组件都由同一个团队拥有,因此,要想赶紧推出一个特性,就可以进行更快速有效的沟通和协调。
微服务架构给客户带来的价值?
传统的应用通常为单体架构、单体应用系统,如使用WebSphere、WebLogic或.Net Framework等,从前端到中间件再到后端,各个组件一般集中式的部署在服务器上。后来随着Web Service标准的推出,应用以标准的服务交付,应用间通过远程服务调用(RPC)进行交互,形成了面向服务的架构极大提升了应用组件的标准化程度和系统集成效率。在云原生应用设计中,应用体量更小,因而传统单体应用的功能被拆解成大量独立、细粒度的服务。而且对于一个应用来说,一个微服务就是一个可独立发布的应用;对于一个团队来说,为各个部门,不同岗位提供更多协同与沟通上的思路。
像蓝凌MK-PaaS平台,采用SpringCloud微服务架构,升级更灵活,容错能力强;滚动升级,应用/服务高可用;业务模块支撑可拆可合部署?支持分布式、容器化部署,大并发、大数据量下性能有保障。前后端分离,前端技术采用react技术栈,具备更好跨平台特性,在前端页面表现、速度流畅、兼容性等多方面提供极致用户体验。
轻量、高效、功能强大的微前端框架-MicroApp
这几年后端的微服务是比较火爆,我们公司目前只要是新项目,基本上都是基于微服务去架构的,那么微前端是什么呢?
微前端是借鉴了微服务的架构理念,核心在于将一个庞大的前端应用拆分成多个独立灵活的小型应用,每个应用都可以独立开发、独立运行、独立部署,再将这些小型应用融合为一个完整的应用,或者将原本运行已久、没有关联的几个应用融合为一个应用。微前端既可以将多个项目融合为一,又可以减少项目之间的耦合,提升项目扩展性,相比一整块的前端仓库,微前端架构下的前端仓库倾向于更小更灵活
以前我们为了把几个独立运行的小型应用合并成一个应用都是通过iframe的方式去实现的,如果不考虑体验问题,iframe 几乎是最完美的微前端解决方案了。
iframe 最大的特性就是提供了浏览器原生的硬隔离方案,不论是样式隔离、js 隔离这类问题统统都能被完美解决。但他的最大问题也在于他的隔离性无法被突破,导致应用间上下文无法被共享,随之带来的开发体验、产品体验的问题
micro-app不是基于iframe架构的
micro-app提供了js沙箱、样式隔离、元素隔离、预加载、数据通信、静态资源补全等一系列完善的开箱即用功能
micro-app没有任何依赖
为了保证各个业务之间独立开发、独立部署的能力,micro-app做了诸多兼容,在任何技术框架中都可以正常运行。
下面我讲一下如何在Vue中使用micro-app
1、初始化一个基座应用
2、基座应用的文件修改
main.js修改
router.js修改
3、main-page.vue页面
4、创建一个子应用
5、子应用的router.js文件修改
6、src目录下新建 public-path.js
7、 main.js 引入public-path.js
到此这个简单的微应用就搭好了
觉得效果不错的请帮忙加个关注点个赞,经常分享前端实用开发技巧
怎么学习java中的一个框架?
学习Java中的一个框架可以遵循以下步骤:
1. **了解基础知识:** 在开始学习一个框架之前,确保你对Java编程语言有一定的了解,包括面向对象编程、基本语法和概念。
2. **选择框架:** 根据你的需求和兴趣选择一个适合的框架,比如Spring、Hibernate、Spring Boot等。了解框架的用途和特点。
3. **官方文档:** 框架通常都有官方文档,它是学习的重要资源。从框架的官方网站找到文档并详细阅读,了解框架的核心概念、架构和用法。
4. **示例代码:** 查找官方提供的示例代码,从中学习如何使用框架的不同组件和功能。尝试运行这些示例,理解其工作原理。
5. **教程和博客:** 在网络上寻找与该框架相关的教程、博客和视频教程。这些资源通常会提供实际案例、使用技巧和最佳实践。
6. **实践项目:** 创建一个小型的实践项目,尝试在其中应用框架的不同特性。通过实际动手,加深对框架的理解。
7. **参与社区:** 参与框架的社区讨论、论坛和问答平台。在这些地方可以提问、解答问题,与其他学习者和专业人士交流经验。
8. **阅读源代码:** 如果可能,深入研究框架的源代码,了解其内部实现。这对于理解框架的工作机制和原理非常有帮助。
9. **持续学习:** 框架技术不断发展,保持学习的态度。关注框架的更新和新功能,参加培训、研讨会等活动。
10. **项目实践:** 最终,将所学应用到实际项目中。在实际项目中使用框架,解决真实问题,这是巩固知识的最佳途径。
通过以上步骤,你可以逐步深入学习Java框架,掌握其核心概念和用法,并在实际项目中应用所学知识。
框架是程序员们必学的知识点,而且是十分重要的应用,Spring、SpringMVC、Mybatis也是经典中的经典,最常用的框架类型。
作为Java新手应该如何去学习框架呢?搜集了很多网友的建议,现在为大家总结如下:
有同学建议:对于Spring来说,最应该学习的就是Spring的IOC原理,这在使用过程中是必须要理解的、必会的。用配置文件或者是Annonation的方式来代替New创建实例,可以说这是一个历史性的进步,并且前进了一大步,影响深远。也是间接的促成了接口实现分离的优雅风格。
另外,该同学还认为,建议把Hibernate换成Mybatis。
还有更接地气的同学建议说:从配置文件开始,理解三个字母各自是如何工作的,以及是如何协同工作的。我从零开始学ssm的时候就这么干的,花了一个月左右,使用起来就比较熟练了。然后深入框架的一些高级用法。再接着琢磨它们的原理、思想和设计、实现。最后到能自己重新发明轮子。
更有给力的同学给出了详细的建议,连具体步骤都给出了明确的说明。具体如下:
java语法基础,可以看think in java;
servlet,jsp,jdbc,结合html,css,js实现自己想要的小网站,功能慢慢积少成多;
spring,springmvc,springdata,hibernate,mybatis等框架学习,一上来用这些框架忽略基础,这样会出现只会用xxx框架,换个yyy框架又得重新学习的感觉;
设计模式,aop,oop等的学习,当然可以和之前的步骤反复来研究提高。
对于具体的操作,很多有经验的小伙伴也有妙招:其实不外乎实操这一真理,就是亲自去写一些框架,实践出真知,只有实际操作过了才能真正理解那些曾经学过的知识都是怎么回事。
比如这位朋友建议写一些通过JDBC直接到数据库读写数据的代码,写一个简单的web app,可以登记用户,要对数据有效性能控制,要能检测错误。然后再想办法优化成spring, mybatis和springmvc。优化到代码越少越好。
实操之后最重要的就是思考,每做完一个项目就做一次总结,动脑多想想为什么、接下来怎么做,那么框架那点事儿就不叫事儿了。
下面把我收藏的Java框架教程分享给大家,绝对值得参考!
1. SSM框架:spring+SpringMVC+MyBatis
强烈推荐!全网最全SSM框架集教程,Spring+SpringMVC+MyBatis一套搞定! Spring整合MyBatis项目开发;SpringMVC框架部署和配置,SprinGMVC框架全流程执行原理 ;ybatis配置和使用、Mybatis常见面试问题解析。
SSM框架教程(附源码)Spring+SpringMVC+MyBatis入门一套搞定!
2. Spring全套详解(Ioc-AOP-整合MyBatis)
包括Spring IoC、Spring AOP(CGLib、JDK动态代理)、Spring整合MyBatis,Spring事务管理等内容。
Spring从入门到精通全套教程_通俗易懂进阶必看(Ioc-AOP-整合MyBatis)
3. Mybatis框架(全程带练,源码解析)
包括ORM概述、Mybatis概述、Mybatis增删查改、Mybatis配置文件详解、Mybatis关联映射、MyBatis动态SQL、Mybatis日志配置、Mybatis连接池、Mybatis缓存、Mybatis延迟加载、Mybatis原理解析等。
Mybatis框架视频教程,mybatis(idea版)实战教程(全程带练,源码解析)
4. SpringMVC(框架源码解析)
包括SpringMVC的框架部署配置、创建控制器、前端请求控制器或者静态资源配置、控制器接收前端数据、并对前端请求作出响应等全流程全细节的讲解。最后将会完成三大框架(Spring、SpringMVC、Mybatis)终极整合。
一套快速掌握spring mvc(框架源码解析)
5. 持久层开发框架-MybatisPLUS
MybatisPlus教程(深入浅出,快速上手),Mybatis-Plus带你高效开发WEB应用。
MybatisPlus教程(深入浅出,快速上手)
6. 服务快速开发技术-springboot
课程提供了配套的所有资料,领取方法见评论区置顶。本套视频基于官方提供的最新版本SpringBoot 2.7.1进行讲解,不仅课程内容全网最新,内容也非常全面,覆盖机构及企业针对于springBoot所有的内容需求,课程一共分为4个章节,课程围绕着核心基础、日志框架、SpringBoot与其他技术整合(如Redis Ecache Elasticsearch MQ Quarts....)等、源码的剖析(搭建源码环境、运行的原理、内置tomcat、自定义starter等等)还有部署监控等内容。
SpringBoot2全套,springboot快速入门到项目实战视频教程
7.Spring Security
本套课程首先带来大家学会Spring Security框架的基本用法,手把手教大家完成框架的基本配置。然后详细讲解Security框架中的过滤器、认证方式、JWT的使用等内容。最后使用Spring Security+JWT的方式,做一个权限认证系统的微服务项目。从单体环境下的权限认证,到微服务前后端分离式的权限系统,实现对整个课程内容的升级。
SpringSecurity最新框架教程,从基础入门到Spring Security+JWT微服务项目实战
8.Java日志框架
本套课程是针对有Java基础的小伙伴进行讲解,由浅入深详细讲解每个知识点以及编程思想,系统完整的帮助小伙伴建立完备的Java日志系统知识体系以及高性能的日志框架选型。
Java日志框架教程,由浅入深全面精讲多种日志框架(log4j、slf4j、logback、jul、juc、springboot )
9. 微服务框架-Spring cloud
通过学习你将深刻理解微服务架构, 精通springcloud-alibaba各个组件的工作原理及其使用,吊打面试官,高薪拿offer。
SpringCloud框架入门到精通全套教程 java微服务架构基础 史上最简单全面的微服务开发教程
10. 分布式框架-Dubbo
旨在深度分析服务之间调用逻辑,从剖析RPC底层原理开始,通过手写RPC框架,掌握RPC实现逻辑。通过全方位介绍微服务RPC框架Dubbo,实现Dubbo在各实战场景中的应用。通过剖析Dubbo源码,掌握Dubbo的服务通信、负载均衡、SPI机制及服务治理的实现逻辑。
RPC+Dubbo框架入门最全教程_dubbo源码实战
11. 分布式框架-zookeeper
通过学习你将具备: Zookeeper的底层数据存储逻辑 Zookeeper客户端的完整操作流程 Zookeeper集群实战技能 分布式架构思维的引导及建立。
Zookeeper集群教程-全网最全Zookeeper应用及原理分析课程
以上就是为大家总结的关于学习Java框架的一些技巧和方法,尤其对于初学者最为重要。
还是那句话,学得再多不如一次实操,边学边练是永远不变的真理,也只有这样才能真正的学到东西,才能真正的把知识转化为技能从而转化为自己的财富。
前端微服务设计
近些年,前端发展呈百家争鸣式发展,框架层出不穷,版本更是迭代不穷,难免会出现前端项目技术栈不统一、所用框架版本不统一的情况。 如若某些项目,没有新的功能加入,又能线上稳定运行,但其技术栈却用的是 vue1.0,为了将其结合到新应用中去而对其重构,成本会很高。然而,微服务可以帮我们解决这个问题。 在既不重写原有系统的基础之下,又可以抽出人力来开发新的业务。其不仅仅对于业务人员来说是一个相当吸引力的特性,对于技术人员来说,不重写旧的业务,能在一些新技术上做挑战,也是一件很有意思的事情。 除此之外,在这两三年里,移动应用出现了一种趋势,用户不想装那么多应用。而往往一家大的商业公司,会提供一系列的应用。这些应用也从某种程度上,反应了这家公司的组织架构。然而,在用户的眼里他们就是一家公司,他们就只应该有一个产品。相似的,这种趋势也在桌面 Web 出现。聚合成为了一个技术趋势,体现在前端的聚合就是微服务化架构。
理想的前端微服务化,应该是符合如下几个特点:
路由分发式微前端,即通过设置路由,将不同的业务分发到不同的、独立前端应用上。其通常可以通过 HTTP 服务器的反向代理来实现,又或者是应用框架自带的路由来解决。
就当前而言,通过路由分发式的微前端架构应该是采用最多、最易采用的 “微前端” 方案。但是这种方式看上去更像是多个前端应用的聚合,即我们只是将这些不同的前端应用拼凑到一起,使他们看起来像是一个完整的整体。但是,它们并不是一个完整的整体,每次用户从 A 应用到 B 应用的时候,往往需要刷新一下页面。 通常可通过 nginx 配置反向代理,来进行路由分发,从而实现前端微服务。
它适用于以下场景:
iframe 可以创建一个全新的独立的宿主环境,这意味着我们的前端应用之间可以相互独立运行。
采用 iframe 有几个重要的前提:
即何时加载、卸载应用,如何监听应用事件等。
不论是基于 Web Components 的 Angular,或者是 VirtualDOM 的 React 等,现有的前端框架都离不开基本的 HTML 元素 DOM。
那么,我们只需要:
第一个问题,创建 DOM 是一个容易解决的问题。而第二个问题,则一点儿不容易,特别是移除 DOM 和相应应用的监听。当我们拥有一个不同的技术栈时,我们就需要有针对性设计出一套这样的逻辑。现有的框架有single-spa、qiankun、mooa等
常见的方式有:
其次,采用这种方式还有一个限制,那就是:规范! 规范! 规范!。在采用这种方案时,我们需要:
Web Components 组件可以拥有自己独立的 Scripts 和 Styles,以及对应的用于单独部署组件的域名。然而它并没有想象中的那么美好,要直接使用纯 Web Components 来构建前端应用的难度有:
现有的微前端框架有single-spa、qiankun、mooa。其均是在前端框架之上设计通讯、加载机制来实现的。
前后端分离微服务架构如何设计
前端
前端开发人员专注业务的页面呈现,非常注重用户体验度,也是与各种角色打交道最多的。
比如:
一般前端工作包括六个部分:
后端
如果前后端职责划分很清楚的话,后端更多开发工作在于业务接口设计、业务逻辑处理以及数据的持久化存储,并提供详细的接口设计文档给前端开发人员使用。
一般后端工作包括五个部分:
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 (大的系统组织总是比小系统更倾向于分解)
康威定律说明以下几点
四、部署及监控运维
前后端分离后,拆分的服务会带来线上部署以及如何监控运维的复杂性。
总体来说,前后分离所带来的好处还是更明显的。一个成熟的前后端分离的团队,文档化约定,前后端职责分离、接口约定都是做得比较好的
常用的java开发框架有哪些
常用Java的开发框架:1.SSH组合框架:Struts,Spring,Hibernate,后来Struts被SpringMVC来取代,所以SSH也可以是后者的组合。在这4中框架中,Struts和Hibernate目前来看,已经比较陈旧,而且也是比较重的框架,企业中目前已经很少用了。2.SSM组合框架:Spring,SpringMVC,Mybatis,也可以是Mybatis的进阶版,Mybatis-plus。那么这个组合可以说是目前比较流行的组合了,一二线城市中,不少的项目还在使用SSM框架。3.微服务架构:微服务是最近这两三年比较火爆的框架组合,提供了一整套的解决方案,一线城市里尤其是互联网公司。4.权限管控框架:Shiro,SpringSecurity,单体项目或者分布式项目,权限管控的框架这两个还是比较流行的。5.前端框架:layui,easyui,bootstrap,elament-ui,vue,react等6.分布式框架组合:dubbo+zookeeper是前几年比较流行的分布式解决方案,但是这两三年一线城市中新项目中基本已经抛弃,转而使用微服务了。7.其他框架:Java里的框架太多了,比如JFinal,企业自己封装的框架等。想要了解更多java开发的相关信息,推荐咨询千锋教育。千锋励精图治,不改教育初心。十一年来,千锋以政策为引导,不断完善国内特色现代职业教育体系建设,充分发挥教研师资队伍使命,构建品质教育,加大创新型人才培养力度,为经济发展提供智力人才和智力支撑,成为新时期职业教育发展的新方向,在同行业中有很高的美誉度。
阿里 qiankun 微前端框架实践
qiankun ——— 一套完整的微前端解决方案: https://github.com/umijs/qiankun
如图所示,在qiankun框架中,有主程序与子程序。主程序会留出指定的DOM作为子程序的容器,并且通过主程序里的路由转发加载子应用。
修改主程序main.js注册子应用
修改主程App.vue注册子应用的容器
main.js
Demo: github.com/justworkhar…
与传统的父子组件通信一样,父程序通过props向子程序传递信息。子程序通过回调函数向父程序传递信息。
qiankun框架说白了就是通过在主程中添加一个展示子程序的DOM,经过路由判断做转发加载子程序。