前端2月18日 23:22
Garfish 主子应用如何通信?状态共享有哪些边界和坑?Garfish 主子应用通信不要一开始就设计成“大而全的全局 store”。更稳的做法是按数据生命周期拆分:挂载时需要的上下文用 props,跨应用通知用事件总线,长期共享的登录态、主题、权限用平台服务封装。这样子应用仍能独立开发和部署,主应用也不会变成所有业务状态的垃圾桶。
## props 传稳定上下文
props 适合传用户信息读取函数、API 前缀、路由 basename、权限快照和平台服务入口。它简单、可测试,子应用挂载时就能拿到,不需要等待异步事件。边界是 props 不适合高频变化数据,比如未读数、协同编辑状态或实时价格;这些数据用 props 传,会让刷新和同步逻辑很...前端2月18日 23:22
Garfish 样式隔离怎么做?Shadow DOM 和 scoped CSS 如何取舍?Garfish 的样式隔离不是把 CSS 变成“绝对安全”,而是给每个子应用划出清晰作用域,减少全局 reset、组件库类名、运行时 style 标签互相覆盖。实际落地时,最常见的是 scoped CSS、Shadow DOM 和动态样式清理三类方案。它们解决的问题不同,取舍也不同:scoped CSS 兼容性好,Shadow DOM 隔离更强,动态清理负责避免卸载后的残留污染。
## scoped CSS 适合多数业务系统
scoped CSS 通常通过构建工具给选择器加容器前缀,例如把 `.button` 变成 `[data-garfish-app="order"] .butto...前端2月18日 23:24
Garfish 微前端加载慢该怎么优化?Garfish 性能优化要分两段看:子应用加载前,重点是入口、资源、缓存和预加载;子应用运行后,重点是卸载清理、渲染开销、共享依赖和监控定位。不要一上来就堆 preload,真正有效的做法是先量化首屏、子应用加载耗时、资源体积和错误率,再针对瓶颈处理。微前端的性能问题经常不是 Garfish 本身慢,而是每个子应用都带一份 React、组件库和图表库,最后门户像同时打开了几个完整系统。
## 先把加载链路量出来
主应用应该记录从路由命中到子应用 mount 完成的耗时,并区分资源下载、脚本执行和渲染时间。没有数据时,优化很容易变成猜谜:有人说缓存,有人说分包,最后谁都证明不了收益。建...前端2月18日 23:25
Garfish、qiankun 和 single-spa 该怎么选?Garfish、qiankun 和 single-spa 都能做微前端,但它们解决问题的层级不同。single-spa 更像底座,只管应用注册、激活和生命周期;qiankun 在它之上补齐沙箱、资源加载和工程实践;Garfish 也提供开箱能力,同时更强调运行时加载、插件化和相对轻量的接入体验。选型时别只看“谁更先进”,要看团队是否需要高度定制、是否已有历史应用、是否能承担框架生态和运维成本。
## 三者核心差异是什么?
如果团队刚开始做微前端,single-spa 的自由度最高,但很多事情要自己补,比如资源加载、样式隔离、全局变量污染处理和错误兜底。qiankun 的优势是成熟,资...前端2月18日 23:25
Garfish 实际项目怎么落地才不容易失控?Garfish 落地微前端,关键不是把子应用跑起来,而是先把主应用边界、子应用生命周期、发布规则和故障兜底定清楚。主应用只做平台能力:注册应用、路由分发、登录态、主题、全局错误处理和监控埋点;业务逻辑尽量留在子应用里。这样做的取舍是,前期规范会多一点,但后续团队扩张、独立发布、灰度回滚都会轻很多。
## 主应用应该管什么?
主应用最好保持“薄壳”角色,不要把订单、用户、报表这类业务判断塞进去。它可以统一提供 `userInfo`、权限、语言、主题、接口前缀和埋点方法,再通过 `props` 传给子应用。边界要写清:主应用负责“能不能进入”和“挂在哪里”,子应用负责“进去以后怎么展示”...服务端2月18日 23:27
Kubernetes Pod 是什么?生命周期和重启策略怎么理解?Pod 是 Kubernetes 里最小的可调度单元,不是容器本身。一个 Pod 可以包含一个或多个容器,这些容器共享网络命名空间、存储卷和生命周期,被调度到同一个节点上运行。大多数业务场景是一个 Pod 一个主容器;只有当多个容器必须紧密协作、共享 localhost 或共享文件时,才适合放进同一个 Pod。理解 Pod 的重点是:它是一次运行实例,天然会被替换,不应该把它当成固定机器来使用。
## Pod 和容器是什么关系
容器负责运行进程,Pod 负责把一组容器包装成 Kubernetes 能调度和管理的对象。同一个 Pod 内的容器共享同一个 IP,可以通过 `localho...服务端2月18日 23:28
Kubernetes Service 有什么作用?ClusterIP、NodePort 和 LoadBalancer 怎么选?Kubernetes Service 的作用,是给一组会变化的 Pod 提供一个稳定访问入口。Pod IP 会随着重建、扩缩容、滚动发布而变化,客户端如果直接访问 Pod,很快就会遇到地址失效和负载不均的问题。Service 用 selector 找到后端 Pod,通过 EndpointSlice 记录真实后端,再由 kube-proxy 或 CNI 数据面把流量转发过去。理解 Service 的关键不是背类型,而是知道不同类型解决的是“集群内访问、节点端口暴露、云负载均衡、外部域名映射”这几类问题。
## Service 如何找到后端 Pod
最常见的 Service 通过 sel...服务端2月18日 23:31
Kubernetes 控制平面由哪些组件组成?它们如何协同工作?Kubernetes 控制平面是集群的决策层,负责接收请求、保存状态、做调度决策,并不断把实际状态拉回到期望状态。它通常由 kube-apiserver、etcd、kube-scheduler、kube-controller-manager 和 cloud-controller-manager 组成。简单说,API Server 是入口,etcd 是账本,Scheduler 负责把 Pod 放到合适节点,Controller Manager 负责持续纠偏,Cloud Controller Manager 负责和云厂商资源打交道。真正排障时,不要把它们看成一组静态组件,而要看一次资源变更如...服务端2月18日 23:32
Kubernetes 工作节点包含哪些组件?各自负责什么?Kubernetes 工作节点是实际运行 Pod 的机器,核心组件通常包括 kubelet、容器运行时、kube-proxy,再加上 CNI、CSI、日志和监控代理等配套组件。控制平面负责“决定应该是什么状态”,工作节点负责“把这个状态跑出来并持续汇报”。如果一个节点 NotReady,排查也通常围绕这几件事展开:kubelet 有没有连上 API Server,容器运行时能不能创建容器,网络插件是否正常,磁盘、内存、PID 是否触发压力状态。
## kubelet 负责什么?
kubelet 是节点上的主代理,它从 API Server 获取分配到本节点的 Pod 规范,然后通过 ...服务端2月18日 23:34
Kubernetes PV 和 PVC 有什么区别?如何管理持久化存储?PV 和 PVC 的区别可以用一句话概括:PV 是集群里真实或即将创建的存储资源,PVC 是业务在命名空间里提出的存储申请。Pod 不直接挑磁盘,而是引用 PVC;控制器再根据容量、访问模式、StorageClass、selector 等条件,把 PVC 绑定到合适的 PV。这样做的好处是把“应用要多大空间”和“底层用 EBS、NFS 还是本地盘”解耦,但代价是排障时要同时看 PVC、PV、StorageClass、Pod 事件,不能只盯一个对象。
## PV、PVC 和 StorageClass 怎么配合?
动态供给是最常见的方式:开发者创建 PVC,指定 StorageClass...