什么是k8s和声明式编程?
认识k8s之后,他的操作模式对我来说是一种很不错的体验。他提供了更接近现实世界的面向对象接口。
什么是k8s?
Kubernetes(K8s)是一种开源容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它简化了容器化应用的管理,提供自动化、可扩展的部署,并允许高效管理跨多个主机的容器化应用程序。
在Kubernetes中有许多对象。其中,Deployment创建ReplicaSets,ReplicaSets负责创建Pod。ReplicaSets它们是一组具有相同配置的Pod的集合。Pod是Kubernetes的最小部署单元,可容纳一个或多个容器。ReplicaSets确保指定数量的Pods运行,如果失败则重新创建,而Deployment则管理和配置ReplicaSets,确保应用程序可靠地运行。
我要如何操作他?
在使用中,我需要关心Deployment如何创建ReplicaSets吗?我需要关心ReplicaSets如何创建Pod吗?实际上我并不需要,我对此一无所知。我只需要对他们的spec进行定义即可。什么意思呢?我只需要告诉系统(控制面)每个对象应该是什么(或者定义对象的模板),例如需要几个pod,升级策略是什么(注意:不是如何升级,而是升级应该确保什么?例如确保有3个可用的pod)。控制面会监控每个对象的情况,并尽可能的让他们的实际情况接近我定义的情况。至于他们是怎么做的我完全不需要理会。
声明式编程
没错,上面的体验正是我想说的:声明式编程。与过程式编程不同,声明式编程只用告诉机器我需要怎样的东西,而不需要告诉他我要怎么做。例如SQL,我只声明了我要怎样的数据,却不用告诉机器如何查找,不需要告诉他走哪个索引或者全表搜索。
如何在实务中使用声明式编程
我们可以做一个事件处理系统,前端发送来请求,记录到事件里面去。事件处理系统收到事件,则进行处理,再反馈给前端。前端的请求是精准的一个大的需求,而不是多次的分步的请求。事件处理系统更像是一个大的状态机,根据前端发来的各种请求,改变各种状态,以达到需求。
例如,我要实现当用户的密码被修改(包括用户修改和管理员修改),然后发送短信通知用户的请求。
首先,前端发送用户修改请求,状态机收到信息,修改密码,更新密码修改时间。此时系统达到了第一个状态。
很快,系统轮询发现,密码修改通知的事件早于密码最新修改的事件,就触发密码修改通知,然后更新密码修改通知的事件为当前时间(晚于密码最新修改时间)。
再次,前端发送管理员修改请求,状态机同样修改密码,更新修改密码时间。随后,系统轮询再次发现密码修改通知的事件早于密码最新修改的事件,就触发密码修改通知,然后更新密码修改通知的事件为当前时间(晚于密码最新修改时间)。
好了,有人可能就会问了。我搞这么复杂,还要轮询维护状态,为什么不直接修改密码请求的时候,一并发送通知呢?我给出的例子实际上是简化的,只有两个修改密码的方式。如果其他情况,我要100个,1000个修改方式呢?甚至我允许直接改数据库修改呢?是不是就没办法及时响应了。
当然,问题也很明显了。需要许多CPU算力和内存来监控数据变化,轮询各种事件。即便什么都没做,监控与轮询依然存在,这将非常消耗资源。
希望在不久的将来,资源不再成为问题。
技术前沿拓展
前端开发,你的认知不能仅局限于技术内,需要发散思维了解技术圈的前沿知识。细心的人会发现,开发内部工具的过程中,大量的页面、场景、组件等在不断重复,这种重复造轮子的工作,浪费工程师的大量时间。
介绍一款程序员都应该知道的软件JNPF 快速开发平台,很多人都尝试用过它,它是功能的集大成者,任何信息化系统都可以基于它开发出来。
这是一个基于 Java Boot/.Net Core 构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;集成了代码生成器,支持前后端业务代码生成,实现快速开发,提升工作效率;框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3。如果你有闲暇时间,可以做个知识拓展。
看完本文如果觉得有用,记得点个赞支持,收藏起来说不定哪天就用上啦~
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!