18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > SpringBoot 2.x 实战仿B站高性能后端项目

SpringBoot 2.x 实战仿B站高性能后端项目

时间:2023-04-23 19:12:01 | 来源:网站运营

时间:2023-04-23 19:12:01 来源:网站运营

SpringBoot 2.x 实战仿B站高性能后端项目:download:




打开 openYurt 的 README.md,在简单介绍之后就是 Getting started:
yurtctl convert --provider [minikube|kubeadm|kind] // To convert an existing Kubernetes cluster to an OpenYurt cluster yurtctl revert // To uninstall and revert back to the original cluster settings 复制代码
简单一行命令就可体验 OpenYurt 了,感觉非常方便。
稍等!为什么是 convert/revert 而不是 install/uninstall ?
这个命令对集群做了什么?
看来,在执行它之前有必要搞清楚它到底做了什么。
yurtctl convert 到底做了些什么?
核心流程
跟随 openYurt 源代码(详情请见文末相关链接),梳理了 convert 的核心流程:



可见 1、2 并没有什么特别,只是常规的服务部署。
3,则是对原有 k8s 系统组件的操作,需要特别注意。
4,节点转换看着也并不复杂,却对边缘至关重要。****
disable nodelifecycle controller 做了什么
工作内容:
1. 查询控制面节点
2. 创建 job,通过 nodeName: {{.nodeName}} 确保 job 的 pod 调度到对应 node 上执行(通过 nsenter 的方式执行,修改宿主机上文件)。
3. sed -i 's/--controllers=/--controllers=-nodelifecycle,/g' /etc/kubernetes/manifests/kube-controller-manager.yaml
查看 kube-controller-manager.yaml
... containers: - command: - kube-controller-manager - --allocate-node-cidrs=true ... - --controllers=-nodelifecycle,*,bootstrapsigner,tokencleaner ... 复制代码
可见,上面的一系列操作最终就是修改了 kube-controller-manager 的启动命令。
查看 kube-controller-manager 启动参数说明:
--controllers 代表需要开启的controller列表/
可见,sed 命令就是去掉了 nodelifecycle 这个 controller。
那,nodelifecycle controller 是做什么的?
简单来说:
1. 不断监听,kubelet 上报上来的 node 信息
2. 如果某个 node 状态异常,或者说长时间没有上报等
2.1 驱逐这个 node 节点或者其他 ---> 导致上面的 pod 被重新调度
可见,对于处于弱网环境的边缘节点,很容易就命中异常状态,导致 node 被驱逐,pod 被重新调度。
所以这里把它去掉了。使用 yurt-controller-manager 来代替它。
即使节点心跳丢失,处于自治模式的节点中的 pod 也不会从 APIServer 中驱逐。
注:这里自治模式的节点,指的就是边缘节点。我们通常会通过加 annotation 的方式把节点标记为自治节点。
节点转换是怎么实现的,云端节点和边缘节点有什么差异?
同样,是通过跑 job 的方式,在目标宿主机上下文中执行相关操作。
不过,相比于暴力使用 nsenter,这里用了更加优雅的方式。通过将宿主机根路径 volume 挂载到容器里的方式。

关键词:性能,项目,实战

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