System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于云计算中的分布式消息队列,尤其涉及一种基于kubernetes的弹性分布式消息队列实现方法。
技术介绍
1、分布式消息队列是一种通过高效可靠的消息传递机制来实现不同系统间异步通信的技术,可以为使用者提供消息异步通信、流量峰谷平整、生产消费端解耦等重要功能。通常消息队列在服务过程中各组件的角色可分为生产者、消费者和消息服务器。生产者将想要传递的消息发送到消息服务器,消息服务器通过点对点发送模式或者发布/订阅模式将消息传递到消费者。目前的消息队列技术众多,如rabbitmq、kafka、rocketmq、activemq等等,其中rabbitmq消息处理时延甚至可以达到微秒的级别。然而,大部分消息队列技术缺少对消息服务器扩展手段或者仅支持通过手动方式修改消息服务器数量,这种方式存在以下不足:
2、1、在消息有序和服务不中断业务需求场景下消息队列扩缩容有较大的出错风险;
3、2、无法自动缩容意味着在低利用率的情况下,无法自动回收消息队列所占用资源;
4、3、手动操作扩容在一定程度上增加了运维人员的工作量和人为操作出错几率。
5、kubernetes是一个开源的,用于自动化管理多个主机上容器的应用。它使多个独立主机一体化、平台化,支持平台上容器化应用自动部署,使容器的部署、规划、更新、维护更加高效和简洁。kubernetes包含了一系列组件,如kubelet、etcd、kube-apiserver、kube-contorller-manager、kube-proxy、core
技术实现思路
1、本专利技术所要解决的技术问题是针对
技术介绍
的不足提供种一种基于kubernetes的弹性分布式消息队列方法,针对当前分布式消息队列存在的不足,主要解决当前消息队列无法自动化、精细化调整消息服务器规模的问题,同时提供消息队列消息有序化、高可用化、持久化功能。
2、本专利技术为解决上述技术问题采用以下技术方案:
3、一种基于kubernetes的弹性分布式消息队列实现方法,包含接收器、分发器、管理中心、api服务器和数据库;具体包含数据流通方法、负载均衡方法、容量自动调整方法、消息顺序同步方法;
4、其中,接收器,用于将从客户端收到的信息进行附加标签处理,并调用api服务器进行持久化存储;
5、分发器,用于从api服务器订阅特定主题的消息,去标签化处理,并根据标签信息将消息发往目的地服务端;
6、管理中心,用于管理接收器、分发器、api服务器和数据库的监控、动态部署管理;
7、api服务器,用于向外提供标准化数据库接口,外界与数据库数据交互的统一入口;
8、数据库,用于持久化数据、并提供增删改查和订阅数据的功能。
9、作为本专利技术基于kubernetes的弹性分布式消息队列实现方法的进一步优选方案,所述数据流通方法包含消息接收处理、消息发送处理、informer机制介绍。
10、作为本专利技术基于kubernetes的弹性分布式消息队列实现方法的进一步优选方案,消息接收处理,具体如下;
11、步骤a1,生产者和接收器之间通过rpc方式进行通信;
12、步骤a2,接收器接收到生产者发送的消息,放在以源地址以及特定主题组合区分的队列中;
13、步骤a3,该消息将和标识信息以kubernetes中的资源configmap的形式通过应用程序接口api请求发送到api服务器,该configmap将附上特殊类型标签,api服务器再将数据写入到数据库中,实现数据的持久化;
14、其中,kubernetes是一个可移植、可扩展的开源平台,用于为容器提供编排和管理能力;configmap是kubernetes中的一种资源,用于将数据存储在这种资源中。
15、作为本专利技术基于kubernetes的弹性分布式消息队列实现方法的进一步优选方案,消息发送处理,具体如下;
16、步骤b1,分发器通过使用kubernetes的informer机制,对特定标签的configmap进行订阅;
17、步骤b2,收到消息则将消息放入相应的以目的地址以及特定主题区分的队列中,每个消息使用rpc发送到信息匹配上的注册消费者。
18、作为本专利技术基于kubernetes的弹性分布式消息队列实现方法的进一步优选方案,informer机制介绍,具体如下;
19、步骤c1,informer通过下游reflector中的list方法拉取现有a资源的全量信息,通过watch方法监控并实时获取资源a的变化情况,包括资源的增加、删除、更新事件;
20、其中,reflector为kubernetes中的反射器,属于golang编程语言中的结构体数据类型;
21、watch方法和list方法两种方法是kubernetes反射器的两种方法;
22、list方法用于拉取kubernetes特定资源的全量信息;
23、watch方法用于监控并实时获取kubernetes特定资源的变化情况;
24、步骤c2,list基于超文本传输协议http短连接从api服务器获取信息,而watch则基于http长连接持续从api服务器获取信息;
25、步骤c3,得到的信息经过处理转换为资源对象+操作类型的组合,按照顺序加入informer维护的先进先出队列;
26、步骤c4,informer的处理分发器将信息从队列中取出,并分发给下游的订阅者,订阅者将会根据信息的操作类型触发事先设置的回调函数;
27、其中,informer是kubernetes中一种与api服务器进行实时可靠通信的方法。
28、作为本专利技术基于kubernetes的弹性分布式消息队列实现方法的进一步优选方案,所述操作类型包含增加、删除、更新。
29、作为本专利技术基于kubernetes的弹性分布式消息队列实现方法的进一步优选方案,负载均衡方式,具体如下:
30、使用kubernetes中的service资源,通过标签将plugin pool中的pod和kubernetes集群中其它pod区分开;其中,service是kubernetes中的一种资源,可以将内部应用作为服务向整个集群提供;plugin pool为接收器池;pod是kubernetets中的最基本管理单位;
31、外界通过访问该service服务的vip,请求将分发到plugin pool中的pod上,实现请求流量的负载均衡。
32、作为本专利技术基于kubernetes的本文档来自技高网...
【技术保护点】
1.一种基于kubernetes的弹性分布式消息队列实现方法,其特征在于:包含接收器、分发器、管理中心、api服务器和数据库;具体包含数据流通方法、负载均衡方法、容量自动调整方法、消息顺序同步方法;
2.根据权利要求1所述的一种基于kubernetes的弹性分布式消息队列实现方法,其特征在于:所述数据流通方法包含消息接收处理、消息发送处理、informer机制介绍。
3.根据权利要求2所述的一种基于kubernetes的弹性分布式消息队列实现方法,其特征在于:消息接收处理,具体如下;
4.根据权利要求2所述的一种基于kubernetes的弹性分布式消息队列实现方法,其特征在于:消息发送处理,具体如下;
5.根据权利要求2所述的一种基于kubernetes的弹性分布式消息队列实现方法,其特征在于:informer机制介绍,具体如下;
6.根据权利要求5所述的一种基于kubernetes的弹性分布式消息队列实现方法,其特征在于:所述操作类型包含增加、删除、更新。
7.根据权利要求1所述的一种基于kubernete
8.根据权利要求1所述的一种基于kubernetes的弹性分布式消息队列实现方法,其特征在于:容量自动调整方法,具体如下:
9.根据权利要求8所述的一种基于kubernetes的弹性分布式消息队列实现方法,其特征在于:扩缩容有两种方案:
10.根据权利要求1所述的一种基于kubernetes的弹性分布式消息队列实现方法,其特征在于:消息顺序同步方法,具体如下:
...【技术特征摘要】
1.一种基于kubernetes的弹性分布式消息队列实现方法,其特征在于:包含接收器、分发器、管理中心、api服务器和数据库;具体包含数据流通方法、负载均衡方法、容量自动调整方法、消息顺序同步方法;
2.根据权利要求1所述的一种基于kubernetes的弹性分布式消息队列实现方法,其特征在于:所述数据流通方法包含消息接收处理、消息发送处理、informer机制介绍。
3.根据权利要求2所述的一种基于kubernetes的弹性分布式消息队列实现方法,其特征在于:消息接收处理,具体如下;
4.根据权利要求2所述的一种基于kubernetes的弹性分布式消息队列实现方法,其特征在于:消息发送处理,具体如下;
5.根据权利要求2所述的一种基于kubernetes的弹性分布式消息队列实...
【专利技术属性】
技术研发人员:邓浩阳,柯少杰,王利成,蒋文维,卢志祥,
申请(专利权)人:天翼云科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。