微服务四层架构之客户端层
2022-09-10 本文已影响0人
robot_test_boy
一个微服务应用中的标准前端可能依旧是一个单体。
随着前端应用的不断发展,它们开始和大规模的后端开发一样面临协作和摩擦问题。
如果可以像拆分后端服务那样将前端部分也进行拆分,那就太好了。在Web应用中出现的一个新趋势是微前端——以独立打包和部署的组件来提供UI的各个部分的功能,然后合并起来。
这样,每个微服务团队可以端到端地交付功能了。比如,如果开发者有一个订单团队,就可以独立地一起交付订单管理微服务以及负责下单和管理订单的Web界面。
虽然这种方式很有前途,但是也面临许多挑战:在不同的组件间保持视觉和交互的一致性,需要很大的精力来开发和维护通用组件以及设计准则;当需要从多个源头加载JavaScript代码时,Bundle的大小是难以管理的,进而它又会影响加载时间;接口重载和重绘可能会导致整体的性能变差。
微前端还不是很普遍,但是人们已经在这块荒地上使用了一些不同的技术方案,其中包括:Web组件通过清晰的、事件驱动的API来提供UI片段;使用客户端包含(client-side include)技术来集成片段;使用iframe来将微app放置到不同的屏幕区域;在缓存层使用ESI(edge side include)来集成组件。
总结,每个服务根据需要设计相应的客户端微服务,可以单独呈现其界面,也可以以菜单方式挂载到另外的系统中。这样即能保证端到端交付也能保证被集成。
另外做产品期望服务的菜单风格一致,服务也可以支持动态修改客户端的肤色和风格。
摘取自 摩根·布鲁斯和保罗·A.佩雷拉的《微服务实战》