身为程序员的你了解微服务吗?快去了解!不然怎么当架构师

自从微服务架构开始变得火热以后,越来越多的系统被拆解成了很多个细胞一样的微服务。设想一下,如果你的系统有100个微服务构成,要对这100个微服务进行管理,这绝对是一个不小的挑战。所以紧接着又出现了一堆让人头晕眼花的概念:服务注册发现,请求链路追踪,服务熔断,服务限流,服务管控配置,服务预警。还有就是一抓一大把的开源工具:Eurake,Zuul,Ribbon,hystrix,zipkin,dubbo,Sleuth,Elastic Search,grafna,Promethues。

这样,当我们在说服务治理时,是不是把这些概念和工具都用上了就能够很好的治理这100多个微服务了?稍微用Google或者baidu搜索一下“服务治理”这个关键字,就很容易发现其实整个社区对服务治理都没有形成一个共识,有人理解的服务治理是基于dubbo的服务注册和服务发现,有人理解的服务治理是一整套从请求网关,服务配置中心到日志中心架构体系。

所以这篇文章我想从现在的现象出发,分析这些概念和这些工具究竟是在解决什么问题,然后再尝试做一个简单的归纳和抽象,看看一个服务治理体系究竟应该解决哪些问题,而为了解决这些问题应该具备哪些能力。

服务治理的那些药

如果我们把服务治理类比成是在给一个人治病,那么上面提到的那些概念和工具,很明显就是治病的药了。既然有了这么多药了,那么不妨让我们先从这些药下手,看看这些流行的药都能是为了解决什么问题的,然后再看看这些问题之间存在什么关联。

让我们从Netflix全家桶开始,很多微服务架构都是基于这套全家桶的。作为一个视频流媒体行业的公司,能够自主开发并向社区贡献了这么多工具是我们应该表示感谢和敬意的。由于现在在使用这些工具的时候都是使用Spring Cloud封装好的模块,所以下面基于Spring cloud 的工具栈来进行介绍:

Eureka,这是一个用来注册服务的工具,通过简单的配置,在服务启动的时候就会自动注册到Eureka服务器上。

Hystrix,这是一个用来保护服务的熔断工具,虽然最近宣布已经停止维护更新了。

Zuul,这是一个用来对请求进行路由的服务网关工具,最近的zuul2采用了Netty实现了异步非阻塞编程模型。

Ribbon,这是一个用来分配请求的负载均衡工具

Feign,这是一个用来更方便调用其它服务的工具,也能进行负载均衡

Archaius,这是一个管理配置API的工具

Spring Cloud Config,用来对配置进行管理,可以把每个服务的配置放在远端服务器以方便进行配置修改

Spring Cloud Sleuth,Tracing采集工具包,对Zipkin,HTrace进行了封装

Spring Cloud Consul,封装了Consul操作,同样是用来进行服务注册发现的

Spring Cloud Zookeeper,封装了Zookeeper,也是用来进行服务注册发现的

Spring Cloud Gateway,给Spring MVC提供API网关功能的工具,里面也包含安全处理等特性

除了Spring Cloud和Netfix提供的这些工具以外,还有下面这些工具也经常在服务监控治理中被使用:

Dubbo,自称是一个高性能的Java RPC框架,但是其实广泛用于服务注册发现,提供三个核心能力:面向接口的远程方法调用,智能容错和负载均衡,服务注册发现。

logback,java日志框架,是log4j的升级版本

ElasticSearch,虽然是一个搜索引擎和分析框架,但因为提供很好的存储和查询性能,所以经常用于日志的采集和存储

Kibana,Elastic的可视化插件,可以配合Elastic使用可视化查询日志

logstash,Elastic的日志分析工具

grafna,时序性分析工具,提供漂亮的图形化界面

Promethues,强大系统监控和报警框架,提供多维度数据模型,灵活强大的查询语句,有多种可视化图形界面

