摘要:年月日社区技术支持计划全面启动,本文是研发人员在社区答疑过程中关于的一些心得和思考。初识基于的消息总线可以很好的与前端兼容,让消息的传递不再是后端的专利。
2016年2月14日「Rancher社区技术支持计划」全面启动,本文是Rancher研发人员在社区答疑过程中关于Subscribe Rancher Events的一些心得和思考。
引言几乎每个大型的分布式的集群软件,都离不开一样东西,就是所谓的message bus(消息总线), 它就如同人体的血管一样,连通着各个组件,相互协调,一起工作。 与很多同类软件不同的是,Rancher使用的基于websocket协议实现的消息总线, Rancher不会依赖任何MQ,基于websocket的实现十分轻量级, 同时在各种语言库的支持上,也毫无压力,毕竟websocket是HTTP的标准规范之一。
初识Rancher Events基于websocket的消息总线可以很好的与前端兼容,让消息的传递不再是后端的专利。 在Rancher UI上,很容易就能捕获到rancher events,比如:
这里面监听的事件名称是resource.change,这个resource.change在前端UI上有很大的用处, 其实我们都知道,很多POST形式的create请求并不是同步返回结果的,因为调度引擎需要处理, 这个等待的过程中,当然不能前端一直wait,所以做法都是发起create后直接返回HTTP 202, 转入后台执行后,Rancher的后端会把创建的执行过程中间状态不断发送给消息总线, 那么前端通过监听resource.change就会获得这些中间状态,这样在UI上就可以给用户一个很好的反馈体验。
当然Rancher Events并不是只有resource.change,比如在Iaas Events集合中就有如下这些:
除了Events的事件定义,当然还有如何去subscribe 这些events,这部分内容在之前的文章Rancher event机制及其实践指南中有所涉猎,便不赘言。
Subscribe Rancher Events的架构模式Rancher的体系内,很多微服务的组件都是基于Subscribe Rancher Events这种架构,举个例子来看, 以rancher-metadata组件为例:
metadata服务可以提供当前host的元数据查询,我们可以很容器的知道env内的stack/service/container的情况, 这些数据其实由rancher-server也就是cattle引擎生成的,那么生成之后怎么发送给各个agent呢? 其实就是metadata进行了subscribe rancher events,当然它只监听了config.update事件, 只要这个事件有通知,metadata服务便会下载新的元数据,这样就达到了不断更新元数据的目的。
随着深入的使用Rancher,肯定会有一些伙伴需要对Rancher进行扩展,那就需要自行研发了, 毕竟常见的方式就是监听一些事件做一些内部处理逻辑,并在DB中存入一些数据, 同时暴露API服务,架构如下:
如果需要做HA,可能需要scale多个这样的服务,那么架构就变成这样:
这里其实会有一个问题,如果你监听了一些广播事件,那么实际上每个实例都会收到同样的事件, 那么你的处理逻辑就要注意了,尤其是在处理向DB中写数据时,一定要考虑到这样的情况。
比如,可以只有其中一个实例来监听广播事件,这样不会导致事件重复收取:
Event Handler要考虑一定failover机制,这样事件收取不会长时间中断。
Rancher Events有一些非广播事件,那么就需要在subscribe的时候指定一些特殊参数, 这样事件就会只发送给注册方,不会发送给每个节点,比如:
总结此文算是这段时间做Rancher服务扩展的心得,深度参与一个开源软件最终肯定会希望去改动它扩展它。 这也是客观需求所致,开源软件可以拿来即用,但是真正可用实用,必须加以改造,适应自身需求。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/26804.html
摘要:本次分享就介绍一下的机制,由于相关内容文档极其欠缺,本人也只是通过实践和代码阅读分析其原理,如有谬误欢迎指正。能够管理多的同时又拆分出各种服务组件,机制是必不可少的。为实现机制,通常我们会采用等中间件来实现。 我们的Rancher官方技术社区已经创立些许时日了,相信通过我们的线下meetup和线上布道工作,很多朋友对Rancher的使用已经掌握得很纯熟了。一些高级用户开始真正把自己的业...
摘要:官方于月日发布了其容器部署与管理平台的最新版本,。架构总览在版本的整体架构图如下图所示上,引擎向下深入演化成了基础设施引擎,这一点上在时代也早有体现。基础设施引擎初次安装版本,会发现多了如下图所示的明显标识,默认的引擎需要安装等服务。 Rancher Labs官方于12月1日发布了其容器部署与管理平台Rancher的最新版本,Rancher v1.2。Rancher v1.2可以说是一...
摘要:官方于月日发布了其容器部署与管理平台的最新版本,。架构总览在版本的整体架构图如下图所示上,引擎向下深入演化成了基础设施引擎,这一点上在时代也早有体现。基础设施引擎初次安装版本,会发现多了如下图所示的明显标识,默认的引擎需要安装等服务。 Rancher Labs官方于12月1日发布了其容器部署与管理平台Rancher的最新版本,Rancher v1.2。Rancher v1.2可以说是一...
摘要:组件会给每个分配一个,则替代了的来实现服务发现,在的容器内部依然可以访问服务来获取元数据信息。的需要在中实现一个,目前只有,而则维护了自己的版本在其中提供了。 在Rancher 1.0版本开始,Rancher逐步增加了Kubernetes、Swarm、Mesos等多编排引擎的支持,很多朋友就此产生了疑惑,诸如Cattle引擎和这几个之间到底什么关系?每种引擎是如何支持的?自家的业务环境...
摘要:组件会给每个分配一个,则替代了的来实现服务发现,在的容器内部依然可以访问服务来获取元数据信息。的需要在中实现一个,目前只有,而则维护了自己的版本在其中提供了。 在Rancher 1.0版本开始,Rancher逐步增加了Kubernetes、Swarm、Mesos等多编排引擎的支持,很多朋友就此产生了疑惑,诸如Cattle引擎和这几个之间到底什么关系?每种引擎是如何支持的?自家的业务环境...
阅读 2623·2021-11-18 10:07
阅读 1083·2021-08-03 14:04
阅读 725·2019-08-30 13:08
阅读 2578·2019-08-29 15:33
阅读 1086·2019-08-29 14:07
阅读 2981·2019-08-29 14:04
阅读 1435·2019-08-29 11:19
阅读 1143·2019-08-29 10:59