谈谈服务治理

  本期我们组的技术分享,打算跟大家讲讲服务治理。我在上篇文章中介绍了我们美团.点评北京总部用的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 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

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

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

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

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

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

5206
来自专栏Java架构沉思录

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

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

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

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

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

5147
来自专栏大数据挖掘DT机器学习

如何入门 Python 爬虫?

刚做完一个跟python爬虫相关的项目,也来说说自己的经验,希望对想学习python爬虫的人有所帮助。 既然问的是如何入门,我想一定是助学者,而且我觉...

3869
来自专栏云计算D1net

如何管理好企业的数据

灾难恢复没有银弹。一旦发生停机,企业高管们会条件反射地以最快地速度采取各种灾难恢复手段。 虽然大多数IT主管和数据管理专家承认没有万全的安全解决方案来保...

3454
来自专栏喔家ArchiSelf

来吧,一个IoT应用设计

大量的研究表明,智能家居和可穿戴设备是目前最流行的物联网应用。嵌入式的MCU是这些物联网应用程序的核心。 然而,为了在这个快速而有竞争力的市场上成为一个有效的基...

1752
来自专栏程序人生 阅读快乐

编写高质量代码:改善Python程序的91个建议

在通往“Python技术殿堂”的路上,本书将为你编写健壮、优雅、高质量的Python代码提供切实帮助!内容全部由Python编码的最佳实践组成,从基本原则、惯用...

1173
来自专栏人人都是极客

计算机的基本组成

严格来讲计算机从诞生到现在经历了很多阶段,已经发展成为一种自动地、高速地、精确地进行信息处理的电子设备,也是20世纪的重大发明之一。

1422
来自专栏编程坑太多

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

1202

扫码关注云+社区

领取腾讯云代金券