资讯专栏INFORMATION COLUMN

gorouter调研

seanlook / 2823人阅读

摘要:最近在公司调研集群方案,涉及到这一层,有两个可选方案,源于的源于的因为对实现的比较有好感,就主要调研了下。介绍项目地址来源于,后文简称为。官方地址项目地址架构中所处的位置无论是在还是在我们设计的容器体系中,都是作为流量入口存在。

最近在公司调研docker集群方案,涉及到 router这一层,有两个可选方案,源于cloudfoundry的gorouter & 源于dotcloud的 hipache, 因为对golang实现的gorouter比较有好感,就主要调研了下。

gorouter介绍

项目地址:https://github.com/cloudfoundry/gorouter/
Gorouter来源于CloudFoundry,后文简称为router。它是整个平台的流量入口,负责分发所有的http请求到对应的instance。它在内存中维护了一张路由表,记录了域名与实例的对应关系,所谓的实例自动迁移,靠得就是这张路由表,某实例宕掉了,就从路由表中剔除,新实例创建了,就加入路由表。

Gorouter依赖

Go
Gorouter使用golang编写,因此环境需要预先安装go编译环境
Golang Url:https://golang.org/dl/

Gnatsd
来源cloudfoundry,是一个开源轻量高性能的消息系统,gorouter依赖它来作为消息系统,进行PUB/SUB操作。
官方地址:http://nats.io/
项目地址:https://github.com/apcera/gnatsd

Gorouter架构中所处的位置

无论是在cloudfoundry还是在我们设计的容器体系中,都是作为流量入口存在。

在CloudFoundry架构中的位置:

在设计的容器方案中的位置:

Gorouter性能

需要了解两个组件的性能,一个是gorouter本身,另一个是他依赖的Gnatsd,总体感觉性能不错。
Gorouter,官网没有它的proxy性能数据,只是说它的逻辑简单,性能很好,后期可以专门对它的转发性能做一下测试。
Gnatsd:性能数据来自其官方:

  

With gnatsd (Golang-based server), NATS can send up to 6 MILLION MESSAGES PER SECOND.
Here"s a detailed Performance Comparison between NATS, Redis, NSQ, RabbitMQ, and more. The below chart compares throughput for 4k payloads:

Gorouter部署

一个比较典型的gorouter部署架构为:

其中,需要关注的是RouteFlush这一块,他的作用是将需要进行proxy的uri rule publish给gnatsd,从而使gorouter可以从gnatsd处sub到&生效,同时,以一定的频率对现有rule进行publish 刷新,因为gorouter只对rule保留时间T(在config中配置,默认120s)。
Routeflush需要自行实现。

Gorouter使用

Goroute监听router.register、router.unregister等几个频道。
Publish router.register&router.unregister的数据体格式为:

{
"host": "127.0.0.1", //后端映射的host
"port": 4567, //后端映射的port
"uris": [
"my_first_url.vcap.me", //对应的域名1
"my_second_url.vcap.me" //对应的域名2
],
"tags": {
"another_key": "another_value",
"some_key": "some_value"
},
"app": "some_app_guid",//app id
"private_instance_id": "some_app_instance_id" // instance id
} 

gorouter自带两个http终端:
/varz: 自身状态监控
/routes: 目前承载的proxy rules list
具体说明&config说明见官方说明:https://github.com/cloudfoundry/gorouter

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26403.html

相关文章

  • 构建与定制:唯品会 PaaS 基于 Kubernetes 的实践

    摘要:基于年底或年初没有推广的现状,唯品会部门目前已经做了两年的时间。唯品会现状唯品会目前线上有一千多个域,每个域之间相互的依赖比较复杂,每次的部署发布困难。这是唯品会的架构,主要包含持续集成和持续部署。 数人云上海&深圳两地容器之Mesos/K8S/Swarm三国演义的嘉宾精彩实录第三更来啦。唯品会是数人云Meetup的老朋友,去年曾做过RPC服务框架和Mesos容器化的分享。本次分享中,...

    JackJiang 评论0 收藏0
  • 基于kubernetes的docker集群实践

    摘要:健康监控检查,可以说是集群中最重要的一部分了。我们在这里没有使用推荐的方式,我们自己将其与内部的系统做了结合,通过来对整个集群进行监控报警自动化操作。 在公司内部,基于kubernetes实现了简单的docker应用集群系统,拿出来和大家分享下,在这个系统中,实现了应用的自动部署、动态扩容、节点切换、健康检查、AB式版本更新等功能,也欢迎大家将各自的实现也分享给我。 整体架构 整体架构...

    meislzhua 评论0 收藏0
  • 基于kubernetes的docker集群实践

    摘要:健康监控检查,可以说是集群中最重要的一部分了。我们在这里没有使用推荐的方式,我们自己将其与内部的系统做了结合,通过来对整个集群进行监控报警自动化操作。 在公司内部,基于kubernetes实现了简单的docker应用集群系统,拿出来和大家分享下,在这个系统中,实现了应用的自动部署、动态扩容、节点切换、健康检查、AB式版本更新等功能,也欢迎大家将各自的实现也分享给我。 整体架构 整体架构...

    Flink_China 评论0 收藏0
  • 2019年前端的3个趋势

    摘要:组件成为前端最基本的物料,融合在组件中的方案日趋成熟。组件成为最基本的前端物料,让组件化更彻底在的调研报告中,开发者有愿意继续,有愿意继续。需要留意的是,有表示对感兴趣,因此获得的最感兴趣奖。 简介: JavaScript 应用范围广泛,静态类型语言 TypeScript 会继续得到更多开发者的青睐。 组件成为前端最基本的物料,CSS 融合在组件中(CSS in JS)的方案日趋成熟...

    yanwei 评论0 收藏0

发表评论

0条评论

seanlook

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<