Spring boot admin,用来管理Spring Boot应用的工具,提供可视化的用户界面

Zipkin,分布式追踪工具,用来采集程序的延时数据

Htrace,Apache的分布式追踪工具。

resilience4j,用来被Hystrix指定作为熔断的替代工具。

虽然这两个长长的列表已经罗列了超过20个各种工具了,但是这20多个也仅仅是整个微服务治理生态工具链中的一小部分,你肯定还知道一些我没有列出来的工具。由于这里我们的目的并不是找出所有的药,而是想分析一下这些流行的药都有什么特点,都是治什么病的。所以就先基于这些药,看看他们的共性是什么。

如果把功能相同的进行一下归类,会发现有这样几个主要功能:

服务注册发现:Eurake,Dobbo,Consul,ZooKeeper

服务配置:Spring Cloud Config,Archaius

服务熔断:Hystrix,resilience4j

网关:Zuul,Spring Cloud Gateway

负载均衡:Ribbon,Feign

追踪工具:Sleuth,Zipkin,Htrace

日志采集:logback,ElasticSearch

监控平台:Promethues,Kibana,grafna,Spring boot admin

这样面对这些纷繁复杂的工具我们有了一个基本的划分,当然即便是这8个分类还是有点多,而且相互之间的关系也不明确,为什么会有这8个分类的原因也不清楚。下面就一起深入一下,看看这些工具之间的内在关系究竟是什么。

服务治理究竟要治的是什么?

让我们先放下微服务,像《微服务设计》那本书中说的一样,把自己想象成一个城市规划师,我们的目标不是治理微服务,而是要治理一个城市的交通,那么我们会怎么思考?

在进行城市交通规划之前首先要做的第一个事情是收集信息,要能够知道这个城市发生了什么,所以在各个路口需要安装采集探头,记录车来车往的信息。有了信息以后就需要对信息进行分析了,那么就需要可视化的图形界面,能够一眼就看出什么地方出了问题,通往哪个工厂的路坏了。发现了问题就要解决问题了,限制一下拥堵路段的流量,把去往一个公园的车辆导向到另外一个类似的公园。最后,如果把城市作为一个国家来考虑,那么每个进入这个城市的车辆都需要进行检查,看看有没有携带违禁品,最后给这些不熟悉道路的外地车规划路线。通过上面这个思考的过程,我们发现要对一个城市进行治理的时候,第一要采集信息,然后要能够对采集的信息进行监控和分析,最后根据分析的结果采取对应的治理策略。另外从整体安全的角度考虑还需要一个守门人。

因此我们也用同样的思路来思考服务治理,网关就是整个整体的守门人,日志采集,追踪工具,服务注册发现都是用来采集信息的,然后需要监控平台来展现这些采集的信息,并进行监控和分析。最后根据分析的结果采取治理策略,有的服务快撑不住了要限流,有的服务坏了要熔断,并且还能够及时的调整这些服务的配置。

下面的脑图就从这四个方面构建了一个简易的服务治理体系:请求网关,信息采集,信息分析,治理策略

服务治理体系

作为对当前服务治理领域各种纷繁复杂工具的一次简单梳理,这个体系不一定是完全准确的。但是总不能每次说到服务治理的时候我们都把几十个工具拿出来看看能用哪个工具吧。我希望达到的目的是,当大家需要对微服务进行治理和监控的时候,能够用这个简易的体系做个参考,明确的知道在请求网关,信息采集,信息分析,治理策略这四个方面还缺少了什么东西。

全网最新架构实战文档:高并发+分布式+微服务+SpringBoot+Nginx。有需要的小伙伴们帮忙转发一下然后再关注我私信回复“架构”获取吧!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,377评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,390评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,967评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,344评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,441评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,492评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,497评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,274评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,732评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,008评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,184评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,837评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,520评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,156评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,407评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,056评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,074评论 2 352

推荐阅读更多精彩内容