前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谈谈服务治理

谈谈服务治理

作者头像
静儿
发布2018-07-02 15:51:33
1.2K0
发布2018-07-02 15:51:33
举报
文章被收录于专栏:编程一生编程一生

  本期我们组的技术分享,打算跟大家讲讲服务治理。我在上篇文章中介绍了我们美团.点评北京总部用的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做了限流,这就是过载保护的一种方式。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-09-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档