Web服务架构之路---路由相关

简介

    在上一篇中介绍了中间服务平台,其中配合了一个重要的RouteAgent来查找路由。本片将重点介绍目前的路由体系是如何构建的。以及对这一片的设想,以及更多可以配合做的事情。


架构设计

 


1. 配置中心提供运维和开发配置界面,写入命令号对应的服务服务部署的机器列表,选用的路由方式,同步路由。


2. 每台机器都安装有一个daemon,每间隔15s避免会从配置最新,携带版本号拉取最新配置

延伸以下思考,可以给出如下问题。

  1) DB每隔15s拉取,获取最新配置的最大间隔可能为30s,只能算作准实时。

  2) 读取操作性能方面,1000台机器的读取量大概在每秒钟60次。估计单台MySql撑2000台的集群就有问题。不过利用Master-Slave的模型解决,可以继续扩充。呵呵~~

  3) 综合前两点,我们可以考虑zookeeper进行推送。但是前期不需要构建和维护zookeeper集群,觉得比较麻烦。

  4) 为了避免15s中每次固定睡眠可能导致局部请求峰值。daemon在请求时进行会进行错开,起到一定削峰的作用。


3. daemon获取最新配置后,优先写入路由配置文件,然后载入共享内存。在配置中心不可用的情况下,每台机器可以利用最新配置保持运行。避免配置中心挂掉导致集群不可用


4. 图中RA表示RouteAgent, 实际上是一个路由算法C++库。Java可以利用JNI调用该库,python,php等一些其他脚本语言,可以利用写扩展的方式进行支持。目前该库做得较为简单,支持取模路由和轮训算法。后续计划增加基于统计的相关算法,来提高服务可用性。


小技巧

1. RA读取共享内存,存在读写。如果避免加锁?因为这个调用非常频繁,进程间加锁,对性能影响较大。

    在平台中,写入共享内存块不频繁,读操作频繁。我采用了用双共享内存块的方案。就是存在两块一样的共享内存,头部公用。daemon载入共享内存时,写入的是一个离线共享内存中,进行全量写。写完成后与在线恭喜内存块进行切换(切换只是一个写标志操作)。


本节介绍路由服务先到此为止,下一篇开始介绍数据组件DAL_SET

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值