阅读 791

微前端从Golang开始 | 🏆 技术专题第四期

吴文周 签名

确认一遍

  • 对你没看错,微前端是从Golang开始
  • 核心观点:所有脱离业务场景的技术讨论都是耍流氓
  • 微前端实践过程中的感悟:https://juejin.im/post/6860823404447006734
  • 关键词:样式,事件,缓存的相互冲突,特性代码的规则方案,通信机制的建立

需求背景

  • 新旧多系统集成
  • 日均上xx的独立用户访问
  • 跨多个业务部门合作方式

主要问题

  • 前端系统多技术栈,新旧项目错综复杂,有维护了6年的jq项目,也有新加入的react项目
  • 后端完全失控,虽然前端页面是多个后端系统集合体现,但是对于各个子系统状态一无所知

解决方案

  • 前端区分项目复杂度提供两种模式的嵌入方式,ifream和qiankun并存,以中心底座项目为通信基座,消息适配
  • 后端超级网关方案:对所有子系统服务状态等进行全链路,大方向定位追踪可视化管理,钉钉实时告警

服务治理 实现逻辑

弯路汇总

  • 整体方案设计逻辑个人感觉还是没毛病的
  • 技术选型还是太急于求成,本人基于nodejs,egg.js加consul实现了服务发现,动态转发等等,说白了新增或者修改一个新的微服务,可以通过修改consul的配置或者nodejs接口,轻轻松松,加多少,改多少全部都可以动态适配,无需重启ng。nodejs团队语言切合度高,劣势性能差,安全性低,环境依赖(这是当时的判断,却依然选择,为了快速实现)。性能和配置化的劣势明显(倾听运维团队的意见),面对当前系统日均xx访问的考虑不足,配置化也是依赖egg.js的config实现对于环境场景的支撑薄弱。
  • 实践方案详见https://juejin.im/post/6865299599697117197

痛定思痛从头再来

  • 选型有三个大类(JAVA,nodejs,GO)
  • JAVA社区完善场景支撑丰富,劣势前端团队语言瓶颈
  • nodejs优势快速开发,劣势大型项目支撑力度不足
  • GO优势性能优势,跨平台先天优势,类型检查,劣势团队经验不足
  • 配置化可视化页面缺失

技术方案

  • 语言 Golang
  • 框架 gin(41.7k),vue(快速开发,页面简单)
  • 注册中心 consul(跨平台,无依赖,本身基于go实现)
  • 数据库 sqlite (轻量级数据库,内嵌方式,零配置,迁移方便,业务字段简单)
  • 测试工具 ab.exe

效果预览

首页 列表 新增 配置

资源地址

  • github:https://github.com/fodelf/easyGateway
  • 设计地址:https://modao.cc/app/5ee15024c7e5115c15764a70ed0367dfb8985e40?simulator_type=device&sticky#screen=skenutzdhw0mbws

总结

  • 以qiankun和golang 实现微服务网关对老旧项目进行前端微服务进行高性能,无依赖,可配置,可监控的深入重构

进度

  • 持续开源中,功能还没写完嘿嘿!

结束

🏆 技术专题第四期 | 聊聊微前端的那些事......