解决SSD磁盘文件损坏和无法启动问题
|
一、什么是服务网关 服务网关 = 路由转发 + 过滤器 1、路由转发:接收一切外界请求,转发到后端的微服务上去; 2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。 二、为什么需要服务网关 上述所说的横切功能(以权限校验为例)可以写在三个位置: 每个服务自己实现一遍 写到一个公共的服务中,然后其他所有服务都依赖这个服务 写到服务网关的前置过滤器中,所有请求过来进行权限校验 第一种,缺点太明显,基本不用; 第二种,相较于第一点好很多,代码开发不会冗余,但是有两个缺点: 由于每个服务引入了这个公共服务,那么相当于在每个服务中都引入了相同的权限校验的代码,使得每个服务的jar包大小无故增加了一些,尤其是对于使用docker镜像进行部署的场景,jar越小越好; 由于每个服务都引入了这个公共服务,那么我们后续升级这个服务可能就比较困难,而且公共服务的功能越多,升级就越难,而且假设我们改变了公共服务中的权限校验的方式,想让所有的服务都去使用新的权限校验方式,我们就需要将之前所有的服务都重新引包,编译部署。 而服务网关恰好可以解决这样的问题: 将权限校验的逻辑写在网关的过滤器中,后端服务不需要关注权限校验的代码,所以服务的jar包中也不会引入权限校验的逻辑,不会增加jar包大小; 如果想修改权限校验的逻辑,只需要修改网关中的权限校验过滤器即可,而不需要升级所有已存在的微服务。 所以,需要服务网关!!!
三、服务网关技术选型 另一种观点是,将集群联邦视为一级对象。实际上可以把分散的机器看成是单独的集群,各自有自己的控制平面,然后将它们整合作为一个超大型集群来使用。这当然可以,并且回答了一些关于如何将节点与控制平面解耦的问题(我个人的答案:不要尝试这么做,应当将控制平面的功能尽可能地下放到数量庞大的工作节点)。在这种情况下,我希望控制平面是极其精简的,否则在Kubernetes中这样做的开销会很大,我个人希望避免这种情况。 这也提高了网络部分的难度,因为我们现在必须跨网连接。我的做法是以某种方式去和Tailscale集成,这刚好解决我们需求。也可以选择需要一些更定制化的、组件更少的方案(不要进行多余的NAT转换)。 纳管虚拟机 注意:当我在这里说虚拟机的时候,我并不是指“用户在Kubernetes上运行的Pod”。我指的是管理员自己创建的hypervisor的服务器虚拟机。类似Proxmox或ESXi创建出来的,但不是EC2这种托管的。 我希望我的编排系统能够无缝地管理容器和虚拟机。否则,在实践中,我将需要一个单独的hypervisor,那样一来我将有两套的管理系统。
我不确定这究竟会成为一种怎样的设计,只是一个粗略的想法。kubevirt提供的功能应该内置到系统中,并成为系统关键的一部分,就像容器一样。这是一个相当庞大的问题,因为这可能意味着从“让我运行一个带有虚拟软盘的系统”到“运行一个看起来和感觉都有点像EC2的管理程序”,这是非常不同的两件事。我唯一确定的是,我不希望运行同时运行Proxmox和这套编排系统,但我确实需要同时拥有虚拟机和容器。 (编辑:伊春站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
