Kubernetes在Hazelcast平台上的原生云部署(概述)

2023-11-21 10:18

本文主要是介绍Kubernetes在Hazelcast平台上的原生云部署(概述),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

KubernetesHazelcast平台上的原生云部署(概述)

我们一说到原生云就意味着我们当前的应用程序时运行在一个集群之上,同时使用这个集群的基础设施实现这个应用程序.一个定制化的Hazelcast引导程序被用来使Hazelcast可以动态的发现已经加入集群的Hazelcast节点.当拓扑结构发生变化时,需要Hazelcast节点自身进行交流和处理.

 

简单的单调度单元的Hazelcast节点

 

k8s,最小的应用单元就是pod,一个pod就是同一个主机调度下的一个或者多个容器.在一个Pod中的所有容器共享同一个网络命名空间,同时可以有选择行的共享同一个数据卷.这种情况下,我们不能单独运行一个Hazelcast pod,因为他的发现机制依赖于Service的定义.

 

添加一个Hazelcast服务

 

Hazelcast,一个service被描述为执行同一任务的pods集合.比如,一个hazelcast的集群中的节点集合.Service的一个重要用途就是通过建立一个均衡负载器将流量均匀的分到集合中的每一个成员.此外,Service还可以作为一个标准的查询器,使动态变化的POD集合提供有效通过K8sAPI.实际上,这个就是探索机制的工作原理,就是在service的基础上去发现Hazelcast pods.下面是对Service的描述:

apiVersion: v1
kind: Service
metadata:labels:name: hazelcastname: hazelcast
spec:ports:- port: 5701selector:name: hazelcast


这里值得注意的是selector(选择器).在标签的上层有一个查询器,它标示了被service所覆盖的pods集合.这种情况下,selector就是代码中的name:hazelcast.在接下来的Repication Controller说明书中,你会看到Pods中有对应的标签,那么它就会被这个Service中对应的成员变量所选中.创建该Serviced的命令如下:

$ kubectl create -f examples/hazelcast/hazelcast-service.yaml


添加一个拷贝节点

k8sHazelcast真正强大的地方在于他们可以轻松的构建一个可拷贝的,大小可调节的Hazelcast集群.K8s,存在一个Replication Controller的管理器,专门用来管理相同的Pods拷贝集合.service一样,它也存在一个在集合成员变量中定义的选择查询器.service不同的是,它对拷贝的个数有要求,会通过创建或者删除Pods来确保当前Pods的数量符合要求.Replication Controllers会通过匹配相应的选择查询器来确认要接受的Pods.

 

说了这么多,Hazelcast是一个高度可扩展的数据分发和集群平台.Hazelcast是基于java.

 

hazelcast支持分布式队列,集合,map,线程池,,支持事务处理,分布式的监听和事件,总之就是支持很多东西,用起来很简单,速度快.依赖小,效率高,CPU和内存友好.

 

hazelcast对数据几乎是均匀的分布在每一个节点的,每个节点上有(1/n*总数据量)+备份的数据量(n是集群中的节点).如果一个节点宕机了,他的备份副本也拥有相同的数据,将会动态的将数据包括所有权和锁分配到依然活着的节点,所以数据不会丢失.当一个新的节点加入的时候,新的节点会加载集群中的数据量,减少其他节点的压力.

 

没有单一的集群主机或者其他东西会导致单点故障,集群中的每个节点具有相同的权利和责任,没有节点是超级权限,也不需要额外的依赖其他的机器.

 

咱们接着说回K8s,K8s一共有三个重要的东西,分别是pod,service,RC.k8s,所有的容器都运行在pod,一个pod中有一个容器或者多个合作的容器.在后一种情况,pod中的容器被保证保证放置在同一个机器上,可以共享资源.一个pod也能包含零个或者更多的volume,volume是对一个容器私有的目录或者可以在pod中的容器间共享.对于用户每个创建的pod,系统会找一个健康运转并且有足够的容量的机器,然后开始将相应的容器在那里启动.如果一个容器失败,它会找到k8snode agent自动重启,这个node agent被称为kubelet.但是如果pod或者其他的机器出现故障,他不会被自动转移或者重启,除非用户定义了一个RC.

 

用户可以自己创建并管理pod,但是k8s极大的简化了系统管理,它能让用户指派两个常见的跟pod相关的活动:基于相同的pod配置部署多个pod副本(类似于复制);当一个pod或者它所在的机器发生故障创建一个可用来替换的pod.


K8s有专门的一套API对象来管理上面的这些行为,这些API就是RC,它用模板的形式定义了pod,然后系统根据模板实例化出一些pod(特别是由用户).pod的副本集合可以共同组成一整个应用,一个微服务,或者在一个多层应用的一层.一旦pod创建好,系统会持续的监控他们的健康状态,和他们运行时所在的机器的健康状态.如果一个pod因为软件问题或者所在机器出现故障,Relication控制器会自动在健康的机器上创建一个新的pod,来保证pod的集合处于一个期望的冗余水平.一个或者多个应用的多个pod能共享一个机器.k8s不会动态的分批额端口,而是采用用户可以选择任意合适自己的端口,为了实现这点,他给每个pod分配了一个ip地址.

 

每个k8s中的资源,例如pod,都通过一个URL来被识别,并且有一个UID.URL中一些重要的组件是,对象的类型(:pod),对象的名字,和对象的命名空间(namespace).对于一个特定的对象类型,每一个名字在其命名空间都是独一无二的.在一个对象的名字没有带着命名空间的形式给出,那就是默认的命名空间.UID在时间和空间的反问都是唯一的.

 

下一次咱们说一些关于搭建一个k8s集群的东西!!当然了,楼主实践不太会,还是单纯的说点纸上谈兵的问题.

 

这篇关于Kubernetes在Hazelcast平台上的原生云部署(概述)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/401683

相关文章

go rate 原生标准限速库的使用

《gorate原生标准限速库的使用》本文主要介绍了Go标准库golang.org/x/time/rate实现限流,采用令牌桶算法控制请求速率,提供Allow/Reserve/Wait方法,具有一定... 目录介绍安装API介绍rate.NewLimiter:创建限流器limiter.Allow():请求是否

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

Python datetime 模块概述及应用场景

《Pythondatetime模块概述及应用场景》Python的datetime模块是标准库中用于处理日期和时间的核心模块,本文给大家介绍Pythondatetime模块概述及应用场景,感兴趣的朋... 目录一、python datetime 模块概述二、datetime 模块核心类解析三、日期时间格式化与

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小