程序员练级攻略(2018):微服务
程序员练级攻略(2018):微服务
朗读人:柴巍 07′18′′ | 3.35M 2018-07-19 陈皓
微服务是分布式系统中最近比较流行的架构模型,也是 SOA 架构的一个进化。微服务架构并非银弹,因此,也不要寄但愿于微服务构架可以解决全部的问题。微服务架构主要解决的是如何快速地开发和部署咱们的服务,这对于一个可以适应快速开发和成长的公司是很是必要的。同时我也以为,微服务中有不少很不错的想法和理念,因此学习微服务是每个技术人员迈向卓越的架构师的必经之路。
首先,你须要看一下,Martin Fowler 的这篇关于微服务架构的文档 - Microservice Architecture (中译版),这篇文章说明了微服务的架构与传统架构的不一样之处在于,微服务的每一个服务与其数据库都是独立的,能够无依赖地进行部署。你也能够看看 Martin Fowler 老人家现身说法的视频。
另外,你还能够简单地浏览一下,各家对微服务的理解。
微服务架构
固然,有一本书你也能够读一下—— 微服务设计。这本书全面介绍了微服务的建模、集成、测试、部署和监控,经过一个虚构的公司讲解了如何创建微服务架构。主要内容包括认识微服务在保证系统设计与组织目标统一上的重要性,学会把服务集成到已有系统中,采用递增手段拆分单块大型应用,经过持续集成部署微服务,等等。
与此类似的,也有其它的一系列文章,值得一读。
下面是 Nginx 上的一组微服务架构的系列文章。
还有 Dzone 的这个 Spring boot 的教程。
固然,若是你要玩得时髦一些的话,我推荐你使用下面的这套架构。
-
-
后端:Go 语言 + 微服务工具集 Go kit ,由于是微服务了,因此,每一个服务的代码就简单了。既然简单了,也就能够用任何语言了,因此,我推荐 Go 语言。
-
通信:gRPC,这是 Google 远程调用的一个框架,它比 Restful 的调用要快 20 倍到 50 倍的样子。
-
API:Swagger ,Swagger 是一种 Restful API 的简单但强大的表示方式,标准的,语言无关,这种表示方式不但人可读,并且机器可读。能够做为 Restful API 的交互式文档,也能够做为 Restful API 形式化的接口描述,生成客户端和服务端的代码。今天,全部的 API 应该都经过 Swagger 来完成。
-
网关:Envoy 其包含了服务发现、负载均衡和熔断等这些特性,也是一个颇有潜力的网关。固然,Kubernetes 也是很好的,并且它也是高扩展的,因此,彻底能够把 Envoy 经过 Ingress 集成进 Kubernetes。这里有一个开源项目就是干这个事的 - contour。
-
-
-
调用跟踪:Jaeger 或是 Zipkin,固然,后者比较传统一些,前者比较时髦,最重要的是,其能够和 Prometheus 和 Envory 集成。
-
微服务和 SOA
另外,还有几篇其它对比 SOA 和微服务的文章你也能够看看。
除此以外,咱们还须要知道微服务和其它架构的一些不一样和比较,这样咱们就能够了解微服务架构的优缺点。下面几篇文章将帮助得到这些知识。
设计模式和最佳实践
而后,你能够看一下微服务的一些设计模式。
相关资源
小结
好了,总结一下今天的内容。我认为,微服务中有不少很不错的想法和理念,因此学习微服务是每个技术人员迈向卓越的架构师的必经之路。在这篇文章中,我先给出了 AWS、Microsoft 和 Pivotal 对微服务的理解;而后给出了好几个系列的教程,帮你全面学习和理解微服务架构;而后经过一系列文章帮你来区分何为微服务,何为 SOA;最后给出了微服务架构的设计模式和最佳实践,以及相关资源。相信经过这一系列内容的学习,你必定会对微服务有全面、透彻的理解。
下篇文章,咱们将讲述的容器化和自动化运维方面的内容。敬请期待。
下面是《程序员练级攻略(2018)》系列文章的目录。
-
-
入门篇
-
修养篇
-
专业基础篇
-
软件设计篇
-
高手成长篇