微服务学习导航

希望给你3-5分钟的碎片化学习,可能是坐地铁、等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注。

如何学习

  学习是一个人的核心竞争力,终生持续学习是别人离不开你的秘诀,如果能分享和教会别人,你的收获可能是双边甚至更多。就技术领域的学习,我还是一个在海边玩耍的小孩,时不时因为捡到一块漂亮的石头就开心不已。

学习金字塔

  学习金字塔是个被熟知的好方法,如下图所示。

  该方法至少内置了两层含义:1.学习是循序渐进的过程,不要希望走捷径,刷聪明才智。2.学习是从理论到实践再到理论的反复迭代的过程,不要觉得一个闭环就能搞的定。如果人家恭维觉得你是某一方面的专家,你要有所保留,不要掉进赞美的坑里。

  微服务学习导航_第1张图片

  学习好比小孩玩乐高游戏,首先要明确要拼什么,是航空母舰还是直升机,其次要尽可能的占有更多有价值的学习资源,也就是要有足够的的积木,接下来就是看说明书,按步骤,分阶段,按级别的动手过程。

  所以回到我们的主题,我们要学习的是微服务这个总目标,接下来搜集尽可能多的有价值的资源,最后查一查我们的说明书或者叫地图,了解学习图谱和路径了(百度脑图)。下面接着要规划的就是我的脑图和学习要点,如果您有更好的方式,请多指教。

学习路径

  

  学习路径属于学习的细节部分,根据以上的路径,我们需要整体了解微服务整片森林的构成,也是就后面要展示的思维导图,随后导图的每个构件需要逐个拆分梳理,比如微服务包含的六大组建,最后我们开始行动,各个击破。在分阶段学习的过程中,我们至少要循序渐进,由简入深,避免一开始拔高门槛,导致的心理受挫。最后一环,通过讨论,分享进行知识的盘点和复习、固话。

  提到学习方法,另外补充一个左耳朵耗子提出ARTS的学习小技巧,即每周至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章。(也就是 Algorithm、Review、Tip、Share 简称 ARTS)需要坚持至少一年。我觉得这种方式也很不错,不过那是学习的细节和学习毅力的问题了,但凡有这种好习惯的人,值得敬仰,我知道的有阮一峰前辈有这种持续的学习毅力。

学习什么

  微服务已经不是什么新技术,只是闻道有先后,大厂和趋势在前行,你不得不迈开脚步(可能你反对,但是趋势挡不住),当微服务扑面而来的时候,你是否还在观望或者犹豫,当你恍然大悟的时候,你是否又迷茫不知所措?是的,我们需要一份微服务的脑图,也许这份图谱不一定是标准答案,但是在你做参考和评估的时候,希望能对你有所帮助。如下图所示:

  微服务学习导航_第2张图片

  由于内容较多,查看全貌请移步百度脑图。

  为了更好地理解微服务和设计微服务架构,列出几个比较经典的设计图辅助理解:

  图一

  

   图二:(胡忠想 微博技术专家)

  微服务学习导航_第3张图片

  不知道你对以上的图有何感想,欢迎加入我们的QQ群进行深入讨论:105365283

六大组件

  如脑图所示,微服务总体的内容包含有六大组件:服务描述,注册中心,服务架构,服务监控,服务跟踪和服务治理。这六大组件互相依赖,相辅相成,纵深挖掘,又可以牵扯出DevOps和容器化技术等周边信息,这些武器库代表的是技术的未来,不管是你是在小企业还是大厂,还是大厂里的小部门,不知道你是否有这种体验?

  微服务学习导航_第4张图片

     (微服务生态)

服务描述:

  类似服务的说明文档,简单但不可或缺。比如,服务调用首先要解决的问题就是服务如何对外描述。比如,你对外提供了一个服务,那么这个服务的服务名叫什么?调用这个服务需要提供哪些信息?调用这个服务返回的结果是什么格式的?该如何解析?这些就是服务描述要解决的问题。

注册中心:

  有了服务的接口描述,下一步要解决的问题就是服务的发布和订阅,就是说你提供了一个服务(Provider),如何让外部(Consumer)想调用你的服务的人知道。这个时候就需要一个类似注册中心(Registry)的角色,服务提供者将自己提供的服务以及地址登记到注册中心,服务消费者则从注册中心查询所需要调用的服务的地址,然后发起请求。如下图所示:

  微服务学习导航_第5张图片

服务框架:

  通过注册中心,服务消费者就可以获取到服务提供者的地址,有了地址后就可以发起调用。但在发起调用之前你还需要解决以下几个问题。服务通信采用什么协议?是RESTful API还是gRPC?数据传输采用什么方式数据压缩采用什么格式?这些活通常集成到了我们的服务框架里面,市面上有很多这样的开源框架,相对都比较成熟,接下来考验你的是快速上手的能力。

服务监控:

  一旦服务消费者与服务提供者之间能够正常发起服务调用,你就需要对调用情况进行监控,以了解服务是否正常。通常来讲,服务监控主要包括三个流程,指标收集,数据处理,数据展示。监控是为了发现问题和异常,如果要进一步跟踪和定位问题,则需要进一步了解服务追踪。

服务追踪:

  除了需要对服务调用情况进行监控之外,你还需要记录服务调用经过的每一层链路,以便进行问题追踪和故障定位,最后达到接近问题的目的。服务监控和追踪可以合并起来,但是要明确各自的职责是不一样的。

服务治理:

  服务监控能够发现问题,服务追踪能够定位问题所在,而解决问题就得靠服务治理了。服务治理就是通过一系列的手段来保证在各种意外情况下,服务调用仍然能够正常进行。就目前开源的服务框架,大部分都不包括服务治理的内容,所以有可能这块是需要你和你的团队进行定制化开发,就看你做到什么程度了,就好比你有数据库但是你没有ER图描述,并不影响你用微服务,当然如果有就是锦上添花的东西了。

  以上六大组件可以粗暴的定义为微服务的二级目录,他们共同组成了微服务架构,在生产环境下缺一不可。

  相信通过以上的整理,你对微服务的学习方法和学习路径已经有了一个大概的思路了,接下来就是迈开脚步,持续输出的能力了,你准备好了吗?

参考文献:

  • 微服务架构理解
  • 微服务架构设计
  • Martinfowler博客Microservices 
  • Microservice Architecture 
  • Wikipedia

希望以上分享对你有帮助,我是IT人张飞洪,入行10年有余,人不堪其忧,吾不改其乐,谢谢您关注。

你可能感兴趣的:(微服务学习导航)