加入收藏 | 设为首页 | 会员中心 | 我要投稿 桂林站长网 (https://www.0773zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

链家网技术总监陈尔冬:链家网的第三种运维

发布时间:2021-01-12 13:10:15 所属栏目:安全 来源:网络整理
导读:《链家网技术总监陈尔冬:链家网的第三种运维》要点: 本文介绍了链家网技术总监陈尔冬:链家网的第三种运维,希望对您有用。如果有疑问,可以联系我们。 作者简介: 陈尔冬 链家网 技术总监 曾于新浪任职技术总监,负责私有云平台研发与运维并支撑新浪微博从

我们先做一些假设,设最大超时时间是 M,初始连接时间是 0,以后一旦有过连接就有统计了,这个连接用时设为Tt,本次连接的用时就是 Tc,现在队列中已经有进程数为 N.有了 M,N,Tt,Tc,当来了一个新的连接,入不入队列呢?

需要判断 Tt*N 是否小于等于 M.如果小于等于 M,那么就入队列,如果大于,直接结束,返回一个错误.如果连接完成了,比如入队列了,有一个连接完成了,我们会对这个连接记一个应用返回的响应时间 Tc,将 (Tt+Tc)/2 作为新的 Tt 值.

这样就给他上一次连接做了一次反馈,如果上一个连接很快,它的历史连接时间就会越来越短,如果上一个连接很慢,它的历史连接时间就会越来越长.

算法讲起来比较抽象,给大家用实例解释一下.首先设置连接总队列的时长,比如说 1 秒.随后处理了一个连接,如果这个连接首包是 500 毫秒,这个队列里面我就可以让他进两个连接.

如果下一个连接完成了,用的是 100 毫秒,下次我就可以让他进三个.如果变长了,变成 1 秒甚至超过 1 秒了,那么未来只会让队列保持一个连接,一个以上的连接通通反馈失败.

这样的一个基础设施就实现了刚才讲的功能,如果被调用方出现延迟,就给超出延迟的连接快速的反馈失败.如果他还重试,我们就把这个重试的反馈中断,不让它调用到被调用方.

5、另类的命名服务

5.1 命名服务初探

命名服务不是一个新的概念,现在各位的公司大概都有自己的命名服务.实际上在有互联网的时候就有命名服务.命名服务就有点像我小时候的黄页.

小时候去我父母的公司玩,那时候电话数量很少,可能也就每一个国企有一部电话,每一个机关单位有一个电话.这时候每个单位都会在电话旁放一本黄页,这个黄页里能查到所有的机关单位的电话.基本上查一下,交通局是什么电话,就可以打电话打过去,我觉得很像我们的命名服务.

说到命名服务有很多方案,肯定有一种方案大家耳熟能详,那就是 etcd.我们也用,但不仅仅用 etcd,还用了 kubernetes 项目中用到的 SkyDNS.

我加入到这些团队的时候,不管是新浪、华为还是链家,我来的时候基础设施已经在用了.可能在已经有基础设施里面有很多环节没有命名服务,大家是直接 IP 端口连的.

这时候我给他们建议,我建议大家用命名服务,开发工程师说你建议很好,我们会考虑,但是我现在开发的周期很紧张,我的工期很短,我的工作压力很大,能不能你帮我做.

这个时候我就愁了,因为我是系统团队,不能改应用代码嘛.如果用 etcd 做命名服务的话,需要应用程序主动去联命名服务获取后端拓扑,再去连真正的服务器,这可能要涉及代码改动.所以我想这么个辙,DNS 协议的命名服务.

5.2 基于DNS的命名服务

我在新浪也做过,但是这个基础设施跟在新浪的时候已经不一样了.DNS 命名服务有什么优势呢?

如果你的代码不想改,比如你连一个ip地址,你只需要把 IP 地址改成域名就可以了,域名就是我们互联网最早也是最基础的命名服务.

域名作为命名服务的接口有一个问题,我们知道域名是有缓存的,缓存时间称作 TTL.比如我设 30 秒,是为了不让权威域名服务器过载,不能每一个域名都调用权威域名服务器,那权威域名服务器还不被压垮了?

(编辑:桂林站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!