微服务优秀博文资料
程序员练级攻略(2018):微服务
朗读人:柴巍 07′18′′ | 3.35M 2018-07-19 陈皓
微服务是分布式系统中最近比较流行的架构模型,也是 SOA 架构的一个进化。微服务架构并不是银弹,所以,也不要寄希望于微服务构架能够解决所有的问题。微服务架构主要解决的是如何快速地开发和部署我们的服务,这对于一个能够适应快速开发和成长的公司是非常必要的。同时我也觉得,微服务中有很多很不错的想法和理念,所以学习微服务是每一个技术人员迈向卓越的架构师的必经之路。
首先,你需要看一下,Martin Fowler 的这篇关于微服务架构的文档 - Microservice Architecture (中译版),这篇文章说明了微服务的架构与传统架构的不同之处在于,微服务的每个服务与其数据库都是独立的,可以无依赖地进行部署。你也可以看看 Martin Fowler 老人家现身说法的视频。
微服务架构
接下来,你可以看一下 IBM 红皮书:Microservices Best Practices for Java,这本书非常好,不但有通过把 Spring Boot 和 Dropwizard 来架建 Java 的微服务,而且还谈到了一些标准的架构模型,如服务注册、服务发现、API 网关、服务通讯、数据处理、应用安全、测试、部署、运维等,是相当不错的一本书。
当然,有一本书你也可以读一下—— 微服务设计。这本书全面介绍了微服务的建模、集成、测试、部署和监控,通过一个虚构的公司讲解了如何建立微服务架构。主要内容包括认识微服务在保证系统设计与组织目标统一上的重要性,学会把服务集成到已有系统中,采用递增手段拆分单块大型应用,通过持续集成部署微服务,等等。
与此相似的,也有其它的一系列文章,值得一读。
下面是 Nginx 上的一组微服务架构的系列文章。
下面这是 Auto0 Blog 上一系列的微服务的介绍,有代码演示。
还有 Dzone 的这个 Spring boot 的教程。
当然,如果你要玩得时髦一些的话,我推荐你使用下面的这套架构。
-
通讯:gRPC,这是 Google 远程调用的一个框架,它比 Restful 的调用要快 20 倍到 50 倍的样子。
-
API:Swagger ,Swagger 是一种 Restful API 的简单但强大的表示方式,标准的,语言无关,这种表示方式不但人可读,而且机器可读。可以作为 Restful API 的交互式文档,也可以作为 Restful API 形式化的接口描述,生成客户端和服务端的代码。今天,所有的 API 应该都通过 Swagger 来完成。
-
指标监控:Prometheus 。
-
自动化运维:Docker + Kubernetes 。
微服务和 SOA
在对微服务有了一定的认识以后,一定有很多同学分不清楚微服务和 SOA 架构,对此,你可以看一下这本电子书 - 《Microservices vs. Service-Oriented Architecture》。通过这本书,你可以学到,服务化架构的一些事实,还有基础的 SOA 和微服务的架构知识,以及两种架构的不同。这本书的作者马克·理查兹(Mark Richards)同学拥有十年以上的 SOA 和微服务架构的设计和实现的经验。
另外,还有几篇其它对比 SOA 和微服务的文章你也可以看看。
除此之外,我们还需要知道微服务和其它架构的一些不同和比较,这样我们就可以了解微服务架构的优缺点。下面几篇文章将帮助获得这些知识。
设计模式和最佳实践
然后,你可以看一下微服务的一些设计模式。
-
Microservice Patterns,微服务架构的设计模式和最佳实践。
-
Microservice Antipatterns and Pitfalls,微服务架构的一些已知的反模式和陷阱。
-
Microservice Architecture: All The Best Practices You Need To Know,这是一篇长文,里面讲述了什么是微服务、微服务架构的优缺点、微服务最大的挑战和解决方案是什么、如何避免出错,以及构建微服务架构的最佳实践等多方面的内容。推荐阅读。
-
Best Practices for Building a Microservice Architecture ,这篇文章分享了构建微服务架构的最佳实践。
-
Simplicity by Distributing Complexity,这是一篇讲如何使用事件驱动构建微服务架构的文章,其中有很多不错的设计上的基本原则。
相关资源
-
Microservices Resource Guide ,这个网页上是 Martin Fowler 为我们挑选的和微服务相关的文章、视频、书或是 podcast。
-
Awesome Microservices ,一个各种微服务资源和相关项目的集中地。
小结
好了,总结一下今天的内容。我认为,微服务中有很多很不错的想法和理念,所以学习微服务是每一个技术人员迈向卓越的架构师的必经之路。在这篇文章中,我先给出了 AWS、Microsoft 和 Pivotal 对微服务的理解;然后给出了好几个系列的教程,帮你全面学习和理解微服务架构;然后通过一系列文章帮你来区分何为微服务,何为 SOA;最后给出了微服务架构的设计模式和最佳实践,以及相关资源。相信通过这一系列内容的学习,你一定会对微服务有全面、透彻的理解。
下篇文章,我们将讲述的容器化和自动化运维方面的内容。敬请期待。
下面是《程序员练级攻略(2018)》系列文章的目录。
-
入门篇
-
修养篇
-
专业基础篇
-
软件设计篇
-
高手成长篇