定义:
微前端是一种类似于微服务的架构风格。
将大而复杂的应用切分为小而简单的小块,由单独的团队去开发,测试,部署等。
团队可以选择自己想要使用的语言,技术栈,代码库,甚至可以使用新技术。
但是在用户看来依然是个内聚的单个产品。
简单点说就是多个独立的前端应用组成了一个大应用。
优点:
- 团队自治
- 独立部署
- 增量开发
- 松耦合
为什么使用?
当比如需要重构一个项目的时候,
- 兼容历史代码,实现增量开发
- 拆分巨型应用,使应用方便迭代更新
微前端结构方案:
- 自由组织模式: iframe嵌套、npm包
- 基座模型:类似微服务的注册中心模式,有个基座,其他应用都往里面加
- 去中心模式:webpack5 模块联邦,多个应用可以互相嵌套,可以深入到组件的导入导出
主流微前端框架:
国内使用基座模式偏多:
- Single-Spa:最早的微前端框架,兼容多种前端技术栈。\
- Qiankun:基于Single-Spa,阿里系开源微前端框架。
微服务:
来自百度百科:
一种软件开发技术:是SOA 架构的一种变体。
他提倡将【单一应用程序】划分为【一组小的服务】
服务之间互相协调,互相配合,为用户提供最终的价值。
每个服务都运行在【其独立的】的进程中,服务与服务之间采用轻聊级的通信机制互相沟通(通常基于HTTP和restful API)。
每个服务都围绕着具体的业务进行构建,并且能够独立的部署到生产环境,类生产环境等。
另外,应尽量避免统一的,集中式的服务管理机制,对具体的一个服务而言,应根据上下文, 选择合适的语言,工具对其进行构建。
SOA(service-oriented-architecture):面向服务架构
面向服务架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
云原生: 微服务 + DevOps + 持续交付 + 容器化
技术的变革,一定是思想先行, 云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。
云原生(CloudNative)是一个组合词,Cloud+Native。
- Cloud表示应用程序位于云中,而不是传统的数据中心;
- Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。
微服务和soa的区别:
区别 | 微服务 | n层整体架构 | SOA |
---|---|---|---|
服务对象 | 特定应用程序 | 企业范围内的一项工作 | |
堆栈 | 自己的 | 共享 | |
通信 | 事件流+消息代理的组合 | ||
组成 | 细小,松散耦合的服务组成 | 大型,紧密耦合 |
微服务的优点:
- 独立部署:可以更轻松地更新代码。
- 团队可以为不同的组件使用不同的堆栈。
- 组件可以彼此独立地进行缩放,从而减少了因必须缩放整个应用程序而产生的浪费和成本,因为单个功能可能面临过多的负载。
总结:
微服务是SOA 的一种变体:把应用程序设计成一些列松散耦合的细粒度服务,并通过轻量级的通信协议组织起来。
具体的,将应用构建成一组小型服务,这些服务都能够独立部署,独立扩展,每个服务都具有稳固的模块边界,甚至允许使用不同的编程语言来编写不同的服务,也可以由不同的团队来管理。