CN114185691A - 一种基于Sidecar的UDP组播方法和*** - Google Patents
一种基于Sidecar的UDP组播方法和*** Download PDFInfo
- Publication number
- CN114185691A CN114185691A CN202111552119.6A CN202111552119A CN114185691A CN 114185691 A CN114185691 A CN 114185691A CN 202111552119 A CN202111552119 A CN 202111552119A CN 114185691 A CN114185691 A CN 114185691A
- Authority
- CN
- China
- Prior art keywords
- sidecar
- container group
- lock
- shared lock
- sharing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于Sidecar的UDP组播方法和***,所述方法包括:在服务实例的容器组中,部署Sidecar进程,所述Sidecar进程与所述容器组共享网络资源;所述Sidecar进程参与竞选共享锁;判断所述Sidecar进程是否获得共享锁;若是,部署所述Sidecar进程的容器组作为主容器组,放行主容器组基于UDP组播的出口流量;若否,部署所述Sidecar进程的容器组作为从容器组,拦截从容器组的出口流量。获得共享锁的主容器组通过UDP广播出口流量,传播到其它服务或实例中,同时实现同服务多实例的信息同步;没有得到共享锁的从容器组作为冗余实例,仅接收UDP广播信息,不对外传递出口流量;通过部署Sidecar进程的方式,在较少改动原业务代码的情况下,实现原有业务应用的迁移改造。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种基于Sidecar的UDP组播方法和***。
背景技术
随着云技术的发展,业务应用迁移到云平台成为不可逆转的趋势。但是云平台的环境与原业务应用不同,往往需要对业务应用进行修改或重新开发,迁移的成本高。用户期望在迁移过程中,能够较少地甚至不改动原业务代码的情况下,完成业务应用上云。目前的应用存在多个服务,服务中设置有缓存,该缓存的结果由上游服务计算得到;为了保证单个服务的高可用性和可靠性,通常一个服务会部署有多个实例,实例之间缓存一致,某个实例出现故障时,在一段时间内切换到该服务的另一实例,以支撑整体应用。实现高可用性。
以UDP组播通信方式为例,仅有提供服务的实例进行通信(读写操作),其它实例与该实例保持数据同步。目前,通常实例之间通信和共享内存的方式实现,但是该方式增加了应用扩容的成本和复杂度。
发明内容
针对现有技术中存在的上述技术问题,本发明提供提供一种基于Sidecar的UDP组播方法和***,通过注入的Sidecar进程,对网络流量规则进行修改,确保只有一个实例对外提供服务,同时保持实例之间的信息同步。
本发明公开了一种基于Sidecar的UDP组播方法,所述方法包括:在服务实例的容器组中,部署Sidecar进程,所述Sidecar进程与所述容器组共享网络资源;所述Sidecar进程参与竞选共享锁;判断所述Sidecar进程是否获得共享锁;若是,部署所述Sidecar进程的容器组作为主容器组,放行主容器组基于UDP组播的出口流量;若否,部署所述Sidecar进程的容器组作为从容器组,拦截从容器组的出口流量。
优选的,所述服务包括多个容器组,所述多个容器组通过UDP进行信息同步;所述共享锁为基于Etcd的分布式共享锁。
优选的,共享锁续租的方法:
获得共享锁的Sidecar进程,在共享锁租期时间内对共享锁进行续租;
未获得共享锁的Sidecar进程,在重试时间后,再次尝试获得共享锁。
优选的,共享锁租期为故障容忍时间的1/3至1/2,续租时间为故障容忍时间的1/4至1/2;
其中,预期最大故障时间=续租时间+重试时间。
优选的,主容器组故障的处理方法:
判断当前共享锁是否到期;
若到期,从容器组参与竞选共享锁;
获得共享锁的从容器组作为主容器组,并修改网络流量规则、放行基于UDP组播的出口流量。
优选的,重启故障的主容器组或从容器组,重启的主容器组丢失共享锁,作为从容器组。
优选的,监听sidecar进程的方法:
通过拨测探针监听所述sidecar进程或容器组;
判断所述sidecar进程或容器是否正常运行或健康;
若否,重启容器组或sidecar进程。
本发明还提供一种用于实现上述UDP组播方法的***,包括注入模块和共享锁管理模块;
所述注入模块用于在服务实例的容器组中注入Sidecar进程;
所述共享锁管理模块用于为参与竞选的sidecar进程分配共享锁;
所述Sidecar进程用于在获得共享锁时,修改网络流量规则、放行基于UDP组播的出口流量;在未获得共享锁时,修改网络流量规则、拦截出口流量。
优选的,所述***还包括监听模块,所述监听模块用于通过拨测探针监听容器组的健康状态,所述拨测探针包括存活探针和就绪探针。
优选的,所述主容器组在共享锁有效期内续租;
所述从容器组在重试时间后,尝试获得共享锁;
所述共享锁管理模块用于为共享锁续租,共享锁租期结束后重新分配共享锁。
与现有技术相比,本发明的有益效果为:获得共享锁的主容器组通过UDP广播出口流量,传播到其它服务或实例中,同时实现同服务多实例的信息同步;没有得到共享锁的从容器组作为冗余实例,仅接收UDP广播信息,不对外传递出口流量;通过部署Sidecar进程的方式,在较少改动原业务代码的情况下,实现原有业务应用的迁移改造。
附图说明
图1是本发明的基于Sidecar的UDP组播方法流程图;
图2是本发明的服务间UDP组播示意图;
图3是本发明的***逻辑框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图对本发明做进一步的详细描述:
一种基于sidecar的UDP组播方法,如图1所示,所述方法包括:
步骤101:在服务实例的容器组中,部署Sidecar进程,所述Sidecar进程与所述容器组共享网络资源。
Sidecar进程可以与容器组同时部署,也可以通过注入的方式部署。Istio中提供了手动和自动注入Sidecar的方式,本申请中不再赘述。Sidecar进程为在应用实例旁运行的单独进程,可以为应用程序添加许多功能,而无需在应用程序中添加额外的第三方组件,或修改应用程序的代码或配置。其中容器组可以运行在kubernetes中。共享的网络资源包括网络栈。
步骤102:所述Sidecar进程参与竞选共享锁。其中,共享锁为基于Etcd的分布式共享锁。
步骤103:判断所述Sidecar进程是否获得共享锁。
若是,执行步骤104:部署所述Sidecar进程的容器组作为主容器组,放行主容器组基于UDP组播的出口流量。可以通过所述Sidecar进程修改网络流量规则(iptables)实现。
若否,执行步骤105:部署所述Sidecar进程的容器组作为从容器组,拦截从容器组基于UDP组播的出口流量。
如图2所示,获得共享锁的主容器组通过UDP广播出口流量,传播到其它服务或实例中,如服务B和C,同时实现同服务内多实例的信息同步;而没有得到共享锁的从容器组作为冗余实例,仅接收UDP广播信息,不对外传递出口流量。通过部署Sidecar进程的方式,在较少改动原业务代码的情况下,实现原有业务应用的迁移改造。图2中,深色sidecar表示为获得共享锁。
其中,主容器组的sidecar进程,在共享锁租期时间内对共享锁进行续租;从容器组的sidecar进程,在重试时间(RetryPeriod)后,再次尝试获得共享锁。
在一个具体实施例中,共享锁租期(LeaseDuration)为故障容忍时间的1/3至1/2,续租时间(RenewDeadline)为故障容忍时间的1/4至1/2,防止主容器组故障时,对服务的影响。其中,忽略获得共享锁过程时间消耗的情况下,预期最大故障时间=续租时间+重试时间。
主容器组故障的处理过程如下:
步骤201:判断当前共享锁是否到期。主容器故障时,无法对共享锁进行续约,到期后共享锁失效。
若到期,执行步骤202:从容器组参与竞选共享锁。
步骤203:获得共享锁的从容器组作为主容器组,并修改网络流量规则、放行基于UDP组播的出口流量。
若没有到期,等待共享锁租期到期。
重启故障的主容器或从容器,其中主容器组重启后丢失共享锁,作为从容器组。
其中,可以通过监听的方式检测容器组故障:
步骤301:通过拨测探针监听所述Sidecar进程或容器组。所述拨测探针包括存活探针(livenessProbe)和就绪探针(readinessProbe)。
步骤302:判断所述Sidecar进程或容器是否正常运行或健康。
若否,执行步骤303:重启容器组或sidecar进程。
若是,持续监听。通过拨测探针监听,避免sidecar进程死亡对业务应用造成的影响。
本发明还提供一种用于实现上述UDP组播方法的***,如图3所示,包括注入模块1和共享锁管理模块2,
注入模块1用于在服务实例的容器组中注入Sidecar进程;
共享锁管理模块2用于为参与竞选的Sidecar进程分配共享锁;
所述Sidecar进程用于在获得共享锁时,修改网络流量规则、放行基于UDP组播的出口流量;在未获得共享锁时,修改网络流量规则、拦截出口流量。
本发明的***,还包括监听模块3,用于通过拨测探针监听容器组的健康状态,所述拨测探针包括存活探针和就绪探针。
所述主容器组在共享锁有效期内续租;
所述从容器组在重试时间后,尝试获得共享锁;
共享锁管理模块2用于为共享锁续租,共享锁租期结束后重新分配共享锁。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于Sidecar的UDP组播方法,其特征在于,所述方法包括:
在服务实例的容器组中,部署Sidecar进程,所述Sidecar进程与所述容器组共享网络资源;
所述Sidecar进程参与竞选共享锁;
判断所述Sidecar进程是否获得共享锁;
若是,部署所述Sidecar进程的容器组作为主容器组,放行主容器组基于UDP组播的出口流量;
若否,部署所述Sidecar进程的容器组作为从容器组,拦截从容器组的出口流量。
2.根据权利要求1所述的UDP组播方法,其特征在于,所述服务包括多个容器组,所述多个容器组通过UDP进行信息同步;
所述共享锁为基于Etcd的分布式共享锁。
3.根据权利要求1所述的UDP组播方法,其特征在于,还包括共享锁续租的方法:
获得共享锁的Sidecar进程,在共享锁租期时间内对共享锁进行续租;
未获得共享锁的Sidecar进程,在重试时间后,再次尝试获得共享锁。
4.根据权利要求3所述的UDP组播方法,其特征在于,共享锁租期为故障容忍时间的1/3至1/2,续租时间为故障容忍时间的1/4至1/2;
其中,预期最大故障时间=续租时间+重试时间。
5.根据权利要求3所述的UDP组播方法,其特征在于,还包括主容器组故障的处理方法:
判断当前共享锁是否到期;
若到期,从容器组参与竞选共享锁;
获得共享锁的从容器组作为主容器组,并修改网络流量规则、放行基于UDP组播的出口流量。
6.根据权利要求5所述的UDP组播方法,其特征在于,重启故障的主容器组或从容器组,重启的主容器组丢失共享锁,作为从容器组。
7.根据权利要求3所述的UDP组播方法,其特征在于,还包括监听sidecar进程的方法:
通过拨测探针监听所述sidecar进程或容器组;
判断所述sidecar进程或容器是否正常运行或健康;
若否,重启容器组或sidecar进程。
8.一种用于实现如权利要求1-7任一项所述UDP组播方法的***,其特征在于,包括注入模块和共享锁管理模块;
所述注入模块用于在服务实例的容器组中注入Sidecar进程;
所述共享锁管理模块用于为参与竞选的sidecar进程分配共享锁;
所述Sidecar进程用于在获得共享锁时,修改网络流量规则、放行基于UDP组播的出口流量;在未获得共享锁时,修改网络流量规则、拦截出口流量。
9.根据权利要求8所述的***,其特征在于,还包括监听模块,所述监听模块用于通过拨测探针监听容器组的健康状态,所述拨测探针包括存活探针和就绪探针。
10.根据权利要求8所述的***,其特征在于,所述主容器组在共享锁有效期内续租;
所述从容器组在重试时间后,尝试获得共享锁;
所述共享锁管理模块用于为共享锁续租,共享锁租期结束后重新分配共享锁。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111552119.6A CN114185691A (zh) | 2021-12-17 | 2021-12-17 | 一种基于Sidecar的UDP组播方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111552119.6A CN114185691A (zh) | 2021-12-17 | 2021-12-17 | 一种基于Sidecar的UDP组播方法和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114185691A true CN114185691A (zh) | 2022-03-15 |
Family
ID=80605497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111552119.6A Pending CN114185691A (zh) | 2021-12-17 | 2021-12-17 | 一种基于Sidecar的UDP组播方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114185691A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114826906A (zh) * | 2022-04-13 | 2022-07-29 | 北京奇艺世纪科技有限公司 | 流量控制方法、装置、电子设备及存储介质 |
-
2021
- 2021-12-17 CN CN202111552119.6A patent/CN114185691A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114826906A (zh) * | 2022-04-13 | 2022-07-29 | 北京奇艺世纪科技有限公司 | 流量控制方法、装置、电子设备及存储介质 |
CN114826906B (zh) * | 2022-04-13 | 2023-09-22 | 北京奇艺世纪科技有限公司 | 流量控制方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107295080B (zh) | 应用于分布式服务器集群的数据存储方法和服务器 | |
EP3210367B1 (en) | System and method for disaster recovery of cloud applications | |
KR102024694B1 (ko) | 블록체인 기반의 다수의 서비스 노드를 사용하는 탈중앙화 서비스 플랫폼 | |
KR20010072379A (ko) | 내고장성 컴퓨터 시스템 | |
CN112955874A (zh) | 在使用区块链的机器学习的去中心化模型构建中进行自修复的***及方法 | |
CN112558997A (zh) | 一种部署应用的方法及装置 | |
CN108418859B (zh) | 写数据的方法和装置 | |
CN108600284B (zh) | 一种基于Ceph的虚拟机高可用实现方法及*** | |
CN114185558A (zh) | 基于K8s的原生应用选主方法、装置及存储介质 | |
CN114185691A (zh) | 一种基于Sidecar的UDP组播方法和*** | |
CN104753987A (zh) | 一种分布式会话管理方法及*** | |
WO1997049034A1 (fr) | Systeme de prise en charge de taches | |
CN111241200B (zh) | 基于SQLite数据库的主备同步处理方法及装置 | |
CN108241616B (zh) | 消息推送方法和装置 | |
CN111338848B (zh) | 故障应用副本处理方法、装置、计算机设备和存储介质 | |
CN114390059A (zh) | 一种业务处理***及业务处理方法 | |
CN110502460B (zh) | 数据处理的方法和节点 | |
CN103546569A (zh) | 基于策略共享的业务处理方法、节点和*** | |
CN116827966B (zh) | 一种数据处理方法与*** | |
CN116800604B (zh) | 可配置的激光通信设备控制方法、装置、设备及介质 | |
CN115643237B (zh) | 一种用于会议的数据处理*** | |
CN115905271B (zh) | 一种病毒库更新方法、装置及多引擎检测*** | |
CN115134220B (zh) | 主备服务器切换方法及装置、计算设备和存储介质 | |
US7587632B2 (en) | High availability, high performance software component architecture | |
CN107153594A (zh) | 分布式数据库***的ha组件选主方法及其*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |