谈谈服务治理

  本期我们组的技术分享,打算跟大家讲讲服务治理。我在上篇文章中介绍了我们美团.点评北京总部用的OCTO框架,其实在上海点评部门用的是另一套Pigeon。这两套框架都很重。这是和我们的业务有关的,其实服务治理这个东西都创业公司到成熟的大公司都在用,只是做到的程度不同。

  先说说服务治理的边界。本质上任何能提升服务可用性,性能,让服务更稳定等等,只要是能让服务运行的更好,都属于服务治理的范畴。服务治理比较常见的话题:服务发现,服务变更管理,服务监控,服务扩容缩容,服务自我保护,服务降级,服务授权防攻击,服务上线验证和灰度发布,服务问题定位和跟踪,服务负载,服务实例的调度等等。

  说服务治理就要先聊聊服务。从业务角度而言,服务是一个可重复的任务。我是个做业务的,业务可以被粗粒度的划分为一系列粗粒度的服务和流程。这本质上符合SOA架构的风格,而现在比较流行的微服务出现实际上应当归功于SOA原则的成功。而微服务将服务划分的更细,更多,会导致出问题的概率变大。这时候,服务治理的手段没有进步的话,实际上服务的压力是变大了。所以大家在选择架构的时候,需要按照自己的业务发展现状和趋势合理的辩证的做决断。就好像我在上篇文章里举的例子:如果要建一间房子,可能随便建个土房子或者茅草房子就能用几十年,但是随着规模的扩大,建成四合院就要讲究格局,建成一个小区,建成一座城市,就需要运用各种工程学的知识更加统筹的规划。这就是为什么我要来美团。我在乐视其实过得很舒服,很自由。因为我家微微一笑很倾城的男神老大不仅英俊帅气,智商情商双高,而且管理风格open,很合适我这种有自己想法的下属。但是乐视各个部门更像是一个村落,大家都在各自建各自的房子,好处是有才能的人可以比较自由的发挥,缺点是格局不够统一,各个部门做了很多重复的工作。所以乐视出来的人有水平非常高的,也有水平非常一般的。我个人觉得如果你个人能力非常好,可以去乐视试一试,说不定可以发挥自己的潜能。但是对于我而言,我发现了自己格局的问题,如果我坚持还是要去阿里的话,到那边也是个拧螺丝的,平台很好,但是能不能发挥是个问题。而来美团,我至少能够得到的保证是:完成一个从对工作负责到对结果负责的转变。什么意思呢?我来这边,我们架构师说我来之前,他需要找各个开发去告诉他们我们的工作,每个开发都听明白了,然后回到工位完成了自己的那份工作。结果中间衔接的部分职责模糊的部分就很可能被漏掉了。我来了,我的工作是对结果负责,那么涉及到内部职责的划分,上下游的对接和业务了解。任何能让结果变得更好的事情都属于我的职责范围。这和服务治理的理念不谋而合,这就是为什么我要来研究服务治理。

  我也自己创过业,做的最小的项目本质上也用到了服务治理相关的东西,就是nginx。nginx本身不处理业务逻辑。它做了什么事情呢?服务发现,负载均衡。我自己觉得与其将其归类为一个具体的服务组件,划分为服务治理组件更为合适。nginx的服务发现大家都知道是在upstream里配置的,可以做DNS动态解析。服务更变修改配置文件后用nginx -s reload让nginx发现最新的配置,可以说是一个轻巧简单的服务发现机制。nginx的负载均衡大家说的比较多了,我就不详述了。但是它做负载均衡的前提是它还实现了服务的分离。它可以将前端静态请求转发到静态服务上,动态api转发到api服务上,rpc调用转发到rpc服务上。nginx的服务治理能力还体现在所有这些分离的服务,请求的log都是走nginx服务,我们可以更方便的观察监控请求,所以相对于分散的服务有更好的治理能力的。

  服务再大一些,就是用到另一个大家熟知的东西,就是zookeeper来做配置变更管理。有一本书叫做《从paxos到zookeeper》讲了zookeeper的内部实现,怎样保证其一致性和分区一致性。但是zookeeper的最大问题是网络抖动对其的影响。为了解决这个问题,美团.点评的OCTO服务治理框架采用了本地代理。

  服务自动扩容缩容对于美团.点评这样的,交易时间高峰基本在中午11点到13点。这段时间交易量大,实际上是需要扩容来保证的。交易量低的时段机器闲置造成很大的资源浪费。这种自动扩容缩容需要区分是正常的请求扩容还是异常请求扩容。一个环节扩容会不会给其他环节造成更大的压力,反而压垮整个链路。如果是异常请求,这个时候应该采用的是拒绝请求。比如有数据库慢查询,显示调用结果是线程池满了,要排队。如果这时候采取了扩容,反而压垮数据库。这时候应该是报警而不是扩容。

  在乐视的时候,阿里的阳哥自己开发了一个基于redis的异常日志收集器。这个其实也属于服务治理的范畴,这是一个统一的服务监控报警机制。报警是触发门槛很低的异常处理机制。所以我在乐视的时候邮箱,手机短信报警太多了,我就想换了工作再也不用收这些报警了。结果,好吧,换工作后多了N倍。异常再达到一定量级,可能会触发过载保护。过载保护再不解决问题就要降级了。我之前博客里也提到的乐视用guava的RateLimiter做了限流,这就是过载保护的一种方式。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程坑太多

『高级篇』docker容器来说软件架构的进化(二)

902
来自专栏大魏分享(微信公众号:david-share)

从Gartner IT成熟度模型谈Linux运维

前言 本文参考IT基础架构和运维成熟度模型中的技术项,探讨Linux运维相关内容。本文由我和我的另外两名同事一起完成。 从基础架构和IT运维成熟度模型谈起 Ga...

3766
来自专栏java一日一条

从“小白”到“白帽子黑客”的实用指南

早先,我也是半个黑客,经常在学校的教务系统看妹子。通过 URL 注入的方式,可以轻松进入别人的个人信息页。后来,又通过某种方式发现了管理员的账号,管理员又没有修...

862
来自专栏花叔的专栏

“公众号数据助手”小程序真的出现了

额,老早之前花叔就想做一个公众号管理相关的小程序,然而微信今天就推出了一个类似的小程序,好了,我不用做了。 回归正题,介绍一下这个小程序吧,通过长按以下二维码能...

40611
来自专栏大数据和云计算技术

简单梳理跨数据中心数据库

有2年没有摸数据库了,重新学习下。数据库是IT系统的基石,小到一个个人站点,大到类似Google,阿里,腾讯这种大公司,里面都运行着各种各样的数据库,成千上万的...

4237
来自专栏知晓程序

想要津津有味地撸代码?这 3 款小程序你一定用得到

但是,不是所有的程序员,都有机会跪在爱范儿前端女王大人的旁边,享受零 bug 光环的福泽。

1093
来自专栏Java架构沉思录

知乎大V@Phodal:小白也能看懂的Web安全进阶指南

早先,我也是半个黑客,经常在学校的教务系统看妹子。通过 URL 注入的方式,可以轻松进入别人的个人信息页。后来,又通过某种方式发现了管理员的账号,管理员又没有修...

1162
来自专栏java一日一条

源代码的寿命

看看你现在日常工作中的代码。已经运行了多久了?代码有多老了?有六个月?一年?可能都有五年这么久了吧?十年?二十年呢?!这样的代码有多老了?不到10%?还是一半?...

641
来自专栏互联网数据官iCDO

5招教你轻松获得手机App好评

引言:在应用程序方面,意见和评论也会影响到应用程序商店搜索结果的可见性,以及它们在app store中出现的概率。因此,如何能获得更多的好评呢?本文教你5招。 ...

3445

云监控入门

云监控是一个对基于云的服务、应用程序与基础架构进行评估、监控与管理的工作。公司利用各种应用程序监控工具来监视基于云的应用程序。下面我们来看看它是如何工作的,以及...

2167

扫码关注云+社区